본문 바로가기
카테고리 없음

[내일배움캠프] 스파르타 7일차_24.10.08

by Kimuky 2024. 10. 8.

벌써 7일차이다.. 음 뭘한건지도 모르겠는데 시간이 빨리 지나간다.

이 시간이 아깝지 않게 학습하고 복습하자.

공부 내용 및 활동 내용

 -  JAVA 기초 학습

1. 배열 복사 (얕은 복사, 깊은 복사)
2. 컬렉션
 - List
 - LinkedList
 - Stack
 - Queue
 - set
 - map

3. 인텔리제이 설정 (자동 완성 기능에 대하여)


1. 배열

1-1: 배열 선언

//자료형[] 변수명
int[] a;
double[] b;
String[] c;

//자료형 변수명[]
int a[];
double b[];
String c[];

 

1-2: 배열 객체 생성

// new 자료형[배열의 길이]
new int[3]; // 정수형 자료형 3개
ew String[5]; // 문자열 자료형 5개

 

 

1-3:  배열 자료형 변수에 객체 대입

// 자료형[] 변수명 = new 자료형[배열의 길이]
// 배열의 길이를 지정하지 않으면 오류가 난다. (정적)

//1)
// 1-1)
int[] a = new int[3];

// 1-2)
int[] a;
a = new int[3];
//---------------------------

// 2)배열에 담길게 확실하다면 이방법도
// 2-1)
int[] a = new int[]{3,4,5};

// 2-2)
int[] a = {3,4,5};

 

1-4: 얕은 복사

package week02;

import java.util.Arrays;

public class w02_array_copy {
    public static void main(String[] args) {
    	//얕은 복사 예제
        int[] a = {1, 2, 3, 4};
        int[] b = a;
        
        // 복사 후,출력 값
        // a = [1, 2, 3, 4]
	// b = [1, 2, 3, 4]
        System.out.println("a = " + Arrays.toString(a));
        System.out.println("b = " + Arrays.toString(b));
		
        // 배열 값에 다른 수, 출력값
        // a = [1, 2, 10, 4]
        // a = [1, 2, 10, 4]
        b[2] = 10;
        System.out.println("a = " + Arrays.toString(a));
        System.out.println("b = " + Arrays.toString(b));

    }
}

 

1-5: 깊은 복사

package week02;

import java.util.Arrays;

public class w02 {
    public static void main(String[] args) {
        // 깊은 복사
        
        // 1번 방법 a= {1,2,3,4}, b= {1,2,3}
        int[] a = {1,2,3,4};
        int[] b = Arrays.copyOf(a,a.length-1);

        System.out.println(Arrays.toString(b));
        // 2번 방법c= [aaa, bbbb, Bbbbbb], d= [aaa, hello, Bbbbbb]
        String[] c = {"aaa", "bbbb", "Bbbbbb"};
        String[] d = c.clone();
        d[1] = "hello";

        System.out.println(Arrays.toString(d));


    }
}

 


2. 컬렉션

- 음 어떻게 정리해야 할지 감이 안 잡힌다. 음...컬렉션은 Array의 단점을 보완한? 자료구조이다. 

 컬렉션은 데이터의 갯수가 정해지지 않을 때, 굉장히 유용하다. 컬렉션은 길이를 가변적으로 유용하게 늘릴 수 있기 때문이다.

 컬렉션 종류로는 List, LinkedList, Stack, Queue, Set, Map 6 종류 지만 List, Map, Set 에서 좀 더 깊게 들어가면 다른 개념이 들어간다. 아무튼 각각에 대해서는 특징들이 있다.

 

요약하자면 

List : 순서 존재, 데이터 중복 가능 (ArrayList, LinkedList)

Stack: 순서대로 쌓이고 마지막에 쌓인 것이 먼저 빠지는 구조. First in Last Out 

Queue: 순서대로 쌓이지만 앞에서 빼는 구조, First in First Out

Set: 데이터 쌓이는 순서 X, 순서도 없고 중복도 없는 배열

Map: key-value, 구조 key값은 중복 X, 지정할 시, 새값으로

 

 아무튼 컬렉션은 길이를 가변적으로 늘릴 수 있어서, 입력값이 어떻게 될지 모르는 경우 활용하는 것이 좋을 것이다. 이론은 들었지만 문제를 풀어보지 않으면 기억 못할 것 같다.

 각 선언이 매우 유사한 구조를 띄고 있고, 메소드 또한 거의 유사하다. 그래서 외우기는 비교적 쉽다. 물론 조금씩 차이가 있기에 문제를 풀어보며 숙달시켜야 할 것 이다.


3. 인텔리제이 설정

- 본 캠프는 IntelliJ를 통해 개발을 진행한다. 유료버전이라 기능이 많고, 기본 기능도 매우 휼륭하다.

하지만 학습에 취지를 두면 꼭 꺼야하는 시스템들이 있다.

첫번째는 끄는 것이 좋을 것 같지만, 두번째는 선택사항이다.

 

일단 첫번째로는 "머신러닝 코드 완성 제안 정렬"

 

일단 이 기능을 먼저 보여드리자면

인라인줄을 ai가 자동 생성

-> 일단 매우매우 편리한 기능임에 틀림없지만 기본 구조도 제대로 숙달되지 않았는데 잘 알지 못하게 알아서 다 만들어준다. 하지만 학습에 취지에는 전혀 좋지 못하다.

 

설정 - 에디터 - 일반 - 인라인 완성, 머신 러닝 지원 설정 끄자..

 

 

매우 개발을 편리하게해주지만 나는 끄기로 하였다. 구조를 익혀가야하는데 이런 AI 힘에 기댈 수는 없다..!!!!

일단 나는 껐다.

 

일단 두번째로는 "코드 입력 시 제안 표시"

이렇게 조금만 입력해도 다 알려준다. 하지만 이것도 학습하는 입장에서 좋지는 않다. 물론 구조를 아직 모르는 초보자는 이걸 쓰는게 좋겠지만 뭘 써야하는지 너무 다 알려준다.. ㅠㅠㅠ 

그렇기에 학습 취지에는 맞지않기에 나는 껐다.

하지만 이게 메인메소드까지 만들어줘 매우 편리하다... 음 아직까지 고민이지만 메인 메소드 선언만 하고는 끄고 공부해야 겠다.

 

설정 - 에디터 - 일반 - 코드 완성 끄자..


 자바 컬렉션부터는 너무 헷갈리기 시작한다. 계속 문제를 풀면서 숙달해야할 것이다. 그래도 같이 공부하는 팀원들이 있어 같이하게 된다. 계속 열심히 하고싶다.

 

오늘 이  TIL을 다 작성하고 나서는 기초문제 30개 풀고 잘 것이다. 일단은 자바 기초문법부터 숙달한 뒤에 Spring을 공부할 것이다. 그래도 이제는 Java 문법이 눈에 들어오기 시작한다. 다행이다.

오늘 한 것 내일 할 것
강의 2주차까지 듣기
인텔리제이 커스텀 (자동완성)
코딩기초문제 30문제
TIL 작성
강의 4주차까지 듣기
개인과제 LV1, LV2 풀기