<변수> : 값을 기록하고 사용하기 위한 메모리 공간
[표현식]
자료형 변수이름;
- 자료형 : 변수가 사용할 메모리 크기에 따라서 지정
- 변수이름 : 변수를 식별하기 위해 붙여주는 이름
<원시타입> : 가장 기본적인 데이터 타입, 값 자체를 저장하며 추가적인 속성이 없다.
정수 자료형 : byte(1) short(2) int(4) long(8)
모두 정수를 저장하는 자료형, 각 자료 마다 저장할 수 있는 수의 범위가 다르다.
정수 리터럴의 기본값 : int
byte, short은 범위 내에 있을 경우 자동 형변환된다.
package com.kh.basic;
public class Int {
public static void main(String[] args) {
int integer = 10;
byte by = 10;
short sh = 10;
long lo = 10;
System.out.println("정수 자료형");
System.out.printf("%d %d %d %d\n", integer, by, sh, lo);
}
}

- 실수 자료형
실수 자료형 float(4) double(8)
실수를 저장하는 자료형, float보다 double이 더 정밀하게 표현할 수 있다.
double이 더 정밀한 이유?
1.1을 예시로 들어보면 0과 1의 bit로 계산하는 컴퓨터는 1.1이라는 숫자를 정확하게 표현할 수 없다.
컴퓨터는 숫자를 00001000 = 8 처럼 2진수를 쓴다.
IEEE 754에서는 정규화된 수를 사용하여 1.xxxxx × 2^n 형태로 표현합니다
2진수의 소수를 표현하기 위해, 컴퓨터는 32비트 메모리를 필요로 하는데 이는 float의 크기이다.
float 변수형은 첫번째는 부호, 2번째부터 9번째까지는 지수부 영역,
나머지 23비트는 mantissa영역이라는 소숫점 영역으로 표시하게 되는데
표시한다면 1비트(부호) + 8비트(지수) + 23비트(멘티사)로 구성이 된다.
0.75를 표현하기 위해 mantissa만 따지게 되면 1100000... 의 2진수를 갖게 되고,
이는 2^-1 = 0.5, 2^-2 = 0.25 의 값을 합쳐 0.75가 나오지만, 1.1이나 0.1같은 숫자는 정확하게 계산할 수가 없다.
00011001100110011001101의 값이 1.10000002384185791015625의 값을 갖게 된다.
이는 32비트 float 표현하는 1.1은 0.00000002384185791015625의 오차를 갖는다는 의미가 된다.
이에 64bit 크기의 double에 비교하게 된다면
double 변수형은 1비트(부호) + 11비트(지수) + 52비트(멘티사)로 구성이 되어
double의 1.1은 52bit의 mantissa영역을 사용하여 1.1000000000000000888178419700125 정도의 값이 되게 된다.
즉, mantissa영역이 더 큰 double이 float보다 더 오차가 작기 때문에 정밀한 데이터 타입이라고 표현된다.
그래서 아래의 코드를 출력을 한다면 결과로 False가 나오게 된다.
public static void main(String[] args) {
double dNum01 = 0.1, dNum11 = 1.1, dNum12 = 1.2;
boolean isSame = (dNum01+dNum11)==dNum12;
System.out.println(isSame);
}
package com.kh.basic;
public class Fl {
public static void main(String[] args) {
float fl = 4.24f;
double dou = 4.24;
System.out.println("실수 자료형");
System.out.println(fl + "," + dou);
}
}

-문자 자료형
문자 자료형 char(2)
문자 하나를 담을 수 있는 자료형 'a'
Java는 2byte 유니코드를 사용한다.
유니코드표

0과 1로 모든 것을 계산하는 컴퓨터에게 유니코드에 해당하는 문자를 매칭시켜 사용하고
한글 특성상, 1바이트로 모두 표현할 수 없기 때문에 SQL은 3Byte, Java는 2Byte 크기의 문자 저장공간을 할당한다.
package com.kh.basic;
public class Char {
public static void main(String[] args) {
char c1 = '홍';
char c2 = '길';
char c3 = '동';
System.out.println(c1 + c2 + c3); // char라도 숫자로 저장되기 때문에 연산 시 int로 형변환이 일어난 결과값이 숫자가 나온다.
System.out.println(c1 + ""+ c2 + "" + c3);
System.out.println("" + c1 + c2 + c3);
System.out.println(c2);
System.out.println((int)c2);
}
}

-논리 자료형
논리 자료형 boolean(1)
true와 false (참과 거짓) 값을 저장하는 자료형이다.
package com.kh.basic;
public class Bool {
public static void main(String[] args) {
boolean b1 = 10 > 5; // true
boolean b2 = 2 > 5; // false
System.out.println(b1 +" , "+ b2);
}
}
<객체 타입> : 앞글자가 대문자로 시작한다. String, Class이름 ...
- 문자열
문자열 String
문자열 같은 경우 할당할 메모리 크기가 가변적이므로 원시 타입이 아닌 객체 타입을 사용한다.
[원래 객체를 만드는 표현식]
String 변수명 = new 클래스명(초기값);
문자열은 특별한 객체로 원시 타입과 동일하게 생성하고 사용할 수 있다.
String 변수명 = "문자열데이터";
package com.kh.basic;
public class Str {
public static void main(String[] args) {
String str1 = "가나다라마바사아자차카abcdefghijklmnopq";
System.out.println(str1);
String str2 = "참조 변수";
System.out.println(str2);
str2 = "참조 변수에 대해서 알아보자";
str2 = null; // String의 변수는 참조 변수이기 때문에 기본값이 null이고 빈 값을 표현하기 위해 null을 대입할 수 있다.
System.out.println(str2);
}
}

- Escape sequence
문자열 내에서 탭, 백슬래시. 작은따옴표 등을 사용하기 위한 방식이다.
package com.kh.basic;
public class Escape {
public static void main(String[] args) {
// 탭문자, \t 가로로 일정 간격을 띄운다.
System.out.println("이름 나이 주소");
System.out.println("이름\t나이\t주소");
// \\ : 백슬래시(\) 문자 자체를 출력하고 싶을 때 쓰는 방식
System.out.println("경로 C:\\devtool ");
// \' : 작은 따옴표, \" : 쌍 따옴표
// 문자 형에서 '을 그래로 쓰면 구문오류
System.out.println("오늘은 '금요일' 입니다.");
System.out.println('\''+'\"');
// \n : 개행문자
// 줄 바꿈을 하고 싶을 때 사용하는 방식
System.out.print("오늘은 '금요일'\n 입니다.");
}
}

<상수> : 한 번만 쓸 수 있는 메모리 공간
- 한 번 선언하면 바꿀 수 없다
[표현법]
final 자료형 변수이름;
상수의 변수이름은 모두 대문자로 짓는 것이 일반적이다.
대문자로 작성하되 스네이크 케이스를 사용한다.
package com.kh.basic;
public class SangSu {
public static void main(String[] args) {
final int AGE;
AGE = 30;
// AGE = 33; -- error > 한번 선언하면 초기화 할 수 없다.
System.out.println(AGE);
}
}

프로그래밍에서 이름 짓는 방식
- 카멜케이스 : 단어를 나열하며 이름을 짓되, 두번째 단어부터는 단어의 첫글자를 대문자로 짓는다.
ex ) userName, totalPrice, MaxAvgGrade ...
- 파스칼케이스 : 객체(클래스) 이름을 지을 때 카멜 케이스에서 첫단어의 첫글자도 대문자로 작성한다.
ex) UserName, TotalPrice
- 스네이크케이스 : 문자와 문자 사이에 언더스코어(_)를 통해서 이어주는 방식 (python에서 주로 사용)
ex ) user_name, total_price
- 대문자스네이크케이스(?) : 스네이스케이스 + 모두 대문자 (주로 상수명)
ex) MAX_COUNT
- 케밥케이스 : 단어를 소문자로 작성하되 문자와 문자 사이를 하이픈(-)으로 이어주는 방식
(html, url, 설정파일 등... , 자바에선 불가)
ex) user-name
'Java' 카테고리의 다른 글
| Java_05) Control - 조건문(제어문) (1) | 2025.08.26 |
|---|---|
| Java_04 ) Operator 연산자 (0) | 2025.08.21 |
| Java_03 ) Type Conversion - 형변환 (1) | 2025.08.20 |
| Java_02) Output, Input 입출력 (2) | 2025.08.19 |
| Java_00) JDK 설치 및 Eclipse IDE 설치 실행 , Java 시작 (4) | 2025.08.11 |