* 스프링, 이클립스, IntelliJ 모두 자바 언어로 만들어진 애플리케이션
* 객체지향 언어 (그 밖에 c++, python, javascript...)
* 자바 가상 머신 (Java Virtual Machine)
- 자바를 실행하기 위한 가상 컴퓨터 (=소프트웨어라고 할 수 있음)
- 프로그램이 실행되기 위해서는 JVM을 꼭 거친다
- JVM은 OS마다 다르게 생겨서 자바 코드를 다양한 OS에서 수정 없이 사용 가능
- 한 번 작성하면, 어디서든 실행 (=어떤 OS에서든 코드의 수정 없이 사용 가능하다)
1. 메모리 관리
2. GC
3. JAVA와 OS사이에서 OS가 구애받지 않고 재사용을 가능하게 하는 스택기반 가상머신
* .java 파일을 컴파일하면 .class가 되잖아. cmd창에서 클래스 파일을 실제로 까보면 기계어가 잔뜩 나옴.
왜? 컴파일하면 컴퓨터만 알아들을 수 있는 기계어로 변환되기 때문이지
* javac.exe
- 자바 컴파일러. 사람이 작성한 문장을 기계어로 번역
- .java 파일 --> .class 파일로 변경
* java.exe
- 자바 인터프리터
- .class 파일을 실행
*String의 초기값 null / boolean의 초기값 false / int의 초기값 0
* 지역 변수는 읽기 전에 꼭 초기화해야함
지역변수가 뭐라고? 메서드 안에 선언된 변수 = 로컬변수
* 상수와 리터럴의 차이
상수는 한 번만 값을 저장 가능한 변수명 그 자체
리터럴은 모든 변수와 상수에 들어가는 값 그 자체
등호를 기준으로 --> 변수나 상수 = 리터럴 --> int score = 100; --> final int MAX = 200;
* L이랑 f 접미사 꼭 붙이기
* 기본형 변수
1byte = 8bit | 2byte = 16bit | 4byte = 32bit | 8byte = 64bit | |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
char 0 ~ 65535
byte -128 ~ -127
short -32768 ~ 32768
int -20억 ~ 20억 (대략 10자리 숫자, 10자리 숫자가 넘어가면 long으로 받자. 가령, 주민번호, 핸드폰번호 같은 것)
float와 int / double과 long의 크기는 같은데 저장하는 범위가 float,double이 큰 이유는 저장 방식의 차이에 있다
어떤 저장 방식? 부호, 지수, 가수로 나누어 저장하는 방식
오차가 발생하기도 해서 정밀도가 있다.
float는 7자리, double은 15자리!
* printf() 지시자
%d (정수) / %f (실수) / %s (문자열)
* && (AND, 둘 다 만족) / || (OR, 둘 중 하나 만족) -> 둘 중 &&의 우선순위가 더 높음
* 증감연산자가 독립적으로 사용되는 경우 전위형, 후위형 차이가 없다
i++ 이나 ++i 나 이렇게 단독으로 쓰이면 똑같음.
대신에 어떤 수식들 안에 들어가면 값이 달라진다.
* 유니코드 간단한건 외우자
문자 0 -> 코드 48 ~~~
문자 A -> 코드 65 ~~~
문자 a -> 코드 97 ~~~
* 형변환
int * int 해서 int 범위를 벗어나면, long으로 바껴야되는데 지들이 자동으로 바뀌지는 않음
계산 하기 전에!!! 반드시 계산 하기 전에 형변환이 이루어져야해서 long (int * int) 이건 의미 없음
(long) int * int 이렇게 한쪽에 미리 형변환을 하고 계산을 해야됨
* 정수는 0으로 나눌 수 없다 ( / , % 둘 다) -> 에러 발생
* x는 90~100 사이의 정수이다.
90 < x < 100 (X)
90 <= x && x <= 100 OR x >= 90 && x <= 100
* str.equalsIgnoreCase("yes")
대소문자 구분안할 경우, equals 대신에 equalsIgnoreCase 사용
* if문 안의 내용이 두 줄 이상일때는 괄호 필수!
괄호 안하면 if문과 붙어있는 첫 번째 문장만 인식
* Math.round()
괄호 안의 수를 소수점 첫째 자리에서 반올림하여 정수로 만들기
* Math.random()
난수를 얻기 위한 함수 / 0.0 ~ 1.0 사이의 값을 반환
'JAVA' 카테고리의 다른 글
switch문의 제약 조건 (0) | 2020.09.29 |
---|---|
Properties 클래스 (0) | 2020.09.26 |
Scanner 클래스 (0) | 2020.09.15 |
equals()와 hashCode() (0) | 2020.09.12 |
6장 (0) | 2020.08.21 |