반응형
Object Class
JAVA의 모든 Class의 부모 Class
기본적이며 필수적인 기능을 제공한다.
주요기능
finalize : Instance의 소멸자
//finalize formula
@Override
protected void finalize() throws Throwable {
super.finalize();
System.out.println("call destructor " + name);
}
equals : Instance의 비교
- == (비교 연산자)는 참조값만을 비교한다는것이 다르다.
@Override
public boolean equals(Object o) {
try {
if ((this.Xpos == ((point)o).Xpos) &&
(this.Ypos == ((point)o).Ypos))
return true;
else
return false;
}
catch (java.lang.ClassCastException e) {
return false;
}
}
clone : Instance의 복제
public class point implements Cloneable {
public int Xpos, Ypos;
public point() {
this.Xpos = 1;
this.Ypos = 1;
}
public point(int Xpos, int Ypos) {
this.Xpos = Xpos;
this.Ypos = Ypos;
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class hello {
public static void main(String[] args) {
point po1 = new point(45, 2);
point cpPo = null;
try{
cpPo = (point)po1.clone();
System.out.println(cpPo.Xpos + cpPo.Ypos);
}
catch(CloneNotSupportedException e){
e.printStackTrace();
}
}
}
* Marker Interface : Empty Interface로서 의미만을 전달한다.
toString : Instance의 String 제공
public class ts {
public static void main(String[] args) {
Card2 c1 = new Card2();
Card2 c2 = new Card2("Heart", 10);
System.out.println(c1.toString());
System.out.println(c2.toString());
}
public class Card2 {
String kind;
int number;
public Card2(){
this("SPADE", 1);
}
public Card2(String kind, int number){
this.kind = kind;
this.number = number;
}
public String toString(){
return "kind : " + kind + ", number : " + number;
}
}
Wrapper Class
Primitive Type을 감싸서 이용할 수 있게 한 Class
종류
- Boolean
- Short
- Interger
- Byte
- Float
- Double
public static void main(String[] args) {
Boolean b = new Boolean(true);
Boolean b2 = new Boolean("true");
Character c = new Character('a');
Byte b3 = new Byte((byte) 7);
Byte b4 = new Byte("10");
Short s = new Short((short) 10);
Short s1 = new Short("10");
Integer i = new Integer(10);
Integer i2= new Integer("10");
Long l = new Long(100);
Long l2 = new Long("100");
Float f = new Float(1.0);
Float f2 = new Float(2.0f);
Float f3 = new Float("1.0f");
Double d= new Double(1.0);
Double d2 = new Double("2.0");
}
Boxing, Unboxing
Primitive Type을 Class화 하는것을 Boxing, 그 반대를 UnBoxing이라 한다.
* boxing 과 unboxing이 필요한 상황에서 이를 자동으로 처리하는 기법을 Auto-Boxing, Auto-Unboxing이라 한다.
public class box {
//Boxing
Integer ii = new Integer(10);
//(Boxing을 static method인 valueOf로 처리하는)
Integer iii = Integer.valueOf(10);
//UnBoxing
int i = ii.intValue();
//Auto-Boxing
Integer ii2 = 10;
//Auto-UnBoxing
int i2 = ii2;
//Wrapper Class의 연산
int b = ii++;
//갑의 반환
double d = ii2++;
//아래 두 코드는 같은 코드입니다.
Integer inO = new Integer(10);
Integer inO2 = 10;
}
Arrays Class
배열을 조작하는데 필요한 기능들을 제공하는 Class
배열의 복사, 비교, 정렬, 탐색 등의 기능을 제공.
Arrays Class의 주요 기능
copyof : 배열의 복사
equals : 배열의 비교
sort : 배열의 정렬
binarySearch : 배열의 탐색
*sort와 serch는 set이다.
▶ 주요 메서드
메서드 | 설명 |
static String toString(boolean[] a) static String toString(byte[] a) static String toString(char[] a) static String toString(short[] a) static String toString(int[] a) static String toString(long[] a) static String toString(float[] a) static String toString(double[] a) static String toString(Object[] a) |
배열의 출력 |
copyOf(), copyOfRange() int[] arr = {0, 1, 2, 3, 4}; int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0, 1, 2, 3, 4] int[] arr3 = Arrays.copyOf(arr, 3); //arr3 = [0, 1, 2] int[] arr4 = Arrays.copyOf(arr, 7); //arr4 = [0, 1, 2, 3, 4, 0, 0] int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5 = [2, 3] <= 4는 불포함 int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //arr6 = [0, 1, 2, 3, 4, 0, 0] |
배열의 복사 새로운 배열을 생성해서 반환한다. |
fill(), setAll() int[] arr = new int[5] Arrays.fill(arr, 9); // arr = [9, 9, 9, 9, 9] Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1); // arr = [1이상 6이하의 난수] |
배열 채우기 |
sort(), birnarySearch() int[] arr = {3, 2, 0, 1, 4}; Arrays.sort(arr); // binarySearch를 하기 위해서는 정렬을 해야한다. (이진 검색) int idx = Arrays.binarySearch(arr, 2); |
배열의 정렬과 검색 |
deepToString() int[][] arr2D = {{11, 22}, {21, 22}}; // [[11, 12], [21, 22]] |
다차원 배열의 출력 |
deepEquals() String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}}; String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}}; Arrays.deepEquals(str2D, str2D2); // true |
다차원 배열의 비교 |
asList(Object... a) // 가변 매개변수 (가변 : 개수가 정해져 있지 않음.) List list = Arrays.asList(new Integer[] {1, 2, 3, 4, 5}); List list = Arrays.asList(1, 2, 3, 4, 5); list.add(6); // UnsupportedOperrationException 예외 발생 (읽기 전용임) List list = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); |
배열을 List로 반환 |
▶ 구현
public class arr {
public static void main(String[] args) {
double[] arOrg = {1.1, 1.2, 1.3, 1.4, 1.5};
// arOrg와 동일한 배열을 만든다.
double[] arCpy = Arrays.copyOf(arOrg, arOrg.length);
// arOrg의 일부분을 배열로 만든다. (index '1'부터 '3'전 까지)
double[] arPart = Arrays.copyOfRange(arOrg, 1, 3);
arCpy[0] = 0;
for(double dd : arCpy) {
System.out.println(dd);
}
System.out.println("--------------------------------------");
// 이미 할당된 배열이 있고 값만 카피한다.
double[] arr = new double[3];
System.arraycopy(arOrg, 1, arr, 0, 3);
for (double d : arr){
System.out.println(d);
}
// 배열의 비교
if (true == Arrays.equals(arOrg, arCpy)){
System.out.println("true");
}
// 배열의 정렬
int[] ar1 = {42, 4, 24, 7, 1, 0};
Arrays.sort(ar1);
for (int a : ar1){
System.out.println(a);
}
// 특정 Object의 배열을 정렬.
// Coparealbe Interface를 구현 => compareTo()함수를 구현
person[] arPerson = new person[4];
arPerson[0] = new person("aaa", 10);
arPerson[1] = new person("bbb", 320);
arPerson[2] = new person("ccc", 42);
arPerson[3] = new person("ddd", 22);
Arrays.sort(arPerson);
for(person p : arPerson){
System.out.println(p);
}
// 특정 위치의 인덱스를 찾는다.
int idx = Arrays.binarySearch(arPerson, new person("aaa", 10));
System.out.println(idx);
}
}
public static void main(String[] args) {
// 배열의 출력
// static String toString(boolean[] a)
// static String toString(byte[] a)
// static String toString(char[] a)
// static String toString(short[] a)
// static String toString(int[] a)
// static String toString(long[] a)
// static String toString(float[] a)
// static String toString(double[] a)
// static String toString(Object[] a)
// 배열의 복사
// copyOf(), copyOfRange()
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0, 1, 2, 3, 4]
int[] arr3 = Arrays.copyOf(arr, 3); //arr3 = [0, 1, 2]
int[] arr4 = Arrays.copyOf(arr, 7); //arr4 = [0, 1, 2, 3, 4, 0, 0]
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5 = [2, 3] <= 4는 불포함
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //arr6 = [0, 1, 2, 3, 4, 0, 0]
// 배열 채우기
// fill(), setAll()
int[] arr7 = new int[5];
Arrays.fill(arr7, 9); // arr = [9, 9, 9, 9, 9]
Arrays.setAll(arr7, (i) -> (int)(Math.random() * 5) + 1); // arr = [1이상 6이하의 난수]
// 배열의 정렬과 검색
// sort(), birnarySearch()
int[] arr8 = {3, 2, 0, 1, 4};
Arrays.sort(arr8); // binarySearch를 하기 위해서는 정렬을 해야한다. (이진 검색)
int idx = Arrays.binarySearch(arr8, 2);
// 다차원 배열의 출력
// deepToString()
int[][] arr2D = {{11, 22}, {21, 22}}; // [[11, 12], [21, 22]]
// 다차원 배열의 비교
// deepEquals()
String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
Arrays.deepEquals(str2D, str2D2); // true
// 배열을 list로 반환
// asList(Object... a) 가변 매개변수 (가변 : 개수가 정해져 있지 않음.)
List list1 = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});
List list2 = Arrays.asList(1, 2, 3, 4, 5);
//list.add(6); // UnsupportedOperrationException 예외 발생 (List는 읽기 전용임)
List list3 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));
}
반응형
'JAVA' 카테고리의 다른 글
[Java] Method of Math (0) | 2022.06.29 |
---|---|
[Java] String Class의 Constructor & Method (0) | 2022.06.22 |
[Java] Exception handling (예외처리) (0) | 2022.06.16 |
[Java] Array of Objects (abstract) (0) | 2022.06.15 |
[Java] Polymorphism of Parameters (매개변수의 다형성) (2) | 2022.06.14 |