기본형 자료형 (primitive type)
부울형 boolean 1bit
정수형 byte 1byte
short 2byte
int 4byte
long 8byte
실수형 float 4byte
double 8byte
면접에서 질문할 수 있는 부분 : primitive type 종류 말해 보세요!!
변수명/변수값
자바 > 변수에 아무것도 대입되지 않으면 못쓴다.
초기화 선언시 지정한다.
int age = 10;
선언되어있는 변수에 대입한다.
age = 10;
아스키코드
윈도우에서는 enter가 \n\r을 한다.
\n -> 13 다음줄로 바꿈, \r -> 10 맨앞으로 커서 변경(10진수)
실수
float 7자리까지 - > double보다 4배 빠르지만 정밀도가 떨어진다.
double 15자리까지 -> 정밀도는 좋지만 느리다.
부호 | 지수부 | 가수부 |
실수는 ==으로 비교 불가 (==는 기본형만을 비교할 수 있다. 그래서 문자열도 이걸로 비교할 수 없다. 문자열은 equals()로 비교)
-> 가수부 오차 때문에
이런 식으로 실수 비교는 빼서 오차를 비교하는방식으로 비교한다.
a - 10 <= 0.00001
자동형변환/강제형변환(char)
char은 부호비트가 없어서 -1은 char 값을 넘기므로 언더 플로우가 일어나 65535값이 된다.
이제 int는 이를 양수로 인식하고 앞의 빈공간을 0으로 채워주기에 65535값을 출력한다.
0x00 | 0x00 | 0xff | 0xff |
byte b = -1;//
short sh = b;//자동형변환
char ch = (char)sh;//강제형변환
System.out.println("ch = "+(int)ch);
-1의 byte 변수의 저장
0xff |
char 변수의 저장
물리>큰 자료형으로 옮겨 담으면 앞에 빈공간은 맨앞의 부호비트로 채워진다. 읽어들이면 65535가 된다.
논리>char 은 0~65535값만을 저장하기 때문에 -1은 언더플로우로 65535로 저장
0xff | 0xff(byte의 부분) |
그래서 위와 같은 결과가 나온다.
byte b = -1;//
short sh = b;//자동형변환
sh = b;
char ch = (char)sh;//강제형변환
System.out.println("ch = "+(byte)ch);
-1의 char 변수 저장
0xff | 0xff |
byte로 저장할 때의 변환
0xff(char의 하위비트부분) |
byte 에는 부호비트가 있기때문에 부호비트가 -1이면 음수로 인식해서 2의보수임을 눈치채고 음수로 출력해줌
그래서 위와 같이 출력된다.
-System.out.println(여기에 쓰이는 애들은 출력될때 문자열화 되어 출력됨 그래서 계산할때는 괄호가 꼭필요해~~)
byte 실수하지 말아야할 점
주의!! 아래 코드는 정수형은 int형으로 변경되어 계산되기 때문에 int값 byte에 대입하기 때문에 자동형변환이 안 일어나서 byte에 대입하면 오류남
byte x = 10;
byte y = 20;
byte result = x + y;
문자열 -> char형으로 바꾸기 (문자열을 char에 그냥 대입할 수 없다.)
String.charAt(번지);
문자열 -> 기본형변수형으로 바꾸기
타입.parse타입(문자열)
기본형 -> 문자열로 바꾸기
String.valueOf(기본형);
함수에 대한 도움말 찾기
도움말페이지로 들어가면
format string syntax를 누르면 이제 상세로 format형식을 쓰는 방식이 나온다.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Formatter.html#syntax
간단한 클래스 와 프로세스
클래스
변수와 함수가 많은 사람과 같은 객체들을 관리하기 위해서 만들어낸 하나의 자용자정의 자료형이다.
프로세스가 실행되면 논리적으로 4GB를 쓸수 있다.
4GB의 구성은 함수와 변수가 있는데 변수를 선언하는 메모리 구조는 이러하다.
static은 프로세스 전체에서 사용하는 변수들을 선언하는 공간이다.
stack은 참조변수를 선언하는 공간이다 실제 값은 heap 영역에 전부 있다. 64kb로 작은 저장공간은 heap의 필요성이다. 이영역은 소스코드에서 중괄호가 끝나면 하나씩 없어지는 데 그때 변수를 없애면서 참조계도 하나씩 줄인다.
heap은 실제 값이 있는 영역이다. stack영역의 변수에 저장된 값은 주소이다. 이 주소를 따라가면 heap영역에 실제 값이 저장된 장소로 찾아가게 된다.(new라는 명령어를 통해 stack에서 부족한 저장공간을 heap에서 채운다.(빌려다쓰는 은행같은 개념))
heap |
stack(64KB) |
static(1MB) |
Scanner
nextInt() - > int값으로 받아옴
nextLine() - > enter가 입력되기 전까지 받아옴
new Scanner(System.in) - > scanner는 입력장치를 입력해야한다. System.in은 표준입출력장치(키보드, 파일)
'JAVA공부(이것이 자바다)' 카테고리의 다른 글
java참조타입 이어서 (0) | 2023.05.26 |
---|---|
java의 참조타입 (0) | 2023.05.25 |
java의 연산자와 조건문 반복문 (0) | 2023.05.24 |
java 설치와 사용 (0) | 2023.05.22 |
Getter와 Setter 메소드 (0) | 2022.10.30 |