JAVA Variable declaration rule, 논리형 문자형 정수형 실수형 자료, UNICODE, ASCII CODE, 캐스팅 형변환 (프로모션(promotion), 디모션(demotion, depromotion))
변수 선언 규칙
int a; [자료형] 변수_명; (변수 선언)
a = 10; 변수_명 = 값; (변수에 값 대입, 초기화)
int a = 10; [자료형] 변수_명 = 값; (선언과 대입을 동시에 값 대입, 초기화)
변수 표기법
1) 카멜(Camel) 표기법
각 문자를 붙여서 표기하되, 맨 처음 문자는 소문자, 두번째 단어는 첫 문자를 대문자로 한다.
띄어쓰기 대신 대문자로 단어를 구분하는 표기 방식.
- backgroundColor, typeName, whatIsYourName, ...
2) 스네이크(Snake) 표기법
여러 단어로 이루어진 경우, 단어 사이에 _ 를 붙여 구별하는 표기법
- background_color, type_name, what_is_your_name, ...
3) 파스칼(Pascal) 표기법
첫 단어를 대문자로 시작하는 표기법 (클래스나 인터페이스 등에 사용하는 형태)
- BackgroundColor, TypeName, WhatIsYourName, ...
4) 헝가리안 표기법
변수 선언 시, 접두어를 붙여 변수의 의미를 명확히 파악하게 하는 표기법
boolean bTest = true;
int nTest = 0;
short sTest = 0;
float fTest = 0;
String sTest = "안녕";
논리형 : true, false
boolean b = true;
System.out.println("b의 값 : " + b);
// boolean b = 1; // ERROR !!!!
문자형 : ' ' 안에 하나의 문자만 기술
char ch1 = 'A'; // "A"는 오류, String 은 "" 큰따음표 사용 char는 '' 작은 따음표 사용
System.out.println("ch1 = " + ch1);
char ch2 = '\u0041'; // UNICODE 로 A를 의미.
System.out.println("ch2 = " + ch2);
// UNICODE, 이것은 텍스트 문자 (숫자, 문자, 문장 부호)와 이진 코드의 대응표입니다.
char ch3 = 65 + 1; // 66의 의미이지만 ch3은 문자이다. ASCII CODE로 66은 'B' 이다.
System.out.println("ch3 = " + ch3); // B가 출력
결과
ch1 = A
ch2 = A
ch3 = B
정수형
byte b = 128; // ERROR !!! byte자료형의 크기는 1byte == 2^8/2
byte b = 127;
short s = 32767; // 2byte
int n = 550; // 4byte
System.out.println("b = " + b); // 결과 127
System.out.println("s = " + s); // 결과 32767
System.out.println("n = " + n); // 결과 550
실수형
float f = 3.14;
// java에서 실수는 기본적으로 double 형으로 인식하기에 float 형을 사용한다는 것을 명시해야한다. ( 3.14f )
float f = (float)3.14;
double d = 3.14; // float 처럼 명시를 하지 않아도 사용가능.
자료
float f1, f2;
f1 = 3.14f;
f2 = 150; // 실수에도 정수 대입이 가능. 실수에 정수를 대입하면 자동 실수화 됨.
or float = (float)150; // 같은 4Byte의 타입
System.out.println("f1 = " + f1); // 결과 3.14
System.out.println("f2 = " + f2); // 결과 150.0
캐스팅 형변환
1) 프로모션 (promotion)
- 큰 자료형에 작은 자료형을 대입하는 것 (형변환이 자동으로 이루어짐)
double d = 100.5;
int n = 200;
d = n;
System.out.println("d = " + d); // 200.0 double 타입이기에 소수점이 나온다.
- 4byte인 int 를 8byte인 double에 대입하기에 문제가 없다.
char c = 'A';
long l = 100;
l = c; // ASCII는 'A'라는 문자를 65라는 숫자로 인식한다.
System.out.println("l = " + l); // 결과 65
2) 디모션 (de(pro)motion)
- 작은 자료 형에 큰 자료 형을 대입하는 것으로 자동으로 이루어지지 않기에, 수동으로 형변환을 지정해주어야 함
char c = 'B'; // ASCII로 66
int n = c + 1; // ASCII로 66변환 후, +1 결과 67 만약 char n 이였다면, 'C' 반환
c = n; // n 은 정수(4Byte), c는 문자(2Byte)이므로 큰 수가 작은 수에 들어감. ERROR !!
// c = (char)n; 으로 형변환을 해주어야 사용가능하다.
System.out.println("c = " + c);
// float f = 5.5; // ERROR !! 그냥 소수점(실수)을 넣으면 자바는 Double 형으로 인식한다.
float f = 5.5f; // of float f = (float)5.5; // 이렇게 사용해야 한다.
double d = 5.5; // No ERROR !!
int n = 0;
n = (int)f;
// n = f; // ERROR !! int 와 float는 같은 4 Byte 이지만, 형이 다르다.
// 수행될 수도 있지만, 오류가 뜰 가능성이 크기에 형 변환을 해줘야한다.
System.out.println("n = " + n);
public class java01 {
public static void main(String[] args) {
byte b1 = 100;
byte b2 = 20;
byte b3 = b1 + b2; // ERROR !!
// byte b3은 정수 100과 20을 연산하는데, 127까지만 연산이 가능해서
// 이 127을 넘어갈 가능성이 있어서 오류를 보인다.
// byte b3 = (byte)(b1 + b2); 하면 가능, byte만 이상하게 그래
int b4 = b1 + b2;
}
}
JAVA 제어문 (if, switch, for, while, do~while) (0) | 2022.07.22 |
---|---|
JAVA 연산자 (증감, 산술, 시프트, 비교, 비트, 논리, 조건, 대입) (0) | 2022.07.20 |
JAVA 기본형 (자료형, 기본자료형) ValueType, Wrapper Class, MAX_VALUE, MIN_VALUE, SIZE, Shift 연산자, 포매팅(printf) (0) | 2022.07.19 |
JAVA 형변환, Scanner.class, 상수Final (0) | 2022.07.18 |
JAVA 이란 ? (0) | 2022.07.18 |