▶자바의 특징
API : 자바언어를 위해 미리 만들어 놓은 것 (언어,메시지 형식) Java에서 지원함
이식성이 좋다 : JRE가 설치되면 JVM 자동으로 설치되는데 윈도우, 맥 혼용이 됨
컴파일러 없이 자동으로 기계어로 번역
▶자바 프로그래밍에서 사용하는 괄호
- ( ) : 메소드 (Method : Memver Function) , 생성자
- { } : 블럭, brace (영역)
- [ ] : 배열
- <> : 제너릭
▶자바에서의 주석
- //
- /* */
(*이클립스 주석 단축키로 응용 : 블록설저ctrl + shift + / )
▶실행문
메소드 호출,변수선언, 값을 지정 = 세미콜론을 붙임 ;
▶오류 E.x
대소문자 / 세미콜론
▶ 리터럴 (Literal)
상수 대신 리터럴이라는 용어를 사용한다.
우리가 기존에 알고 있던 '상수'의 다른 이름일 뿐이다
- 변수 variable : 하나의 값을 저장하기 위한 공간
- 상수 constant : 값을 한번만 저장할 수 있는 공간
- 리터럴 literal : 그 자체로 값을 의미하는 것
10진수와 2,8,16진수로 표현된 리터럴을 변수에 저장할 수 있다.
16진수라는 것을 표시하기 위해 리터럴 앞에 접두사 '0x' 또는 '0X'를
8진수의 경우에는 '0'을 붙인다.
int var2 = 010; // 8진수 10, 10진수를 8
int var3 = 0x10; // 16진수 10, 10진수로 16
변수 variable
변수는 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다.
데이터타입의 자료형은 변수에 적재할 데이터가 메모리에 어떻게 저장되고 프로그램에서 어떻게 처리되어야 하는지를 지정한 키워드
자바에서 이미 사용중인 예약어는 변수명으로 사용할 수 없고, 변수는 초기화 되어야 읽기 가능 (값을 지정)
자바의 데이터타입은 기본형과 참조형으로 구분되는데,
- 기본형 primitive type 은, 계산을 위해 실제 값을 저장하는 8가지의 타입이며
- 참조형 reference type 은, 객체의 주소를 저장한다.
기본형 타입 Primitive Type
- 정수 ⇒ int
- 실수 ⇒ double
기본값으로 저장됨, 즉, 다른 변수를 사용할때엔 끝에 (f나 l 을 붙일 것)
비객체 타입으로 null값을 가질 수 없다. 위의 기본값이 지정되어있기에,
float와 double 타입
var4와 var5에 값을 저장하고 출력해보니
double타입인 var4가 float 타입인 var5보다 두 배 이상 정밀하게 값이 저장되었다.
이는 double 타입의 가수 bit 수가 float 타입의 가수 bit 수 보다 약 두 백 정도 크기 떄문이다.
참조 타입 Reference Type
- 배열 타입
- 열거 타입
- 클래스
- 인터페이스
기본형과 달리 실제 값이 저장되지 않고 자료가 저장된 공간의 주소를 저장한다
저장한 주소를 참조해서 값을 가져온다메모리의 힙(heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택에 저장한다또 기본형과 다르게 참조형 변수는 null 로 초기화 시킬 수 있다
자동 타입 변환 Promotion
프로그램 실행 도중에 자동적으로 타입 벼노한이 일어나는 것이다.
자동 타입 변환은 작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.
크기 구분은 사용하는 ' 메모리의 크기 ' 이다.
크기별비교를 쉽게보면 이와 같다.
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
후반의 float는 4byte 크기인데 int(4byte)와 long(8byte)보다 더 큰 타입으로 표시했다.
그 이유는 표현할 수 있는 값의 범위가 float가 더 크기 때문이다.
자동 타입 변환이 발생되면 변환 이전의 값과 변환 이후의 값은 동일하다.
작은 그릇의 물을 큰 그릇으로 옮기더라도 물의 양은 변하지 않는다는것과 유사하다!
정수타입이 실수타입으로 변환하는 것은 무조건 자동 타입 변환이 된다.
강제 타입 변환 (직접) Casting은, 큰 타입을 작은 타입으로 쪼개는 것이며 손실가능성이 큼
정수 타입을 실수 타입으로 변환해보자.
1. double을 써야 값이 나옴 : 0
2. float을 쓴다면 결과가 틀리게 나옴 : -4 (연산에 정확하지 않은 결과값 도출)
3. float 형의 가수부분은 23비트 이므로, 123456780은 23비트로 표현할 수 없어서 근사치 값으로 변환된다.
4. 즉, 정밀도의 손실이 발생한 것이다.
5. 이때 float 값을 다시 int 타입으로 변환하면 원래의 int 값을 얻지 못함. (num1,num2 같지않음)
또 다른 연산식에서의 자동 타입 변환
- 정수타입의 연산의 결과는 int⇒ 컴파일 에러(Type mismatch))는 byte라서 에러가 남 (10 + 20 으로 했으면 정상)
- int를 byte로 바꿀거라면 (byte)로 묶기
- 피연산자를 4byte 단위로 저장하기 떄문에, 4byte보다 작은 타입 (byte, char, short)는 int로 변환되어 연산이 수행됨
- 출력값 유니코드 =66 / 출력문자 = ‘B’ : A의 아스키코드는 65임
- int라서 값은 2.5지만 2로 출력됨 (소수점 출력X)
- 소수점 도출하고 싶으면 int로 나눌때 .0 불일 것
'Java' 카테고리의 다른 글
자바 인터페이스 / (1) | 2023.10.03 |
---|---|
자바 상속 / 타입변환 / 다형성 (1) | 2023.10.03 |
자바 객체 지향 클래스 / 메서드 / 생성자 /클래스 상속 (0) | 2023.10.03 |
자바 참조타입 / 배열 / (1) | 2023.10.03 |
자바 If , swith 조건문/ for , while , do-while , break , continue반복문 / Java If (0) | 2023.10.03 |