코딩 이야기

JAVA 1일 본문

JAVA

JAVA 1일

별메아리 2023. 1. 27. 11:04
728x90

JAVA

  • 객체 지향 프로그래밍
  • 메모리 자동 정리
  • 무료 라이브러리 풍부

 

자바소스파일>>바이트 코드 파일>>기계어>>실행

             javac 명령어 실행         java 명령어 실행

프로그램 소스 분석

package ch01;

public class Hello {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello, Java");
	}

}

 

 

중괄호 {}블록 앞부분 public class Hello를 클래스 선언부

public class는 공개 클래스

Hello는 클래스이름

중괄호 {}블록 앞부분인 public static void main(String[] args) 를 메소드 선언부

main은 메소드 이름, 바이트 코드 파일을 실행하면 제일 먼저 main() 메소드를 찾아 블록 내부를 실행

main()메소드를 실행 진입점이라 부른다.

 

자바의 변수선언

int age // 정수(int)를 저장할 수 있는 age 변수선언[소수점이 없는 숫자]

int : 타입

age 변수이름

double value; //실수(double)를 저장할 수 있는 value 변수 선언[소수점이 있는 숫자]

 

값 저장

자바에서는 변수에 값이 저장되지 않으면 변수가 생성되지 않습니다.

변수에 최초로 값이 저장될 때 변수가 생성됩니다. 이것을 변수 초기화라고 합니다.

이때 사용된 값을 초기값이라고 합니다.

 

변수 사용 범위

자바의 모든 변수는 중괄호{} 블록 내에서 선언되고 사용됩니다. 메소드 블록 내에서 선언된 변수를 로컬 변수 라고 부른다.

로컬 변수는 메소드 블록내에서만 사용하고 메소드 실행이 끝나면 메모리에서 사라진다.

 

메소드 블록 내에는 다른 중괄호 {} 블록들이 작성될 수 있습니다. 중괄호{] 안에서 선언된 변수는 중괄호{} 안에서만 사용이가능합니다.

  • 변수가 어떤 범위에서 사용될 것인지를 생각하고, 선언 위치를 결정해야 합니다.
  • 메소드 블록 전체에서 사용하고 싶다면 메소드 블록 첫머리에 선언합니다.
  • 특정 블록 내부에서만 사용된다면 해당 블록 내에 선언합니다.

변수 사용 예제

package ch02;

public class VariableUseExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int hour = 3;
		int minute = 5;
		System.out.print(hour + "시간" + minute + "분");
		
		int totalMinute = (hour*60) + minute;
		System.out.println("총" + totalMinute + "분");
	}

}

변수 값 교환

package ch02;

public class VariableExchangeExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x = 3;
		int y = 5 ;
		System.out.println("x:" + x + "y:" + y);
		
		int temp =x;
		x = y;
		y = temp;
		System.out.print("x:" + x + "y:" + y);
	}

}

변수의 사용 범위

package ch02;

public class VariableScopeExaple {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int v1 =15;
		if(v1>10) {
			int v2;
			v2 = v1 - 10;
		}
		int v3 = v1 + v2 + 5; // v2 변수를 사용할 수 없기 때문에 컴파일 에러발생
	}

}

정수 타입

정수형 타입할당되는 메모리의 크기데이터의 표현 범위

byte 1바이트 -128 ~ 127
short 2바이트 -215 ~ (215 - 1)
-32,768 ~ 32,767
int 4바이트 -231 ~ (231 - 1)
-2,147,483,648 ~ 2,147,483,647
long 8바이트 -263 ~ (263 - 1)
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

또한, 언더플로우(underflow)란 해당 타입이 표현할 수 있는 최소 범위보다 작은 수를 저장할 때 발생하는 현상을 가리킵니다.

 

다음 예제는 오버플로우나 언더플로우가 발생하면 결과에 어떠한 영향을 주는지를 보여주는 예제입니다.

예제

public class Datatype04 {

    public static void main(String[] args) {

        byte num1 = 127;

        byte num2 = -128;

 

        num1++; // 127 + 1

        num2--; // -128 - 1

 

        System.out.println(num1); // -128

        System.out.println(num2); // 127

    }

}

실행 결과

-128

127

실수형 타입

자바에서 실수란 소수부나 지수부가 있는 수를 가리키며, 정수보다 훨씬 더 넓은 표현 범위를 가집니다.

자바의 기본 타입 중 실수를 나타내는 타입은 다음과 같습니다.

 

1. float

2. double

 

과거에는 실수를 표현할 때 float형을 많이 사용했지만, 하드웨어의 발달로 인한 메모리 공간의 증가로 현재에는 double형을 가장 많이 사용합니다.

따라서 실수형 타입 중 기본이 되는 타입은 double형입니다.

 

실수형 데이터의 타입을 결정할 때에는 표현 범위 이외에도 반드시 유효 자릿수를 고려해야 합니다.

실수형 타입지수의 길이가수의 길이유효 자릿수

float 8 비트 23 비트 소수 부분 6자리까지 오차없이 표현할 수 있음.
double 11 비트 52 비트 소수 부분 15자리까지 오차없이 표현할 수 있음.

실수형 타입할당되는 메모리의 크기데이터의 표현 범위리터럴 타입 접미사

float 4바이트 (3.4 X 10-38) ~ (3.4 X 1038) F 또는 f
double 8바이트 (1.7 X 10-308) ~ (1.7 X 10308) D 또는 d (생략 가능함)

 

컴퓨터에서 실수를 표현하는 방식은 오차가 발생할 수 밖에 없는 태생적 한계를 지닙니다.

이러한 실수형 데이터의 오차는 자바뿐만 아니라 모든 프로그래밍 언어에서 발생하는 공통된 문제입니다.

 

자바 실수의 표현 수업 확인 =>


문자형 타입

자바에서 문자형 데이터란 작은 정수나 문자 하나를 표현할 수 있는 타입을 의미합니다.

자바의 기본 타입 중 문자를 나타내는 타입은 다음과 같습니다.

 

1. char

 

컴퓨터는 2진수밖에 인식하지 못하므로 문자도 숫자로 표현해야 인식할 수 있습니다.

따라서 어떤 문자를 어떤 숫자에 대응시킬 것인가에 대한 약속이 필요해집니다.

 

C언어와 C++에서는 아스키코드(ASCII)를 사용하여 문자를 표현합니다.

아스키코드(ASCII)는 영문 대소문자를 사용하는 7비트의 문자 인코딩 방식입니다.

아스키코드는 문자 하나를 7비트로 표현하므로, 총 128개의 문자를 표현할 수 있습니다.

 

하지만 자바에서는 유니코드(unicode)를 사용하여 문자를 표현합니다.

아스키코드는 영문자와 숫자밖에 표현 못 하지만, 유니코드는 각 나라의 모든 언어를 표현할 수 있습니다.

유니코드는 문자 하나를 16비트로 표현하므로, 총 65,536개의 문자를 표현할 수 있습니다.

 

문자형 타입할당되는 메모리의 크기데이터의 표현 범위

char 2 바이트 0 ~ 216

논리형 타입

논리형은 참(true)이나 거짓(false) 중 한 가지 값만을 가질 수 있는 불리언 타입을 의미합니다.

자바의 기본 타입 중 논리형 타입은 다음과 같습니다.

 

1. boolean

 

boolean형의 기본값은 false이며, 기본 타입 중 가장 작은 크기인 1바이트의 크기를 가집니다.

 

논리형 타입할당되는 메모리의 크기데이터의 표현 범위

boolean 1바이트 true 또는 false
728x90

'JAVA' 카테고리의 다른 글

자바 배열 (4일)  (0) 2023.02.01
JAVA 참조 타입과 참조 변수  (0) 2023.02.01
JAVA 4일  (0) 2023.02.01
JAVA 3일차수업  (0) 2023.01.31
자바 2일차  (0) 2023.01.30
Comments