JAVA2009. 11. 6. 00:01

Data type --- Primitive type(기본형) 8가지, 1byte~8byte까지있음
           |- Reference type(참조형) 무한대가지
long 8byte정수형을 float 4byte 실수형에 담을 수 있다. 표현 범위가 훨씬 넓기 때문에 float표현가능 범위 내에서 dataloss가 발생하지 않기 때문. bit는 적어도 표현수가 float가훨씬크다.
boolean은 내부적으론 1byte인데 다른 pc에선 2byte로 표현하는 등 정해지지 않아서 알 수 없다.

byte 2 ^ 7
short 2 ^ 15
int 2 ^ 31 bit 인 이유 : 맨 앞은 부호라서 1승을 빼준다.
long2 ^ 63

고정소수점 : 우리가쓰는방법
부동소수점 : 소수 (예 : 12.345) 뒤에 10의 몇승 방식으로 표기하는 방법(1.2345 * 10^3). 지수 표기법.

부동소수점 : 지수 표기법. 가장 근접한 수를 가질 뿐이다. 명확한 수를 뽑을 수는 없음. 표현할 수 있는 수가 한정되어있기때문.
1.xxxx 형식으로 앞에 1자리 수만 쓰는 형식을 쓴다.10.xxx 나 0.10xxx형식으론 쓰지않는다.

실수 기본값 double : 0.0  / boolean : false / int : 0

1000000000 + 2000000000 = 숫자가 표현범위를 넘어가면 숫자는 짤려나가고 나머지 값이 표현된다. -1294967296 으로.

double num; num = 3.14 + 1; 결과 : 4.140000000000001

0.0 은 0이 아니고 0에 가장 가까운 수. 예) 10.0 / 0.0 = Infinity

실수의 연산은 정확하게 나올 수 없기 때문에 소수점 아래에 수는 버리고 원하는 범위내의 수만 취득해야된다.

1byte : 8bit, 맨앞 1bit : +-부호(MSB:Most Significant Bit),  범위 : -2^7 ~(2^7)-1 

long 의 -922경 ~ +922경을 초과하는 수를 표현할 때는 BigDecimal을 사용하면 원하는 모든수를 표현할 수 있다.

10진수와 10진수의 승수(지수)를 2진수로 바꾸기 : 136page참고

double 표기 예 : 4.9e-324; // 4.9 (e-324: 10의 -324승)
double 숫자 4.9e-324; // double타입의 가장미세한 + 값
double 숫자 -4.9e-324; // double타입의 가장미세한 - 값
값이 0이 아니고 수학에서 말하는 0.0에 한없이 가까운 수라서 숫자 / 1억 을 해도 0.0이나-0.0으로나옴

부동소수점 타입의 NaN(Not a Number) : 숫자가 아니다. 표현 방법도있음. 143page참조
NaN은 0.0 등 숫자로 정의할 수 없는 수를 말한다.

유니코드Unicode char type의 내부 표현
예)char의 기본값 : '\u0000' 0000부분을 unicode.org 한글 자리 참조해서 쓴다.
char가C에선 숫자로 써서 표현가능하지만 Java에선 실제로 숫자로 저장되도 내가 숫자로 사용할 순 없다.

리터럴(literal) : 소스 상에 나와있는 데이터. 소스코드 내에 데이터 값 그대로 쓴 상수
int num = 1; 에서 1 : int 타입 리터럴
0.5, 12.0, 12. : 기본적으로 double타입 리터럴 .(점)이 붙으면 .0이 생략된걸로 간주해서 double이 됨.
리터럴 예 : float num;에 num = 12.34; 하면 12.34가 double형이라서 dataloss가 발생.
possible loss of precision 에러가 뜸. 변수를 잃어버릴 가능성이 있습니다.
024 : 8진수 정수. 숫자앞에 0으로 시작하면 8진수로 취급됨.
0x30A1 : 0x나 0X로 시작하면 16진수로 취급됨. 10~15까지의 숫자는 abcde,ABCDE로 표현함.
024L, 0x30A1L, 120L 은 long type으로 취급함. 뒤에 L을 붙이면 long type가 됨.
12e100 : 12*10^100 , e나 E 둘다 지수 표기됨.
p5 : 16의 승수, 16의 5승을 말함. 16^5
12F : float 타입이라서 12.0f의 float타입으로 됨

12.L : 12L은 되지만 12.L은 안된다. 뒤에 숫자대신 L이 와서 오류임. .(점)뒤에 L을 붙이면 12.0L로 해주지않음

''싱글쿼테션마크 안에 있는 것이 문자 1개이다. 글자가 1개라서 ''안에 표기하는것은 아님.
 예)'\n' : 줄바꿈 이라는 한 문자. 소스코드에 직접쓸수없는 문자는 escape sequence를 앞에 둬서 쓴다.
windows : \n / Unix : \n\r 가 줄바꿈 이라는 표기.
escape sequence 목록 : 155page참고
""더블퀘테션 안에 문자는 String type으로 취급한다.
""를 null string이라고 한다. null하고 null string하고 다르다. string이고 메모리에 존재하는데 문자를 가지고 있지 않은것이다.
지갑도 없으면 null(아예없는것), 지갑은 있는데 돈이 없으면 null string.

println 안에 \" 를 써야 따옴표 표시가 가능함.

println 안에 문자 접합할때 쓰는 + 기호는 내부적으로 .concat()라는것을 호출한다. 더하기가 아니다.


'JAVA' 카테고리의 다른 글

overriding 실습 (ex:할아버지/아버지/아들)  (0) 2009.11.21
자바 중간고사 정리  (0) 2009.11.21
Java Serialization 직렬화 예제  (0) 2009.11.06
자바 기초 문법  (0) 2009.11.06
2009/01/05 RealChoky 어록  (0) 2009.11.05
Posted by Tiwaz