변수의 초기화: 변수에 처음으로 값을 저장하는 것
(*지역변수는 사용되기 전에 반드시 초기화하기)
// 묵시적 형변환. 데이터가 내부적으로 형변환 과정이 발생
String a = 7 + " ";
String b = " " + "7";
String c = 7 + "";
String e = 7 + 7 + ""; // 14 + "" -> "14" + ""
String g = "" + 7 + 7; // "" + "7" = "7" + "7"
System.out.println(e); // 14
System.out.println(g); // 77
최댓값 +1 -> 최소값
최소값 -1 -> 최대값
예)
byte b = 127;
b = b + 1; // 에러발생
// 128 -> byte(-128~127) overflow 발생
// 1은 int형
// 데이터타입끼리 연산을 하게되면 형변환이 발생
예)
byte b = 127;
b++;
//증감연산자를 사용하면 내부적으로 형변환이 문제가 되지않도록 설계되어있다
System.out.println(b);
결과: -128
예1)
double d = 85.4;
// int score = d; 에러발생
// int 크기 4byte, double 8byte
// 데이터타입의 크기
// 정수형 < 실수형
// 큰 데이터타입의 기억장소에 작은 데이터타입의 값을 저장은 가능
// 작은 데이터타입의 기억장소에 큰 데이터타입의 값을 저장은 불가능
// 단, 명시적 형변환을 통하여 가능
// 그러나 , 값의 유실도 발생할 수 있다
int score = (int) d; // (데이터타입) 캐스팅작업(형변환)
System.out.println(score);
결과 : 85
예2)
int i = 10;
// byte : -128~127
byte b = (byte) i;
// 작은 데이터타입의 기억장소에 큰 데이터타입의 값을 저장은 불가능
// 좌측 변수 = 우측의 값 대입할 때 서로간의 타입을 일치시킨다
System.out.println("int -> byte : " + i + "," + b);
//여러개의 변수값을 출력하는 문자열안에 삽입해서 사용하고자 할 때 편리함
System.out.printf("[int -> byte] i=%d -> b=%d\n", i, b);
// %d 숫자를 나타냄
결과 : int -> byte : 10,10
[int -> byte] i=10 -> b=10
예3)
// f = d(double) .. 타입일치 하기
float f = 9.1234567f;
double d = 9.1234567;
double d2 = f;
// 내부적으로 묵시적 형변환 double d2 = (double) f;
// 정수는 %d로 표현, 실수는 %f로 표현
System.out.printf("f = %20.18f \n" , f);
// %f는 기본 여섯자리
// 소수자리 포함 20자리. 소수자리만 18자리
System.out.printf("f = %20.18f \n" , d);
System.out.printf("f = %20.18f \n" , d2);
결과 :
f = 9.123456954956055000
f = 9.123456700000000000
f = 9.123456954956055000
연산자: 연산을 수행하는 기호(+, -, *, /)
피연산자: 연산자의 연산 수행 대상
"모든 연산자는 연산결과를 반환한다."
🎄 증감 연산자
증가 연산자(++) : 피연산자의 값을 1 증가시킴
감소 연산자(--) : 피연산자의 값을 1 감소시킴
전위형 : 값이 참조되기 전에 증가시킴( j = ++ i ;)
후위형: 값이 참조된 후에 증가시킴 ( j = i ++ ; )
"증감 연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이가 없다."