1. Data type : Data(값)의 구분(종류)
-> 기준 : 형태, 크기
-① Primitive Data type(기본 data type)-(ex : 숫자, 문자..(1개의 값 표현밖에 못함))
-② Reference Data type(참조 data type)-(ex : class(class가 type, 객체(instance) 가 값이된다.)(여러개의 값이 합쳐져 하나의 값을 표현))
->Reference Data type의 기본 값은 NULL이다.
(null은 아무 객체도 참조하고 있지 않다는 뜻이다.)
* null값가진변수.xxx->실행시 오류 발생.(Null pointer exception발생)
2.타입
①실수 - double(8byte) - 실수형의 기본 type->소수점이하 16자리까지 표현(더 정밀하게 표현한다)
float(4byte) - 값F, 값f(ex : 50.2F, 50.2f)->소수점이하 7자리까지 표현
②정수형 - byte(1byte)
short(2byte)
int(4byte) - 기본형(20억을 기준으로 사용을 결정한다.)
long(8byte)
* 10.5->1.05x10->0.105e2
* 1600000000000000 ->16*10^14->16E14
③ 논리형(Logical) - 참/거짓->type은 boolean
값 : true,false
④ 문자 - char(2byte) : 1글자를 값으로 가진다.
값은 ''으로 감싼다.
2byte-unicode 한글자
'\uAOSB(<-유니코드 한글자) -> unicode 1글자(16진수로 나타남)
*escape문자
'\t' - tab
'\n' - enter
'\\' - \문자(역슬러시)
'\'' - '
"\"" - "
3.String - 문자열(0~n글자)을 위한 Data type
->class -> Reference Data type
- new 생성자() 하지 않고 객체 생성
* 사용:
1.변수 = "문자열";
String s = "ABCDE";
2.변수=new String("문자열");
String s = new String ("ABCDE");
* 두개의 문자열이 같은지 비교
boolean b = String객체.equals(비교String객체);
b = "abs".equals("def");
b = s1.equals(s2)l - s1,s2가 String type
* type이 다른 경우 작은 type 을 큰 type으로 바꾼후 계산한다.
* byte-short-int-long-float-double
-char
*논리 연산자
- && ->and true & true -> true 나머진 다 false (&하나짜리는 뒤에도 검사, &&뒤에짜리는 하나가 참이면 바로 검사를 멈추고 나온다)
- || ->or false | false ->false 나머진 다 true (|하나짜리는 뒤에도 검사, ||뒤에짜리는 하나가 참이면 바로 검사를 멈추고 나온다)
- ^->xor true ^ false -> true
false ^ true -> true
t^t->false
f^f->false
- !->not
!true->false
!false->true
* 조건(삼항)연산자
조건 ? 피연산자1 : 피연산자2;
->boolean- true면 피연산자 1을 쓰고 false면 피연산자 2를쓴다.
int a = (x<5)? 20 : 50;
x가 5보다 작으면 20을 a에 넣고 아니면 50을 넣어라.
* cast 연산자(형변환) : 값의 type을 변환 시켜주는 연산자
- primitive Data type 간의 형변환 가능
- Reference Data type 간의 형변환 가능
사용법 : (type)값; (int)10.5;
*자동형변환 : upcasting( 작은 type->큰 type)
*명시적코딩 : down casting(큰type->작은type)
(변수보다 값이 더 큰경우 명시적 형변환이 필요하다)
* primitive Data type에서 형변환을 하면 Data가 깨질수도 있다.
ex :
class TypeCasting{
public static void main(String[] args)
{
int var1=10+20;
System.out.println("10+20 = "+var1);//String +int->String+String
double var2 = 20+30+25.7;
System.out.println("20+30+25.7 = "+var2);//String +int->String+String
long var3 = 365L*365*365*365*365*365*5;
// long var3 = (long)365*365*365*365*365*365*5;
System.out.println("365*365*365*365*365*365*365*365*365*365*5 = "+var3);
//캐스팅 연산 - 대입연산시에만 주의
boolean b = 'a'<5;
System.out.println(b); //false나옴
long I = 10;//(O)
// int k = 20L;//컴파일 에러
int l = (int)30L;
System.out.println(k);//30나옴
int h = (int)300000000000000000L; //
System.out.println(h);//이러면 300000000000000000L이 값이 나오지 않음 따라서. 작은 값안으로 강제형변환 하는 것은 좋지 않음.
}
}
'프로그래밍 > JAVA프로그래밍' 카테고리의 다른 글
switch문 (0) | 2012.07.28 |
---|---|
if문 (0) | 2012.07.28 |
제한자, 캡슐화, 변수, this (0) | 2012.07.28 |
객체지향(oop)이라면 알아야할 개념 (0) | 2012.07.28 |
this (0) | 2012.07.28 |