[내배캠/7일차] TIL - 자바 문법 종합반 2주차 완료, 자바 기초 특강

euphony·2025년 1월 2일
0

내일배움캠프

목록 보기
23/66

✅오늘의 한 일

  • 자바 문법 종합반 3주차까지 듣기
  • 좋은 개발자의 비밀 특강
  • 프로그래밍 기초 특강

💻오늘의 학습

자바 문법 강의는 아주 기초적인 자바 문법에 대한 내용으로 구성되어있다. 2주차는 각종 연산자와 조건문/반복문, 배열, 컬렉션 등에 대한 내용이었고, 모두 아는 내용이어서 하나하나 정리하기보단 빠르게 훑고 넘어가는 방식으로 공부했다. (어차피 인프런에서 자바 강의를 듣고 있기도 하다..) 그래서 강의에서 좀 더 잘 기억했으면 하는 내용만 간단히 정리했다.

자바 문법 종합반 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
		}
	}
}

얕은 복사 vs 깊은 복사

  • 얕은 복사 : 주소값만 복사되고 실제값은 1개로 유지되는 것
  • 깊은 복사 : 실제값까지 똑같이 복사되는 것

배열을 복사하려면 깊은 복사를 통해 복사를 해주어야 한다. 다음 예제를 보자. 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 : 순서가 없는 데이터의 집합, 중복 허용X
  • Map : 순서가 없는 키-값 쌍으로 이루어진 데이터의 집합, 키 값은 중복 허용X
  • Queue : 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주차까지 끝내도록 노력해야겠다.

📌내일의 할 일

  • 자바 문법 종합반 3주차 ~ 4주차 듣기
  • 자바 중급 2편 섹션2 듣기

0개의 댓글

관련 채용 정보