자바 문법 강의는 아주 기초적인 자바 문법에 대한 내용으로 구성되어있다. 2주차는 각종 연산자와 조건문/반복문, 배열, 컬렉션 등에 대한 내용이었고, 모두 아는 내용이어서 하나하나 정리하기보단 빠르게 훑고 넘어가는 방식으로 공부했다. (어차피 인프런에서 자바 강의를 듣고 있기도 하다..) 그래서 강의에서 좀 더 잘 기억했으면 하는 내용만 간단히 정리했다.
배열을 초기화하는 방법에는 여러가지가 있다. 그중에서도 Arrays.fill()
이라는 util 안에 있는 메서드를 통해 배열의 주소를 모두 같은값으로 초기화할 수 있다. 이 메서드는 잘 쓴 적이 없어 정리해봤다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
//1. 배열에 특정값 대입하며 선언
int[] intArray = {1, 2, 3, 4, 5};
String[] stringArray = {"a", "b", "c", "d"};
//2-1. for문을 통해 값을 대입
for (int i = 0; i < intArray.length; i++) {
intArray[i] = i;
}
//2-2. 향상된 for문을 통한 배열 출력
for (int i : intArray) {
System.out.print(i); // 01234
}
System.out.println(); // 줄바꿈
//3. 배열의 주소를 모두 같은값으로 초기화
Arrays.fill(intArray, 1);//배열의 모든 값을 1로 초기화
for (int i : intArray) {
System.out.print(i); // 11111
}
}
}
배열을 복사하려면 깊은 복사를 통해 복사를 해주어야 한다. 다음 예제를 보자. a와 b는 똑같은 값을 가지게 되는 것이 아니라 똑같은 주소를 가리키게 된다. 따라서 b 배열의 값을 바꾸면 a 배열의 값도 바뀐다.
// 얕은 복사
int[] a = {1, 2, 3, 4};
int[] b = a;
하지만 다음 예제처럼 새로운 배열 인스턴스를 생성하고, 반복문을 통해 a에 있는 값들을 직접 하나하나 넣어준다면 어떻게 될까? 이렇게 하면 b 배열의 값을 바꾸더라도 a 배열의 값은 바뀌지 않는다.
// 깊은 복사
int[] a = {1, 2, 3, 4};
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
반복문을 통한 깊은 복사보다 더 쉬운 방법은 다음과 같이 clone()
메서드를 이용하는 것이다. 해당 메서드를 이용하면 다른 주소값을 갖는 배열을 반환받을 수 있다.
// clone() 메서드를 이용한 깊은 복사
int[] a = {1, 2, 3, 4};
int[] b = a.clone();
하지만, clone()
메서드는 2차원이상 배열에서는 얕은 복사로 동작한다. 따라서 최종적으로 Arrays.copyOf()
메서드를 사용하면 된다.
// Arrays.copyOf() 메서드
int[] a = {1, 2, 3, 4};
int[] b = Arrays.copyOf(a, a.length);
자바에서 컬렉션의 종류에는 List
, Set
, Queue
, Map
이 있다.
List(ArrayList)
: 순서가 있는 데이터의 집합, 중복 허용O, 동적 배열Set
: 순서가 없는 데이터의 집합, 중복 허용XMap
: 순서가 없는 키-값 쌍으로 이루어진 데이터의 집합, 키 값은 중복 허용XQueue
: FIFO(First In, First Out)구조의 자료구조Stack
: FILO(First In, Last Out) 구조의 자료구조✔️ 기본 개념
클래스란 틀, 설명서라고 할 수 있다.
생성자란 객체를 만들어 어떻게 만들지 강제하는 것이다.
클래스를 이용해서 회원가입을 진행하려고 한다면, 최소한 email과 password를 받아야 할 것이다. 그렇다면 User를 등록할 때, email과 password는 무조건 작성하도록 해야한다. 그 역할을 생성자가 하는 것이다.
public class User {
String email;
String password;
// 생성자
User(String email, String password) {
this.email = email;
this.password = password;
}
}
위에서 간단하게 만든 User 클래스는 다음과 같이 그 인스턴스를 생성할 수 있다. 회원가입을 할 때마다 새로운 User가 생성될 것이다.
public class Main {
public class void main(String[] args) {
User user1 = new User("example@gmail.com", "0000");
User user2 = new User("mycutecat@gmail.com", "cat1234");
}
}
오늘은 과제 발제가 있었고, 2개의 특강을 들었다. 나머지는 모두 강의만 들었다. 기초적인 내용이라서 오늘 3주차까지 다 들을 수 있을 줄 알았는데 3주차까지는 무리였던 것 같다..🫠 그리고 주말에 자바 스터디도 따로 있기 때문에 원래 듣던 인프런 강의도 들어야 하는데 좀 더 시간 분배를 잘해야겠다는 생각이 들었다. 이번 주까진 어떻게든 5주차까지 끝내도록 노력해야겠다.