JAVA

[JAVA] 문법 (변수, 데이터 타입)

김디니 2023. 3. 6. 09:00

기본 문법

  • 클래스 이름의 첫글자는 대문자이다.
  • 메소드 이름, 변수 이름  첫글자는 소문자이다.
    • 메소드는 항상 () 괄호가 붙는다.
  • 단어와 단어가 조합될 때 낙타표기법 사용한다.
  • 상수의 변수는 모두 대문자로 작성한다.

 

static final String HELLO_WORLD = "Hello World";

 

상수를 선언할 때는 final을 사용하여 선언한다. static이 붙은 b는 상수이다. 사용자에 의해 변경이 가능하다. 

final은 변수의 값이 변하지 않고, static은 새로운 메모리에 할당하지 않고 한 메모리에 계속 재사용하겠다는 의미이다.

 

  • 예약어를 이름 작명에 사용할 수 없다.
    • ex) boolean, char, etc
  • 첫글자는 반드시 영문, _, $로 시작할 수 있고, 두번째부터 숫자가 가능하다.

 

 

변수

변수란 변하는 값을 저장할 수 있는 메모리의 공간을 의미한다.

한가지의 타입과 한가지 값만 저장이 가능하다.

 

자바에서의 배열은 여러 값을 가질 수 있는 대신 조작(수정 및 검색)이 불편하다. 

배열의 크기(메모리)가 정해져 있기 때문이다.

 

변수 선언

변수 타입을 꼭 명시해주어야 한다!

 

 

 

데이터 타입

Primitive type

정수형 byte, short, int, long
실수형 float, double
문자형 char
논리형 boolean

 

정수형

byte(1byte) -> short(2byte) -> int(4byte) -> long(8byte)

 

  • 기본형은 int이다.

 

byte a = 5;
byte b = 3;
byte c = a + b;

 

a와 b의 값이 주어질 때 변수 c에 a와 b를 더하고자 한다면 컴파일 에러가 난다.

연산 기호를 만난다면 연산을 위해 크기가 늘어난다. (최소 32비트)

연산이 필요할 때는 int형이 필요하다. 그래서 int가 기본형인 것이다.

 

  • 형변환 (Casting)

위 예시에서 컴파일 에러를 해결하기 위해서는 형변환이 필요하다.

이를 Casting이라고 부른다.

 

byte c = (byte)(a + b);

 

a와 b 앞에 다시 byte로 형 변환하여 변수 c에 할당하는 것이다.

 

이 과정에서 데이터 손실이 발생할 수 있다.

 

  • byte의 표현 가능 범위는 -128 ~ 127이다. 즉, 127까지 저장이 가능한데 127을 넘으면 오버플로우라고 한다.
    • 값이 너무 작으면 언더플로우라고 한다.
    • 에러가 발생하진 않는다. (예외를 발생시키지 않는다)

 

byte b = 129;

 

범위가 넘어가는 값은 할당할 수 없다.

 

 

실수형

float(4byte) -> double(8byte)

 

기본형은 double이므로 아무 표현 없이 실수를 사용했다면 double을 사용한 것이다.

 

차이

float와 double는 정확도에 차이가 있다. 

 

float는 소수점 이라 9번째 자리에서 반올림하여 8자리까지 표현한다.

double은 소수점 이하 18째 자리에서 반올림하여 17자리까지 표현한다.

 

즉, double은 float보다 두 배 정도 더 정밀한 값을 표현할 수 있다. 

 

 

문자형

char(2byte)

 

char는 하나의 문자만 표현하기 위해 사용된다.

문자를 표현할 때는 아스키코드 또는 유니코드가 사용된다. (컴퓨터는 0과 1로 값을 인식하기 때문)

한글을 포함한 아시아권의 문자를 표현하기 위해 아스키코드를 확장해서 유니코드를 개발한 것이다.

 

char c1 = 'A';
char c2 = '\u0041';

System.out.println(c1 + "," + c2);		// A, A

 

문자형을 표현할 때는 작은따옴표를 이용한다.

유니코드 값을 입력할 때는 '\u'를 함께 사용하여 16진수 값을 입력한다.

 

문자열을 입력할 시 반드시 큰따옴표를 사용해야 한다.

 

 

논리형

boolean(1byte)

 

ture와 false를 표현한다.

파이썬과 달리 1과 0으로 true/false를 표현할 수 없다.

 

boolean b1 = true;
boolean b2 = false;

 

boolean은 형변환이 불가능하다.

자바에서는 객체가 형변환이 불가능하기 때문이다.

하지만 상속이 성립될 때는 형변환이 가능하다.