반응형

1. 연산식에서의 자동 타입 변환

서로 다른 타입의 피연산자가 있을 경우 두 연산자 중 크기가 큰 타입으로 자동변환된 후 연산을 수행한다.

double result = intValue + doubleValue;
//int타입 변수가 double값으로 변환된 후 연산

 

2. 정수 연산일 경우 int 타입을 기본으로 한다.

byte, char, short는 int 타입으로 변환된 후 연사이 수행되며, 연산의 결과도 int 타입이 된다.

 

3. char 타입의 연산 결과는 int 타입으로 산출

char ai = 'A';
int result = ai + 1;
char na = (char) result; // B 임

 

4. 부호 연산자(+, - )의 산출 타입은 int 

short s = 100;
int result = -s;

 

5. 비트 반전 연산자 산출 타입은 int

비트 반전 연산자는 정수타입 (byte, short, int, long)의 피연산자에만 사용됨

byte v1 = 10;
int v2 = ~v1;

 

6. 비트 반전 연산자의 산출값이 1을 더하면 부호가 반대인 정수를 얻을 수 있다.

byte v1 = 10;
int v2 = ~v1 + 1 //-10임

 

7. 산술 연산자 규칙

  • - 피연산자들이 모두 정수타입이고, int 타입(4byte)보다 크기가 작은 타입일 경우 모두 int 타입으로 변환 후 연산을 수행하며, 산출 타입은 int가 됨
  • - 피연산자들이 모두 정수타입이고, long 타입이 있을 경우 모두 long 타입으로 변환 후, 연산을 수행하며, 산출 타입은 long이 됨.
  • - 피연산자 중 실수타입(float, double)이 있을 경우, 크기가 큰 실수 타입으로 변환 후 연산을 수행하며, 연산의 산출 타입은 실수 타입이 됨.
  • ex) int + double -> double + double = double
  • - 즉 연산의 결과를 실수로 얻고 싶다면 피연산자 중 최소한 하나는 실수 타입이어야 한다.

 

int num1 = 10;
int num2 = 4;
int result1 = num1 / num2;		//result1 = 2
double result2 = num1 / num2;		//result2 = 2.0
double result3 = (double) num1 / num2 	//result3 = 2.5
반응형

'코딩 관련 > Java' 카테고리의 다른 글

[JAVA] excel 읽기  (1) 2021.08.23
[JAVA] txt파일 읽기 / 쓰기  (0) 2021.07.13
[JAVA] 변수 헷갈리는 내용 정리  (0) 2021.04.22
[JAVA] linux Shell 명령어 실행  (0) 2021.03.25
[JAVA] 콘솔 출력. System.out  (0) 2021.03.24
반응형

1. 변수 작성 규칙

첫 번째 글자는 문자이거나 '$', '_'이어야 하고 숫자로 시작할 수 없음

첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 하는 것이 관례

 

2. 변수값 저장

리터럴 : 소스 코드 내에서 직접 입력 된 값 

상수 : 값을 한 번 저장하면 변경할 수 없는 변수

 

3. 로컬 변수

메소드 블록 내에서 선언된 변수.

메소드 실행이 끝나면 메모리에서 자동으로 없어진다.

 

4. 자바는 기본적으로 정수 연산을 int 타입으로 수행한다.

byte타입 또는 short 타입의 변수를 연산하면 int 타입으로 변환된 후 연산되고, 연산의 결과 역시 int 타입이 됨

 

5. 변수가 저장할 수 있는 값의 범위를 초과해서 값이 저장될 경우 쓰레기값이 변수에 저장됨

ex) byte 변수는 127을 넘어서면 최소값인 -128부터 다시 저장됨

 

6. long 타입의 변수를 초기화 할 때는 정수값 뒤에 'L'을 붙이면 됨

 long var1 = 1000000000000L;

 

7. 자바는 실수 리터럴의 기본 타입을 double로 간주한다.

따라서 실수 리터럴을 float 타입 변수에 저장하려면 리터럴 뒤에 'f'를 붙이면 됨

float var1 = 3.14f;
double var2 = 3.14;

 

8. float 보다 double이 약 두 배의 자릿수가 배정되어 있으므로 더 정밀한 값을 저장할 수 있다.

9. 정수 리터럴에 10의 지수를 나타내는 E 또는 e를 포함하고 있으면 실수 타입 변수에 저장해야 한다.

int var1 = 3000000;
double var2 = 3e6;
float var3 = 3e6f;
double var4 = 2e-3;

 

10. 변수 타입의 최대값 상수와 최소값 상수를 알아보는 함수

기본 타입

최대값 상수

최소값 상수

byte

Byte.MAX_VALUE

Byte.MIN_VALUE

short

Short.MAX_VALUE

Short.MIN_VALUE

int

Integer.MAX_VALUE

Integer.MIN_VALUE

long

Long.MAX_VALUE

Long.MIN_VALUE

float

Float.MAX_VALUE

Float.MIN_VALUE

double

Double.MAX_VALUE

Double.MIN_VALUE

 

11. int 값을 실수 타입으로 안전하게 변환 시키려면 double 타입을 사용할 것.

float : 부호 1비트 + 지수 8비트 + 가수 23비트

double : 부호 1비트 + 지수 11비트 + 가수 52비트

int의 크기는 32비트이므로 double의 가수 52비트 보다 작기때문에 어떠한 int 값이라도 정밀도 손실 없이 double 타입으로 변환될 수 있다. 

int num1= 123456780;
// int 값을 float타입으로 자동변환
float num2 = num1;
//123456780은 23비트로 표현할 수 없기 때문에 근사치로 변환, 정밀도 손실 발생
반응형

+ Recent posts