자바 기본 특징
대소문자를 구분한다.
Java KeyWord : 예약어로 식별자에 이름을 붙이지 못한다. 이클립스에서는 자주색으로 바뀜
클래스 작성시 관습적으로 지켜지는 식별자를 명명하는 방법이 정해져잇다 보통 약속이기 때문에 많이 따르는데
- class 이름은 첫글자를 대문자로 시작하고, 나머지 글자를 소문자로 명명한다.
- method 이름은 모두 소문자로 한다.
- variable 이름도 모두 소문자로 한다.
- constant 이름은 모두 대문자로 한다.
Java Data Types
기본형:기본적(일반적)인 값을 기억하는 변수의 type
숫자
- 정수형:byte(1), short(2), int(4), long(8),char(2)
- 실수형:float(4), double(8)
논리:boolean (참,거짓)
보통 프로그래밍 할때는 int, double 많이 쓴다.
char:글자한개 저장이 목표
참조형
class, interface, array, enum...
java는 선언과 동시에 각 타입에 맞는 default 값이 들어간다.
배열의 경우에는 각 배열이 0으로 채워지고 boolean은 false 값이 들어가있다.
형변환(Casting)
byte < short < int < long < float< double (*float가 long 보다 저장하는 범위가 많아서 크다.
큰 변수에 작은 변수를 넣는건 자동으로 형 변환이 된다, 또 정수형은 실수형으로 자동형변환 된다,
ex)
long var =100;
flat fvar = var;
int kvar ='A'; (O) //이럼 'A' 글자의 아스키 코드 (65) int 타입으로 출력된다.
작은 변수형에 큰 변수형을 넣는건 불가능하다, 또 실수형이 정수형으로 타입을 변경할 경우에는 형변환이 필요하다.
float favr =100;
long var=(long)favr;
작은 변수(long)에 큰 변수형(float)를 넣을 경우에 형변환을 해주어야한다.
그래서 형변환을 해주던가 아예 변수 선언을 다시해준다.
ex)
byte b =120;
b=b+1;
Type mismatch 오류가 난다.
이유는
자바에서 정수리터럴을 사용해서 연살할때 그 값은 4byte에 저장된다.
1은 4byte에 저장이 되는 정수리터럴이고 b는 1바이트만 사용하는 변수인데 이를 1바이트에 저장하니까 오류가 난다
이런 식으로 int 타입으로 크게 바꿔주거나
byte b =120;
b=(byte)(b+1);
계산 결과 값을 다시 byte 타입으로 형변환 시켜준다.
보통 이런 상황을 피하고자 int, double 타입을 많이 사용한다.
byte b1 =10;
byte b2 =20;
byte b3 =(byte)(10+20);
long i = 100L;
int j =(int)i;
float f =3.1415924168f;
double d=3.1415924168;
char c ='A';
String cc ="AB";
int k =66;
char ccc=(char)k;
boolean boo = true;
boolean bool = false;
System.out.println(b2+"."+b3);
System.out.println(i+"."+j);
System.out.println(f+"."+d);
System.out.println(c+"."+cc);
System.out.println(k+"."+ccc);
System.out.println(boo+"."+bool);
결과값:
20.30
100.100
3.1415925.3.1415924168 //float 형보다 double 형이 더 많이 나온다
A.AB
66.B // int 형 k 를 char로 형변환 시켜줘서 66의 아스키 값인 B가 나온다.
true.false