주말을 너무 즐기고 와서 그런지 오늘따라 등원(?)길이 두려웠다. 솔직히 더 누워 있고 싶었지만, 그러면 으른이 아니니까 눈물을 머금고 역삼 멀캠에 도착했다.
근데 또 막상 오니 시원하기도 하고 오늘부터 코딩 과정이 시작되는데 거기서 오는 기대감이 점차 커져가고 있다.
집에서 남는 키보드와 작업할 때 쓰는 버티컬 마우스를 들고 왔다.
뭔가 대단히 준비한 것 같은 느낌이 들지만...그래도 코딩에 키보드와 마우스는 필수라고 생각한다!
음 사진 삐뚤어진게 불편하네
var타입
public static void main(String[] args){ int i = 10; var a = 1; var str = "Hello"; var list2 = new ArrayList<>(); var list3 = new ArrayList<String>(); }
자바 10버전부터 var 타입으로 변수를 선언할 수 있게 되었다.
즉, 선언한 값에 따라 변수의 타입이 결정되는 것.
Javascript와 비슷할 수 있지만 js와 다르게 중간에 변수의 타입을 변경할 수 없다.
var 타입의 활용도는 오버로딩 메소드를 줄일 수 있고, 타입 별 로직을 구현할 수 있다는 생각을 했다.
음... 어디까지나 내 생각이라 이 외에도 더 많이 나올 것 같지만, 지금은 쉬는 시간에 부랴부랴 적기 때문에 나중에 찾아보도록 하자.
Text Block
private static void textBlockTest() { String str = """ 내 이름은 %s. 나이는 %d살이고, 사는 곳은 %s. """.formatted("hong gil dong", 20, "율도국"); System.out.println(str); }
쌍따음표(")를 앞뒤로 3번씩 넣어 여러줄 문자열 배열을 선언할 수 있다.
기존에는 줄바꿈(\n)을 넣어서 했는데, 이제는 enter키 하나로 편하게 사용할 수 있게 되었다.
하지만, Java15부터 사용할 수 있기에 java 8이나 11을 사용하는 코테에서는 사용하기 어려울 것 같다.
형 변환(Type casting) #1
// 명시적 형 변환 int i = 300; byte b = (byte) i; // 묵시적 형 변환 byte b = 10; int i = (int) b; int i2 = b;
형 변환은 기본형끼리, 참조형끼리 가능.
또한, 작은 타입에서 큰 타입은묵시적 형 변환
이 가능하지만 작은 타입에서 큰 타입으로 형 변환을 시도할 땐명시적 형 변환
이 필수
형 변환 #2
public static viod main(String[] args){ // 1. byte b1 = 10; byte b1 = 20; byte b = b1 + b2; // -> byte b = (int) b1 + (int) b2; // // 2. int i1 = 10; int l1 = 20; int i2 = i1 + l1; // int i2 = (long) i1 + l1; }
- 산술 이항 연산자는 연산 전에 피연산자의 타입을 일치
- 피연산자의 크기가 4byte 미만이면 int 로 변경 후 연산 진행
- 두 개의 피연산자 중 큰 타입을 형 변환 후 연산 진행
for문, while문
for(int i = 0; i < n; i++){ /// method... } 🔻 for(변수 초기화; 반복 조건; 증감식){ // 실행문 }
int i = 0; while(i < n){ // method... i++; } 🔻 변수 초기화 while(반복 조건){ // 실행문 증감식 }
배열
동일한 타입의 데이터 0개 이상을 하나의연속된 메모리 공간에서 관리
int[] nums = {1,2,3,4,5};
에서 '배열'은
{1,2,3,4,5}
를 뜻한다.
그럼nums
는?
nums
는 배열{1,2,3,4,5}
의 가리키는 주소이고nums
라는 이름을 붙여준 것.
다차원 배열
public class Test { public static void main(String[] args) { int[][] arr = new int[3][3]; int[][] arr2 = new int[2][]; // arr2[0] = new int[3]; arr2[1] = arr[1]; // arr[1][0] = 10; System.out.println(Arrays.toString(arr2[1])); } }
arr
라는 2차원 배열을 선언하고arr2
라는 내부 1차원을 선언하지 않은 2차원 배열을 선언해 주었다.
이때,arr
는 default값으로 선언해 주었기에arr[0]
과arr[1]
가 가리키는 배열은 각각{0, 0, 0}
을 가리킨다.
그럼arr2
는?
arr2[0]
와arr2[1]
는 아직 가리키는 배열이 없기 때문에 둘 다null
인 상태이다.
.
이러한arr2
배열의arr2[0]
에는 새로운 배열을 선언하고,arr2[1]
에는arr[1]
를 선언해 주었다고 하자.
.
그럼arr2[0]
에는 새로운 배열{0, 0, 0}
의 주소 값을 가리킬 것이고,
arr2[1]
에는arr[1]
이 가리키는 배열의 주소를 가리킬 것이다.
.
그럼arr[1]
에 변화가 생기면arr2[1]
에도 영향을 미칠까?
YES
.
서로 가리키는 배열의 주소가 같기 때문에arr[1]
에서 값을 변경해도arr2[1]
에서 확인이 가능함.
오늘은 초복
닭 반마리 정도 기대했지만...
아쉬웠다..ㅎ
자바의 기초를 배우긴 했지만, 헷갈리거나 놓쳤던 부분까지 세밀하게 복습할 수 있어서 좋았다.