Primitive 자료형과 Wrapper 클래스
- Java에서는 int와 integer같이, Primite자료형과 Wrapper클래스가 있음
- Wrapper 클래스는 Primitive 자료형보다 많은 이점이 존재한다.
- null을 용이하게 처리할 수 있다.
- ArrayList등 객체만을 핸들링 하는 기능을 사용하기 위해
Integer[] data_list = new Integer[10];
data_list[0] = 1;
data_list[2]; // null
Integer data_list1[] = {5, 4, 3, 2, 1};
Integer[] data_list2 = {1, 2, 3, 4, 5};
System.out.println(data_list2[0]); // 1
data_list1[0]; // 5
참고: List와 ArrayList
- 다음과 같이 List와 ArrayList선언의 차이점
List<Integer> list1 = new ArrayList<Integer>(); ArrayList<Integer> list1 = new ArrayList<Integer>();
- List는 인터페이스이고, ArrayList는 클래스임
- 클래스는 크게 일반 클래스와 클래스 내에 '추상 메서드'가 하나 이상 있거나, abstract로 정의된 추상 클래스로 나뉨
- 인터페이스는 모든 메서드가 추상 메서드인 경우를 의미하며, 인터페이스를 상속받는 클래스는 인터페이스에서 정의된 추상 메서드를 모두 구현해야 함(따라서 다양한) 클래스를 상속받는 특정 인터페이스는 결국 동일한 메서드를 제공함)
- ArrayList가 아니라 List로 선언된 변수는 다음과 같이 필요에 따라 다른 리스트 클래스를 쓸 수 있는 구현상의 유연성을 제공함
List<Integer> list1 = new ArrayList<Integer>(); list1 = new LinkedList<Integer>();
- 다만 나는 자료구조/알고리즘에서는 굳이 동일 변수에 다양한 리스트 클래스를 쓸 필요는 없으므로, 최대한 동일한 클래스로 선언하기로 함
ArrayList<Integer> list1 = new ArrayList<Integer>();
- 또한 JDK1.7이상 부터는 인스턴스 생성 시 타입을 추정할 수 있는 경우에만 타입을 생략할 수 있으므로, 다음과 같이 작성 가능하지만, 가능한 JAVA버전 제한하지 않기 위해, 아래와 같이 작성하지 않기로 함
ArrayList<Integer> list1 = new ArrayList<>();
import java.util.ArrayList;
ArrayList<Integer> list1 = new ArrayList<Integer>(); // int 형 데이터를 담을 수 있는 가변 길이의 배열 선언
list1.add(1);
list1.add(2);
list1.get(0); // 1
list1.set(0, 5);
list1.get(0); // 5
list1.remove(0);
list1.get(0); // 2
Integer data_list[][] = {{1, 2, 3}, {4, 5, 6}};
System.out.println(data_list[0][1]);
System.out.println(Arrays.toString(data_list[0]));
// 2
// [1, 2, 3]
연습해보기1
위 3차원 배열에서 8, 10, 2 를 순서대로 각각의 라인에 출력해보기 (System.out.println 사용)
위 3차원 배열에서 8, 10, 2 를 순서대로 각각의 라인에 출력해보기 (System.out.println 사용)
- 처음이라 쉽습니다. 처음에는 매우 쉽지만, 후반부는 충분히 어렵습니다.
- 쉬운 부분을 잘 쌓아나가야 어려운 부분을 잘 할 수 있습니다.
String dataset[] = {
"Braund, Mr. Owen Harris",
"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",
"Heikkinen, Miss. Laina",
"Futrelle, Mrs. Jacques Heath (Lily May Peel)",
"Allen, Mr. William Henry",
"Moran, Mr. James",
"McCarthy, Mr. Timothy J",
"Palsson, Master. Gosta Leonard",
"Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)",
"Nasser, Mrs. Nicholas (Adele Achem)",
"Sandstrom, Miss. Marguerite Rut",
"Bonnell, Miss. Elizabeth",
"Saundercock, Mr. William Henry",
"Andersson, Mr. Anders Johan",
"Vestrom, Miss. Hulda Amanda Adolfina",
"Hewlett, Mrs. (Mary D Kingcome) ",
"Rice, Master. Eugene",
"Williams, Mr. Charles Eugene",
"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)",
"Masselmani, Mrs. Fatima",
"Fynney, Mr. Joseph J",
"Beesley, Mr. Lawrence",
"McGowan, Miss. Anna",
"Sloper, Mr. William Thompson",
"Palsson, Miss. Torborg Danira",
"Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)",
"Emir, Mr. Farred Chehab",
"Fortune, Mr. Charles Alexander",
"Dwyer, Miss. Ellen",
"Todoroff, Mr. Lalio"
};
Integer count = 0;
for(Integer item = 0; item < dataset.length; item++) {
if(dataset[item].indexOf("M") > 0) {
count++;
}
}
System.out.println(count); // 26
'Algorithm > Algorithm-Java' 카테고리의 다른 글
Java-자료구조 (Linked-List) (0) | 2021.11.17 |
---|---|
Java-자료구조 (Stack) (0) | 2021.11.17 |
Java-자료구조 (Queue) (0) | 2021.11.17 |
Java 를 Jupyter 환경에서 구축 (0) | 2021.11.15 |
Java 환경 준비 (0) | 2021.11.15 |