오늘의 학습 키워드

자바 강의 1주차 복습, 자료구조

자바 강의 1주차 복습

1주차 TIL 작성 다하고 날라감 이슈로 인해 다시 작성,,,

1) JVM
JVM은 여러가지의 기기 위에 JAVA 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것을 의미한다고 한다.

2) 1주차 HW - 요리 레시피 메모장 만들기

import java.util.Scanner;

public class Main01 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String title = sc.nextLine();
		float rate = sc.nextFloat();
		String input1 = sc.nextLine();
		String input2 = sc.nextLine();
		String input3 = sc.nextLine();
		String input4 = sc.nextLine();
		String input5 = sc.nextLine();
		String input6 = sc.nextLine();
		String input7 = sc.nextLine();
		String input8 = sc.nextLine();
		String input9 = sc.nextLine();
		String input10 = sc.nextLine();

		...

}

처음에는 위와 같이 코드를 작성했는데 출력창에서 1. 공백 이렇게 출력되는 문제가 계속 발생했다. 학습 질문 탭을 확인하여 다음과 같이 수정했다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String title = sc.nextLine();
        title = "[ " + title + " ]";
        String input1 = sc.nextLine();
        String input2 = sc.nextLine();
        String input3 = sc.nextLine();
        String input4 = sc.nextLine();
        String input5 = sc.nextLine();
        String input6 = sc.nextLine();
        String input7 = sc.nextLine();
        String input8 = sc.nextLine();
        String input9 = sc.nextLine();
        String input10 = sc.nextLine();
        float rate = sc.nextFloat();
        int star = (int)rate;
        rate = star*100/5;

        System.out.println(title);
        System.out.println("별점: "+star+" ("+rate+"%)");
        System.out.println("1. "+input1);
        System.out.println("2. "+input2);
        System.out.println("3. "+input3);
        System.out.println("4. "+input4);
        System.out.println("5. "+input5);
        System.out.println("6. "+input6);
        System.out.println("7. "+input7);
        System.out.println("8. "+input8);
        System.out.println("9. "+input9);
        System.out.println("10. "+input10);
    }
}

3) next 시리즈
강의에서는 next() 언급되었지만 위와 같이 엔터로 구분하여 입력받으려면 nextLine()을 사용해야한다. next()는 스페이스까지 즉, 띄어쓰기 전까지만 입력받는 메소드이다. 이외에도 nextFloat() 등과 같이 다양한 next() 메소드가 존재한다는 것을 알게 되었다. 이에 대해 정리해야할 필요성을 느꼈다.

자료구조

  • 얕은 복사 / 깊은 복사
    얕은 복사: int a = 4; int b = a; 와 같이 주소값만 복사되고 실제 값은 1개로 유지되는 것 -> 똑같은 주소를 바라보고 있는 것 => 원래 값에도 영향이 감
    깊은 복사: 실제 값을 가지고 있는 배열의 기본형 값을 꺼내서 복사하는 것 -> for 문을 사용할 수 있음

  • Set
    순서가 없는 데이터의 집합으로 데이터 중복 허용을 안함
    -> 중복되는 값을 add한다면 덮어씌워짐

  • Map
    key-value 구조가 존재함
    만약 키 값이 중복된다면 그 키 값에 추가된 값이 덮어씌워짐

  • length/set
    length: 배열의 길이를 조회
    length(): 문자열의 길이를 조회
    size(): 컬렉션 타입 목록의 길이 조회
    -> List의 길이를 알고 싶다면 size() 메소드를 사용해야 한다.

  • 자료구조로 요리 레시피 메모장 만들기 - List 사용

package week2.collection;

import java.util.ArrayList;
import java.util.Scanner;

public class Col1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<String> strlist = new ArrayList<String>();

        String type = sc.nextLine();
        String title = sc.nextLine();

        while(true){
            String input = sc.nextLine();
            if (input.equals("끝")){
                break;
            }
            strlist.add(input);
        }

        System.out.println("[ " + type + "으로 저장된 " + title + " ]");

        for ( int i = 1; i <= strlist.size(); i++){
            System.out.println(i+". "+strlist.get(i-1));
        }
        
    }
}

JAVA의 LIST에서는 equal 메소드가 있어서 비교하고자 하는 값이 String이라면 equal 메소드를 사용해야한다. 처음에는 if (input == "끝")으로 작성해서 돌려봤더니 제대로 돌아가지 않아 찾아보니 equal을 사용해야한다는 것을 발견했다.

오늘의 회고

JAVA와 C#은 비슷한 부분이 그래도 있어서 이해하는데 어려움이 있지는 않았다. 오늘부터 프로그래머스 lv.0 3문제씩 푸는 것을 목표로 정했다.

profile
안녕하세요

0개의 댓글