[Java] 변수의 타입
Java 변수의 타입
변수의 형태 = 데이터의 형태
A. 타입 변수명; --> 변수 선언
B. 타입 메서드명(); --> 메서드 선언 - 메서드 타입에는 변수 타입 + void
타입
기본형 타입
-
이미 정해져 있는 고정 길이 타입. 값이 저장 된다. i. 숫자 1. 정수 - 고정 소수점 형식(소수점이 없다.) : 부호 + 유효숫자 - Byte - 1 Byte(8bit) : 1과 0으로 이루어진 데이터 > 12 - Short - 2 byte(16bit) >12 - Int - 4 byte(32bit) : +-17억 내 숫자 데이터 > 가장 기본으로 사용 >12 - Long - 8 byte(64bit) : int 보다 큰 숫자 대이터 > 12L (long은 L을 붙여야 함.)
2. 실수 - 부동 소수점 형식(소수점이 있다.) : 부호 + 지수 + 유효숫자 - Float - 4 byte >> 1.2F (float은 F를 붙여야 함.)
ii. 논리형 1. Boolean : true / false - 1 byte
참조형 타입
-
개발자가 만들어서 사용하는 타입. 가변 길이 타입. 주소가 저장된다. 주소는 4 byte 정도를 저장함. i. 문자열 - String : char[]
ii. 배열 - 동일한 타입 여러 개 : [] - 길이(length)와 위치정보 - 상대적인 위치(index)를 가지고 있다. : 변수 선언은 데이터를 한개만 저장할 수 있다.-> 같은 타입 여러 개 -> 타입을 정하고 저장 공간의 개수를 정한다. -> 데이터가 나중에 들어오는 경우
Int[11] -> int testScores[] = new int[11]; testScores[0] = 101;
->데이터가 이미 정해져 있는 경우 ```java Int testScores[] = {101,110,90,89}; ```
iii. 클래스 - 다른 타입의 변수 여러 개 선언 가능
iv. 컬렉션과 Map
정수 타입
package ch02var;
public class LongExample {
public static void main(String[] args) {
// 10 -> int 리터럴로 선언 -> long 타입 변수에 저장
// : 타입이 서로 틀린 곳에 데이터는 전달하는 것을 '캐스팅'이라고 한다.
// : 작은(int) -> 큰(long) - 데이터 손실이 일어나지 않음. '자동 캐스팅'
// : 큰(long) - > 작은(int) - 데이터 손실이 일어남.
long var1 = 10;
// : 큰(long) - > 작은(int) - 데이터 손실이 일어날 수 있다. '강제 캐스팅'
// int varInt = (int) var1; // 전달 데이터 앞에 변환할 타입을 선언 (데이터 손실이 일어나도 감수하겠다.)
long var2 = 20L;
// long var3 = 1000000000000; -> int로 리터럴 선언 : 범위 초과 되어 오류
// int 초과되는 숫자는 뒤에 L을 붙여서 long 타입으로 변환시킨다.
long var4 = 1_000_000_000_000L ;
System.out.println(var1); // 10
System.out.println(var2); // 20
System.out.println(var4); // 1000000000000
}
}
실수 타입
package ch02var;
public class FloatDoubleExapmle {
public static void main(String[] args) {
float var1 = 0.1234567890123456789f;
// float var1 = 0.1234567890123456789f;
// double var2 = 0.1234567890123456789;
double var2 = 0.1234567890123456789;
// float가 혀용하는 자리수가 있다. 그것보다 넘치면 나머지는 자른다.
System.out.println(var1);
System.out.println(var2);
double var3 = 3e6;
System.out.println(var3);
double var4 = 2e-3;
System.out.println(var4);
}
}
문자 타입
- Char - 2byte : 양수(+)로 운영. (A : 65)
package ch02var;
public class CharExample {
public static void main(String[] args) {
char c1 = 'A'; // 문자 타입은 ''안에 한 글자를 반드시 입력해야 한다.
char c2 = 65; // char 문자 타입인 경우 0 이상의 숫자로 운영 된다. (2 byte 크기)
System.out.println(c1);
System.out.println(c2); // c2 타입은 문자 -> 출력은 문자
System.out.println(c2 + 1); // char + int -> int 타입으로 변환 -> 숫자 출력
System.out.println((char)(c2 + 1)); // char + int -> int 타입으로 변환 -> 숫자 출력
System.out.println((int)c2);
char c3 = '가';
char c4 = 44032;
System.out.println(c3);
System.out.println(c4);
System.out.println((char)(c4 + 1056));
}
}
논리 타입
package ch02var;
public class BooleanExample {
public static void main(String[] args) {
// 처리를 세울 때 사용되는 변수 선언. 초기값을 true로 넣었다.
boolean stop = true;
System.out.println(stop);
if (stop) { // 만약에 'stop'(=true)이면 다음 한개 처리
System.out.println("중지합니다.");
} else {
System.out.println("시작합니다.");
}
// 처리문 한 개인 경우
if (stop) // 만약에 'stop'(=true)이면 다음 한개 처리
System.out.println("중지합니다.");
else
System.out.println("시작합니다."); // if 문 끝
int x = 10;
boolean result1 = (x == 20); // 변수 x의 값은 20과 같은가?
boolean result2 = (x != 20); // 변수 x의 값은 20과 다른가?
System.out.println(result1);
// 값을 딱 한번만 사용하는 경우는 변수에 넣지 않는다.
System.out.println(x == 20);
System.out.println(result2);
}
}