자바 기초 문법

SH·2022년 8월 19일

입력받기


자바 출력 형식

%s : String 형식으로 출력
%d : integer 형식으로 출력
%f : float 형식으로 출력
%t : date, time 형식으로 출력
%o : 8진수 integer 형식으로 출력
%x : 16진수 integer 형식으로 출력

반올림 하고 싶을 때

System.out.printf("%.2f", n);

switch문

        int n = 10;
        switch(n) {
            case 1:
                System.out.println("1입니다");
                break;
            case 10:
                System.out.println("10입니다");
                break;
            case 20:
                System.out.println("20입니다");
                break;
        }

배열 선언

// 배열 선언
        String strArr[];
        String[] strArr2;

        // 배열 선언과 동시에 생성. 대괄호 안에는 배열 크기
        int arr[] = new int[10];
        int[] arr2 = new int[20];

        // 배열 생성과 동시에 초기화 가능.
        int arr3[] = new int[] {1, 2, 3};
        int[] arr4 = {1, 2, 3}; // new int[] 생략 가능

        // arrayList
        ArrayList<Integer> arrlist = new ArrayList<Integer>();
        ArrayList<Integer> arrlist2 = new ArrayList<>(); // 제네럴 생략 가능
        ArrayList<Integer> arrlist3 = new ArrayList<>(10); // 용량 설정 가능

        arrlist.add(0, 1);
        arrlist.remove(0);
        arrlist.get(0);
        arrlist.size();

2차원 배열

        // 2차원 배열
        int[][] arr2d;
        int arr2d2[][];
        int[] arr2d3[];

        // 배열 생성 - new int[행의크기][열의크기기]
        arr2d = new int[3][3]

        int lenthOfRow = arr2d.length; // 2차원 배열의 행의 크기
        int lentOfRow = arr2d[0].length; // 2차원 배열의 열의 크기

        // 배열 생성과 동시에 초기화
        int[][] TwoDArray = {
                {1, 2, 3},
                {4 ,5, 6},
                {7, 8, 9}
        };

생성자는 반환값이 없음


abstract public String name; 이런 식으로 변수 앞에는 abstract 키워드 붙일 수 없음


System.out.println(); // 안에 매개변수 하나밖에 못 넣음
// System.out.println("이렇게 못 함", x);
System.out.printf("이렇게 하고 싶으면 printf 써주어야함", x); 

객체리스트 + for문

		// 객체리스트
        // 방법 1
        ParentClass[] parentList = new ParentClass[10];
        for (int i = 0; i < 10; i++) {
            ParentClass newParentClass = new ParentClass("i", 20 + i, 100);
            parentList[i] = newParentClass;
        }

        for (ParentClass parent: parentList) {
            System.out.printf(parent.name+" "+ parent.age+"\n");
        }


		// 방법 2
        ArrayList<ParentClass> parentList2 = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            ParentClass parentClass = new ParentClass("i", 10 + i, 100);
            parentList2.add(parentClass);
        }

        for (ParentClass parent: parentList2) {
            System.out.printf(parent.name+" "+ parent.age+"\n");
        }

다음과 같이 선언+생성+초기화 동시에 가능

Car[] carlist = new Car[]{ new Ambulence(), new SportCar()};

추상클래스


abstract class Car {

//  abstract public String name; 이런 식으로 변수 앞에는 abstract 키워드 붙일 수 없음
  abstract public void driving();
}

public class Ambulence extends Car {
 public void driving() {
   System.out.println("엠뷸런스 지나가요");
 }
}

public class SportCar extends Car{
  public void driving() {
    System.out.println("스포츠카 지나가요");
  }
}

ArrayList로 2차원배열 만들기

    // arraylist 2차원배열
    ArrayList<Integer[]> twoDList = new ArrayList<>(); // 정수 배열을 원소로 갖는 Arraylist 생성(가로줄 만듦)

    twoDList.add(new Integer[]{1, 2 ,3});
    twoDList.add(new Integer[]{4, 5, 6});
    twoDList.add(new Integer[]{7, 8, 9});

Integer[], 즉 정수형 배열을 요소로 갖은 arraylist를 선언한다. 여기서 정수형 배열이 하나의 행을 이룬다 생각하면 됨

twoDList = {
	[ 1, 2, 3 ],
    [ 4 ,5 ,6 ],
    [ 7 ,8, 9 ]
}

이런식으로 되는거임


출력은 다음과 같이 함


    // 2차원 배열 출력
    // size() - 컬렉션 프레임워크 타입의 길이를 파악할 때 사용
    // length() - 문자열 길이를 파악할 때 사용
    // length - 배열(int[], integer[])의 길이를 파악할 때 사용
    
    for (int i = 0; i < twoDList.size(); i++) {
      for (int j = 0; j < twoDList.get(i).length; j++) {
        twoDList.get(i)[j] = i+j; 
      }
    }

    for (int i = 0; i < twoDList.size(); i++) {
      for (int j = 0; j < twoDList.get(i).length; j++) {
        System.out.println(twoDList.get(i)[j]);
      }
    }

twoDList가 ArrayList이므로 행은 .get(행인덱스)로 접근, 해당 행은 정수형 배열이므로 [열인덱스]로 접근


size(), length(), length 차이

size() - 컬렉션 프레임워크 타입의 길이를 파악할 때 사용
length() - 문자열 길이를 파악할 때 사용
length - 배열(int[], integer[])의 길이를 파악할 때 사용


자바 collection 프레임워크에는 다양한 컬렉션이 있는데, 원소를 읽어올 때 Iterator 인터페이스로 표준화하고 있음

자바 컬렉션 중 반복되는 객체에 대해 공통적으로 사용할 수 있는 인터페이스 정도로 생각해주면 될 것 같음

Iterator

    // Iterator

    ArrayList<String> strlist = new ArrayList<>(Arrays.asList("a", "b", "c","d"));

    Iterator iter = strlist.iterator();
    while (iter.hasNext()) {
      System.out.println(iter.next());
    }

    // 모든 요소가 처리되거나 작업에서 예외가 발생할 때까지 나머지 각 요소에 대해 지정된 작업을 수행하는 함수
    iter.forEachRemaining(System.out::println);

Iterator를 굳이 쓰는 이유는? 유지보수 때문이다. List로 변수를 만들었는데 Set으로 바꾸는 경우 get 메소드의 유무 때문에 에러가 날 수 있다. 그래서 Iterator를 사용하는 것.


참고:
https://codechacha.com/ko/java-printf-format/

profile
블로그 정리안하는 J개발자

0개의 댓글