입력받기
%s : String 형식으로 출력
%d : integer 형식으로 출력
%f : float 형식으로 출력
%t : date, time 형식으로 출력
%o : 8진수 integer 형식으로 출력
%x : 16진수 integer 형식으로 출력
반올림 하고 싶을 때
System.out.printf("%.2f", n);
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차원 배열
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);
// 객체리스트
// 방법 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<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 - 배열(int[], integer[])의 길이를 파악할 때 사용
자바 collection 프레임워크에는 다양한 컬렉션이 있는데, 원소를 읽어올 때 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를 사용하는 것.