2024. 7. 23. 17:35ㆍ■ JAVA LECTURES/VARIABLE
변수의 타입 목차
1. 기본형
1) boolean
2) char
3) byte, short, int, long
4) float, double
2. 참조형
1) String
2) Object, Array, List
3. 래퍼클래스
boxing & unboxing
저장공간의 종류 (변수 타입)
변수의 타입을 알기 전에 짚고 넘어가야 하는 것:
저장 공간은 변수와 상수로 나뉘지만 대부분 변수 용도로 쓰이기 때문에 편의상 저장 공간을 변수라고 지칭할것임
변수 = 저장공간(그릇)에 담을 수 있는 데이터(음식)
1. 기본형
1. 논리형 변수 = boolean type
- True/False 값만 저장
- 왼쪽은 데이터타입: boolean / 이름: flag 의 변수를 선언한다고 말할 수 있고 우측에는 boolean의 값: true 을 할당
2. 문자형 변수 = char
- 'A' 나 '1' 같은 문자 하나만 저장
- 따옴표 하나로 문자 한.개.만 저장 (문자열과 헷갈리지 말기)
3. 정수형 변수 = byte, short, int, long ( 왼쪽부터 오른쪽으로 갈수록 큰 순서)
- byte : -128 ~ 127 범위의 숫자만 저장 가능
- short (2byte)는 -32,768~32,767 범위의 숫자만 저장 가능
- int (4byte)는 -21억~21억 범위의 숫자만 저장 가능
- long (8byte)은 9백경 정도의 매우 큰 수를 저장 가능
byte byteNumber = 127; // byte 는 -128 ~ 127 범위의 숫자만 저장 가능합니다.
short shortNumber = 32767; // short 는 -32,768~32,767 범위의 숫자만 저장 가능합니다.
int intNumber = 2147483647; // int 는 -21억~21억 범위의 숫자만 저장 가능합니다.
long longNumber = 2147483647L; // long 은 숫자뒤에 알파벳 L 을 붙여서 표기하며 매우 큰수를 저장 가능합니다.
4. 실수형 변수 = float, double
- float (4byte) : 3.4 * -10^38 ~ 3.4 * 10^38 (long 보다 큼) 범위의 숫자 저장이 가능
- double (8byte) : 1.7 * -10^308 ~ 1.7 * 10^308 (long 보다 큼) 범위의 숫자 저장이 가능
float floatNumber = 0.123f; // float 는 4byte 로 3.4 * 10^38 범위를 표현하는 실수값
double doubleNumber = 0.123123123; // double 은 8byte 로 1.7 * 10^308 범위를 표현하는 실수값
강의 1-5 16분부터 다시 보기
2. 참조형
한번에 저장하기 어렵고 어딘가에 별도로 저장하고 이 주소값을 참조하는 식으로 저장
어느 공간에 있는 주소값을 바라보고 있는 변수라고도 말할 수 있음 (조금 복잡함, 길이를 예측하기 힘듬)
1. 문자열 변수 = String
2. 그 외
1) Object
2) Array
3) List
3. 래퍼 클래스 변수
래퍼 클래스(Wrapper Class)라는 말 그대로 “기본형 변수를 클래스로 한번 랩핑(감싸는) 변수”라고 생각하면 됨
- 기본형 변수 타입명에서 첫 글자를 대문자로 바꾸어서 래퍼 클래스를 정의함
- 박싱 VS 언박싱
- 기본 타입에서 래퍼 클래스 변수로 변수를 감싸는 것을 “박싱”이라고 부르고
- 래퍼 클래스 변수를 기본 타입 변수로 가져오는 것을 “언박싱”이라고 부름
// 박싱
int number = 21; // Integer 래퍼 클래스 num 에 21 의 값을 저장
Integer num = new Integet(number); //요즘은 바뀌어서 Integer num = number; 이렇게 씀
// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 inValue() 같은 언박싱 메서드들을 제공
연습해보기
1. 기본형
2. 참조형
3. 래퍼클래스
1. 기본형
1) 논리형: boolean 이름 = true 또는 false;
public class Main {
public static void main(String[] args) {
boolean flag = true; //변수선언 한번에 쓰는 방법: 타입 이름 = 값;
System.out.println(flag);
}
}
public class Main {
public static void main(String[] args) {
boolean flag;
//flag = true; //변수선언 먼저하고 밑에 값을 따로 할당하는 방법: 특별한 경우 이렇게 두줄로 쓰지 않음
System.out.println(flag);
}
}
public class Main {
public static void main(String[] args) {
final boolean flag = true; //상수선언 하는 방법
//flag = false; // 이렇게 위에처럼 상수선언하면 변수가 아니기에 값을 바꿀 수 없음
System.out.println(flag);
}
}
1. 기본형
2) 문자형: char 이름 = '값';
public class Main {
public static void main(String[] args) {
char alphabet = 'A'; //쌍따옴표 하면 문자열로 인식하니 한개만
System.out.println(alphabet);
}
}
1. 기본형
3) 정수형 byte, short, int, long
public class Main {
public static void main(String[] args) {
byte byteNumber = 127; // -128~127 (1byte만 표현할 수 있기 때문에)
short shortNumber = 32767; -327767~32767
int intNumber = 2147483647; -2147483647~2147483647
long longNumber = 2147483647L;
System.out.println(byteNumber);
System.out.println(shortNumber);
System.out.println(intNumber);
System.out.println(longNumber);
}
}
// 대문자 N을 중간에 쓰는것을 어떤 변수나 메서드 이름을 만들 때 이런식으로 표현하는 것을 camel case 라고 말함
//
1byte = 8bit
bit = 0,1 형태의 2진수 데이터로써 컴퓨터가 저장(표현)할 수 있는 최소단위
bit만 사용하면 너무 비효율적이라 byte를 만들게 됨
byte 는 -128부터 127 그리고 0포함하면 총 256개 = 2의 8제곱 만큼의 표현을 할 수 있다는 의미 //
1. 기본형
4) 실수형 float(4byte), double(8byte)
public class Main {
public static void main(String[] args) {
float floatNumber = 0.123F;
double doubleNumber = 0.123123132;
System.out.println(floatNumber);
System.out.println(doubleNumber);
}
}
// 이런식으로 변수를 뒤에서 쓸 수 (참조) 할 수 있음
2. 참조형
1) 문자열 String
public class Main {
public static void main(String[] args) {
String helloWorld = "Hello World"; //참조형 변수쓰는 방법
System.out.println(helloWorld); // 변수를 이렇게 괄호에 가져와서 쓰는 것
}
}
// 직접 문자열을 치지말고 변수에 담아서 해보기/ 원래는 아래처럼 hello world를 표현했음
// public class Main {
// public static void main(String[] args) {
// System.out.println("Hello world!");
// }
//}
2. 참조형
2) 배열
참조형 데이터는 주소값이 출력되기 때문에 아래처럼 작성하면 콘솔창의 값처럼 나옴
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3}; // a는 1과 2와 3의 배열을 갖고 있다는 뜻
System.out.println(Arrays.toString(a));
}
}
// 배열이라는 것은 어떤 일련의 데이터 타입을 열로서 선언해 놓은 방식을 말함
// 기본형은 int a = 3; 이렇게 작성
// 참조형 데이터는 주소값이 출력한다는 것을 잊지마!!!
3. 래퍼클래스
public class Main {
public static void main(String[] args) {
int number = 21; // 값 저장
Integer num = number; //박싱
System.out.println(num.intValue()); //언박싱
}
}
// ***래퍼클래스 변수로 감싸주는 방법
// 먼저 Integer 래퍼 클래스 num 에 21의 값을 저장
// Integer = 클래스명
// num = 변수
// new = 래퍼클래스
// Integer = 클래스명 적고
// 괄호안에() 기본형인 number을 넣어주어
// Integer num = new Integer(number) 이렇게 new 키워드를 이용해서 integer를 감싸는
// 방법을 썼었지만 지금은 이게 옛날방식이라고 말하여 래핑하지 않아도 할당하는 방식으로
// Integer num = number; 이렇게만 쓰면 되는 것으로 바뀌었음
참고 자료
최원장님의 자바 문법 강의
'■ JAVA LECTURES > VARIABLE' 카테고리의 다른 글
아스키(ascii)코드란? (5) | 2024.07.24 |
---|---|
변수를 만드는 방법 (1) | 2024.07.23 |