변수
변수란? 하나의 값을 저장 할 수 있는 메모리 공간
변수의 선언
변수 타입 변수이름 ; 세미콜론 잊지 말기!!
int age ; 정수
age = 25 ; 변수 age에 25를 저장
변수의 초기화
int x = 0, y = 5 ;
변수의 종류
1) 클래스변수
2) 인스턴스변수
3) 지역변수 : 지역변수는 읽기전에 꼭 초기화 해야함(자동 초기화 되지 않음, 안하면 컴파일시 에러 발생
int year = 0;
year = age + 2000 ;
값의 타입
1) 정수 - int, byte(-128~127), short, long
2) 실수 – float, double
3) 문자 – char, string
4) 논리 – boolean(true/false)
변수, 상수, 리터럴
1) 상수 선언
final int MAX = 100 ; MAX는 상수
MAX = 200 ; 에러 발생, 상수는 한번 만 값을 저장 가능한 변수임
2) 리터럴(literal) : 그 자체로 값을 의미 하는 것 = 기존의 상수
3) 리터럴의 접두사와 접미사(접미사는 대소문자 구분x)
종류 | 리터럴 | 접미사 |
논리형 | TRUE/FALSE | 없음 |
정수형 | 124, 0b0101, 077, oxFF, 100L(LONG 타입) | L |
실수형 | 3.14, 3.0e8, 1.4f | f(float), d(double) d는 생략 |
문자형 | ‘A’, ‘1’,’ \n’(개행문자) | 없음 |
문자열 | “ABC” ,”123”, ’A”, ”true” | 없음 |
문자형은 작은따옴표로
문자열은 큰따옴표로
“A”는 큰따옴표로 표시했으므로 문자열임, 문자형 X
int i = 100; 10진수
int oct = 0100 ; 8진수
int hex = 0x100; 16진수 int는 20억까지
long I = 10_000_000_000L ; 100억 L을 안 붙이면 에러남 _ 는 알아보기 쉽게 하기 위해
long I = 100 ;
float f = 3.14f ; f는 생략 불가능
double d = 3.14d; d는 생략 가능
1e3 : e는 10의 3제곱 = 1000.0d 과 동일
변수와 리터럴의 타입 불일치
1) 변수 > 리터럴일 경우 OK
int i = ‘A’ ; // int > char
long l = 123; // double > int
double d = 3.14f // double > float
2) 변수 < 리터럴인 경우 에러
int i = 30_0000_0000 ; // 30억 int의 범위는 +-20억 벗어남
long l = 3.14f // long < float
float f = 3.14 ; // float < double
byte, short 변수에 int 리터럴 저장 가능
단, 변수의 타입의 범위 이내여야 함
byte b = 100 ; // byte의범의(-128 ~ 127)에 속함
byte b = 128 ; // 에러, byte의 범위를 벗어남
문자와 문자열
char ch = ‘A’ ; 싱글따옴표
string s = “ABC” ; 큰따옴표
STRING : 자바에서 제공하는 CLASS
string s2 = new String(“AB”); 이렇게 써야 하나 자주 쓰므로 생략
char ch = ‘’ ; 에러
string s = “” ; empty string
string s1 = “A” + “B” ; // “AB” 와 동일
“” + 7 : 문자열과 숫자의 결합시 숫자가 문자열로 변환 => “7” 이 됨
문자열 결합의 왼쪽에서 오른쪽으로 진행
“” + 7 + 7 => “7” + 7 => “7” + “7” => “77”
7 + 7 + “” => 14 + “” => “14”
문자열 + any type => 문자열
any type + 문자열 => 문자열
기본형과 참조형
1) 기본형 : boolean, char, byte, short, int, long, float, double
실제 값을 저장
2) 참조형 : 기본형을 제외한 나머지(string, system 등)
메모리 주소를 저장(4 or 8 byte)
4byte : 약 40억 6byte : 40억 * 40억 = 1600경 byte 저장
Date today ; // 참조형 변수
today = new Date() ; // today에 객체의 주소를 저장
참조 변수는 객체의 주소를 저장
기본형의 종류와 크기
1) 논리형 – boolean(1 byte) : true/false 조건식과 논리적 계산에 사용
2) 문자형 – char(s byte) : 변수당 하나의 문자만을 저장
3) 정수형 – int(4 byte 20억), byte, short, long(8 byte 800경)(아주큰 정수)
byte(1 byte) : 이진 데이터 다루는 데 사용
short(2 byte) : c언어와의 호환을 위해 추가(잘 안쓰임)
4) 실수형 – folat(4 byte), double(8 byte)
형식화된 출력 – printf()
println()의 단점 – 출력 형식 지정 불가, 10진수로만 출력된다
system.out.println(10.9/3) ; // 3.3333333335
printf()로 출력 형식 지정 가능
system.out.printf(“%.2f”, 10.0/3) ; // 소숫점 둘째자리 = 3.33
system.out.printf(“%d”, 0x1A) ; // d : 10진수 = 26
system.out.printf(“%X”, 0x1A) ; // X : 16진수 = 1A
%b : boolean 형식으로 출력
%d : 10진 정수의 형식으로 출력
%o : 8진 정수의 형식으로 출력
%x, %X : 16진수 정수의 형식으로 출력
%f : 부동 소숫점의 형식으로 출력
%e, %E : 지수 표현식의 형식으로 출력
%c : 문자로 출력
%s : 문자열로 출력
java api -> formater로 다른 지시자 찾아보기
system.out.printf(“age : %d year : %d\n”, 14, 2021); 자동 줄바꿈x 으로 개행문자 넣어준다
toBinaryString(15) : 정수를 이진 문자열로 변경, 자주 쓰지 않음 -> 1111 2진수
float f = 123.4567890f ;
system.out.printf(“%f”, f); // 123.456787 소수점 아래 6자리(87은 의미없는 숫자, 정밀도:7 )
system.out.printf(“%e, f); // 1.234568e+0.2 지수형식 +02는 10의 제곱
system.out.printf(“%g, 123.456789) ; // 123.45 간략한 형식(7자리)
system.out.printf(“%g, 0.0000001) ; // 1.00000e-8 간략한 형식