초기 환경 설정
프로젝트 - 패키지 - 클래스 순으로 생성
package java230107;
public class study {
public static void main(String[] args) {
// print
System.out.println("Hello Java");
}
}
변수 선언
package java230107;
public class study {
public static void main(String[] args) {
int level;
level = 10;
System.out.println(level);
}
}
변수 선언 시에는 자료형을 앞에 붙여준다.
선언 후 값을 대입해주는 과정이 없으면 에러가 발생한다.
자료형이 다른 정수 연산
package java230107;
public class study {
public static void main(String[] args) {
short sVal = 10;
byte bVal = 20;
System.out.println(sVal + bVal);
}
}
자바의 자료형은 다음과 같이 존재한다.
정수형 | 문자형 | 실수형 | 논리형 | |
1 byte | byte | boolean | ||
2 byte | short | char | ||
4 byte | int | float | ||
8 byte | long | double |
표현할 수 있는 값의 범위에 차이가 나기 때문에 자료형이 다른 정수를 연산할 때는 자바에서 기본 단위로 사용하는 int를 기준으로 계산된다.
문자형
문자 자료형은 인코딩(encoding) 과정을 거쳐 숫자의 형태로 컴퓨터에서 표현된다. 1 byte 크기의 ASCII 코드에 의해 영문, 숫자, 특수문자 등을 표현할 수 있으며 다른 언어를 포함하여 표현할 시 2 byte 이상 크기의 유니코드를 사용한다.
package java230107;
public class study {
public static void main(String[] args) {
char ch1 = 'A';
System.out.println(ch1);
System.out.println((int)ch1);
}
}
위 예제에서 ch1에 저장된 A를 int 자료형으로 출력할 시 A에 해당하는 ASCII 코드 값인 65가 출력된다.
반대로 문자형 변수에 숫자를 저장한다면 해당 숫자에 대응하는 문자가 출력된다.
package java230107;
public class study {
public static void main(String[] args) {
char ch1 = '한';
char ch2 = '\uD55C';
System.out.println(ch1);
System.out.println(ch2);
}
}
한글의 경우 유니코드를 사용하기 때문에 글자 '한'에 대응하는 유니코드 값이 16진수로 표현된다. (16진수 숫자 1개가 4비트 사용, 총 4개를 사용하기 때문에 2 byte 사용)
실수형
package java230107;
public class study {
public static void main(String[] args) {
double dnum = 3.14;
float fnum = 3.14F;
System.out.println(dnum);
System.out.println(fnum);
}
}
실수형은 float형과 double형으로 나뉜다.
부호 | 지수부 | 가수부 | 총합 | |
float | 1 bit | 8 bit | 23 bit | 32 bit (4 byte) |
double | 1 bit | 11 bit | 52 bit | 64 bit (8 byte) |
Java에서 실수는 기본적으로 더 정밀하게 표현할 수 있는 double형을 사용한다. 만약 float형의 범위 내에 있는 실수를 float형으로 저장하고자 할 때는 숫자 뒤에 F/f 식별자를 붙여 식별해주어야 한다.
논리형
package java230107;
public class study {
public static void main(String[] args) {
boolean isMarried = true;
System.out.println(isMarried);
}
}
논리형은 true/false만 대입 및 출력된다.
지역 변수 자료형 추출(var)
package java230107;
public class study {
public static void main(String[] args) {
var num = 10; //int num = 10;
var dNum = 10.0; //double dNum = 10.0;
var str = "hello"; //String str = "hello";
}
}
Java는 지역 변수 자료형 추출을 통해 자료형 없이 컴파일러가 변수를 추측하여 선언할 수 있다.
상수형
package java230107;
public class study {
public static void main(String[] args) {
final int MAX_NUM = 100; //선언+초기화
final int MIN_NUM
MIN_NUM = 0; // 선언 후 초기화
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
}
}
상수는 코드 내에서 직접 값을 하나하나 지정하는 것에 비해 선언된 값 하나만 변경해주면 되므로, 코드 내 전체 값을 변경할 시 번거로움을 줄여준다.
형 변환
자료형이 다른 변수들에 대해 연산을 실시할 경우 자료형이 통일되어야 하는데, 이는 형 변환을 통해 이루어진다.
package java230107;
public class study {
public static void main(String[] args) {
byte bNum = 10;
int iNum = bNum;
System.out.println(bNum);
System.out.println(iNum);
int iNum2 = 20;
float fNum = iNum2;
System.out.println(iNum);
System.out.println(fNum);
double dNum;
dNum = fNum + iNum;
System.out.println(dNum);
}
}
묵시적 형 변환은 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우 자동으로 이루어지기 때문에 자동 형 변환이라고도 한다. 형 변환이 이루어지는 관계는 다음과 같다.
byte → short / char → int → long → float → double
8 byte 크기인 long형이 4 byte 크기인 float형으로 변환되는 이유는 실수의 표현 범위가 더 넓고 정밀하기 때문이다.
package java230107;
public class study {
public static void main(String[] args) {
int iNum = 10;
byte bNum = (byte)iNum;
System.out.println(iNum);
System.out.println(bNum);
}
}
명시적 형 변환시에는 괄호 안에 변환할 자료형의 이름을 명시해주어야 하며 강제 형 변환이라고도 한다. 만약 바뀌기 전의 자료형의 값이 바뀐 후 자료형이 표현할 수 있는 범위를 넘어서게 되면 자료 손실이 발생하게 된다.
참고: 박은종. 『Do it! 자바 프로그래밍 입문』. 이지스퍼블리싱(주): 서울, 2022
'컴퓨터 > TIL' 카테고리의 다른 글
[Git]git 기초 (0) | 2023.01.12 |
---|
댓글