기본형 (Primitive type) : 실제 값을 저장
| 종류,크기 | 8bit (1byte) | 16bit (2byte) | 32bit (3byte) | 64bit (4byte) |
|---|---|---|---|---|
| 논리형 | boolean | |||
| 문자형 | char | |||
| 정수형 | byte | short | int | long |
| 실수형 | float | double |

int score = 100; // 초기화
int score; // 선언
score = 100; // 할당
* 명명규칙
대소문자가 구분되며 길이제한이 없음
예약어를 사용할 수 없음 (ex true)
숫자로 시작할 수 없음
특수문자는 '__' 와 '%' 만 가능
클래스의 첫 글자는 항상 대문자로 지정
여러 단어일 경우 camel case로 지정 (ex userId)
상수의 이름은 대문자로 지정
여러 단어는'___' 구분 (ex MAX_NUMBER)
java는 정수 연산에서 기본적으로 int 를 사용함
java는 실수 연산에서 기본적으로 double 을 사용함
long, float 일 경우 숫자뒤에 지정된 문자를 적어야함
float vf1 = 3.14F
변수의 초기화 : 변수에 처음으로 값을 저장하는 것
* 지역변수는 사용되기 전에 반드시 초기화 해야함

* 형변환 (casting)
int a = 3
a += 5 // print: 8
a = a + 5 // 같은 의미임
이 외에 비트 연산자와 쉬프트 연산자도 있음
괄호의 우선순위가 제일 높다. - 산술 > 비교 > 논리 > 대입
단항 > 이항 > 삼항
연산자의 연산 진행방향은 왼쪽에서 오른쪽(→)이다.
단, 단항, 대입 연산자만 오른쪽에서 왼쪽(←)이다.
&&연산이 ||연산보다 우선 순위가 높음
if (조건식) {
조건식이 true일 떄 실행
}
switch (조건식) {
case 10:
break
case 22:
break
deafault:
}
for (초기화; 조건식; 증감식) {
실행 블럭 : 조건식이 true일 떄 실행
}
for (타입 변수 : 집합객체) {
수행코드;
}
while (조건식) {
실행 블럭 : true일 떄 실행
}
do {
실행 블럭 : true일 떄 실행
} while (조건식);
int[] arr1; // 배열 선언
arr1 = new int[5]; // 배열 생성
// 각 배열의 값은 int타입의 기본값인 0이 설정됨
int[] arr2 = {1, 2, 3, 4, 5}; // 배열 초기화
int[] arr2 = new int[] {1, 2, 3, 4, 5};
초기값(크기)이 정해지지 않았을 때, 자바에서 배열은 선언만 하고 사용X, 크기를 지정해야함
String[] name;
name = new String[] {"lee", "bob","john"};
arr2를 직접 출력하면 주소가 출력되므로
arr2[idx] 로 접근하고 전체를 출력하려면 for문을 사용함
// 데이터 접근
System.out.println(arr2[4]);
// 배열 전체 출력
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]);
}
얕은 복사는 주소 자체를 복사하기 때문에 원본 배열이 훼손됨
int [] nums = {1, 2, 3};
int [] copyNums = nums;
copyNums[1] = 20;
System.out.println(copyNums[1]); // print 20
System.out.println(nums[1]); // print 20
깊은 복사는 원본 배열 훼손 X, copyOf 메소드 사용
int [] nums = {1, 2, 3};
int[] deepNums = Arrays.copyOf(nums, nums.length);
deepNums[1] = 5;
for (int i : deepNums) {
System.out.println(i); // print 1, 5, 3
}
for (int j : nums) {
System.out.println(j); // print 1, 20, 3
}
이클립스와 JDK가 호환이 안되는 경우가 있다.
JDK11버전과 이클립스가 호환되지 않아 21년 3월 버전으로 바꾸니 해결됨
int[] arr2 = {1, 2, 3, 4, 5}; // 배열 초기화
int[] arr2 = new int[] {1, 2, 3, 4, 5};
new 키워드의 자세한 이해가 필요한 것 같다.
위 두 개의 코드가 같은 의미로 사용할 수 있는지 모르겠다.
앞서 배운 JavaScript와 비슷한 점이 종종 있다.
JavaScript에서의 배열은 더 다루기 편한 느낌였고
Java의 배열은 규칙을 더 엄격하게 따지는 것 같았다.
배열에 대한 부분이 부족한 것 같으므로 더 복습해야겠다.