2021. 11. 9. 23:42ㆍ[JAVA]
이번엔 간단한 배열의 선언과 정렬 또 Wrapper클래스와 Primitive 기본 자료타입의 차이가 무엇인지 정리합니다.
1. Wrapper VS Primitve
배열을 만들 때 문득 드는 생각이 있습니다.
int arr[] = {1,2,3,4}; arr 배열 선언
Integer arr[] = {1,2,3,4}; arr 배열 선언
엥 도대체 뭐가 다르지? 라는 생각.
int는 Primitive 기본 자료타입이고 Integer는 Wrapper 클래스입니다.
자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있습니다. 이럴 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다. 자바는 모든 기본타입(primitive type)은 값을 갖는 객체를 생성할 수 있습니다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입니다. 래퍼 클래스로 감싸고 있는 기본 타입 값은 외부에서 변경할 수 없습니다. 만약 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 합니다.
여기가 정리가 너무 잘되어 있네요
https://coding-factory.tistory.com/547
2. Arrays Sort
Integer[] b = {1,2,3,4};
String[] string = {"a", "b", "c", "d"};
Arrays.sort(string, Collections.reverseOrder()); // string 배열 내림차순
for(int i =0; i<string.length;i++) {
System.out.print(string[i] +" ");
}
System.out.println();
Arrays.sort(b); // Integer 배열 오름차순 정렬
for(int i =0; i<b.length;i++) {
System.out.print(b[i] + " ");
}
Arrays.sort(b,Collections.reverseOrder()); // Integer 배열 내림차순 정렬
for(int i =0; i<b.length;i++) {
System.out.print(b[i] + " ");
}
System.out.println();
자 첫 번째로 Wrapper 클래스와 Primitive 기본 타입에 대해 먼저 이야기한 이유는
Collections.reverseOrder()메서드를 사용하기 위해서인데요.
int[] arr = {1,2,3,4} 로 선언 된 배열은 Array.sort(arr)로 오름차순 정렬은 되지만 Collections.reverseOrder() 내림차순 정렬은 하지 못합니다. 왜냐하면 Collections은 객체를 대상으로 하니까요. int 는 변수 자료형이지 객체 클래스가 아닙니다
그래서 Integer 래퍼 클래스로 배열을 만듭니다. 또 내부 수정이 불가하고 객체를 생성해서 수정해야하니까 캡슐화(?) 효과도 볼 수 있겠네요
3. ArrayList 정렬
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(5);
arrayList.add(1);
arrayList.add(3);
arrayList.add(4);
Collections.sort(arrayList); // 오름차순 정렬
for(int i = 0; i<arrayList.size();i++) {
System.out.print(arrayList.get(i) + " ");
}
System.out.println();
Collections.sort(arrayList, Collections.reverseOrder()); // 내림차순 정렬
for(int i = 0; i<arrayList.size();i++) {
System.out.print(arrayList.get(i) + " ");
}
위와 동일하지만 다른점은 Array.sort가 아닌 Collections 솔트 ! Collections에는 다양한 메소드가 있는데 다음 포스팅 때 적어볼께요.
4. 이들의 크기는 어떻게 구하나요?
String st = "abcdefg"; // String은 length()
st.length();
String stArr[] = {"a","b","c","d"}; // String 배열은 length
int stArrLength = stArr.length;
int[] arr = {1,2,3,4}; // int 배열은 length
int length = arr.length;
ArrayList<Integer> arrList = new ArrayList<>(); // arraylist는 size()입니다!
arrList.size();
'[JAVA]' 카테고리의 다른 글
[Java] 직렬화(Serialization) (0) | 2021.11.16 |
---|---|
[Java 진법 변환]2진수-10진수 8진수-10진수 16진수-10진수 (0) | 2021.11.11 |
[Java String 클래스] String 클래스 완벽 정리 substring,split .. (0) | 2021.11.11 |
[Java 형변환의 모든 것] Long to Int, String to Int, Int to String 등.. (0) | 2021.11.09 |
[JAVA] Math 클래스의 모든 것. (수학 관련된 모든 클래스) (0) | 2021.11.09 |