벌써 7일차이다.. 음 뭘한건지도 모르겠는데 시간이 빨리 지나간다.
이 시간이 아깝지 않게 학습하고 복습하자.
공부 내용 및 활동 내용 |
|
- JAVA 기초 학습 |
|
1. 배열 복사 (얕은 복사, 깊은 복사)
|
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 힘에 기댈 수는 없다..!!!!
일단 나는 껐다.
일단 두번째로는 "코드 입력 시 제안 표시"

이렇게 조금만 입력해도 다 알려준다. 하지만 이것도 학습하는 입장에서 좋지는 않다. 물론 구조를 아직 모르는 초보자는 이걸 쓰는게 좋겠지만 뭘 써야하는지 너무 다 알려준다.. ㅠㅠㅠ
그렇기에 학습 취지에는 맞지않기에 나는 껐다.
하지만 이게 메인메소드까지 만들어줘 매우 편리하다... 음 아직까지 고민이지만 메인 메소드 선언만 하고는 끄고 공부해야 겠다.

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

자바 컬렉션부터는 너무 헷갈리기 시작한다. 계속 문제를 풀면서 숙달해야할 것이다. 그래도 같이 공부하는 팀원들이 있어 같이하게 된다. 계속 열심히 하고싶다.
오늘 이 TIL을 다 작성하고 나서는 기초문제 30개 풀고 잘 것이다. 일단은 자바 기초문법부터 숙달한 뒤에 Spring을 공부할 것이다. 그래도 이제는 Java 문법이 눈에 들어오기 시작한다. 다행이다.
오늘 한 것 | 내일 할 것 |
☑ ☑ |
☐ 코딩기초문제 30문제 ☐ TIL 작성 ☐ 강의 4주차까지 듣기 ☐ 개인과제 LV1, LV2 풀기 |