본문 바로가기

JAVA/Study

33. String 배열 , String 배열의 복제, 선택정렬(오름차순,내림차순) -arraycopy , asc , desc

public class Example4 {

    public static void main(String[] args) {
        String[] str1 = {"java", "python", "c-language"};
        String[] str2 = {"java",    "python","c-language"};
        String[] str3;
        str3 = str2; //얕은복제 : 같은 기억 장소를 가르키고있음(주소만복제)
        String[] str4 =new String[5];
       
        System.out.println(str1==str2); //주소비교로 인해 false
        System.out.println(str2==str3); //str3주소에 str2주소를 복사한거라 true
        System.out.println(str2);
        System.out.println(str3);
        //깊은복제 : 다른 기억장소를 가르키도록 데이터를 복제(데이터를 heap에 갖고옴)
        System.arraycopy(str2, 0, str4, 0, str2.length);//str2의 위치 0번째부터 복사를한다 str4의    0번째부터 붙여넣는다 str2의 길이까지
        System.out.println("\n"+str4);
        for(String data:str4){
            System.out.println(data);
        }
    }

}

출력결과

false
true
[Ljava.lang.String;@15db9742
[Ljava.lang.String;@15db9742

[Ljava.lang.String;@6d06d69c           //str4의 주소 System.out.println("\n"+str4);
java                           //for(String data:str4){  System.out.println(data);  } 의 값 

python                     //뒤에 null 두개는 str4를 만들때 길이가 5인 
c-language             //배열로 만들었는데  str2는 3개짜리 배열
null                         //이라 null로표시되었음
null

 


public class Selection_sort {

    public static void main(String[] args) {
        int[] arr={70,50,90,80,40,60};
        //=> {40,50,60,70,80,90}오름차순
        //=> {90,80,70,60,50,40}내림차순
        //오름차순으로 그 결과를 정렬하여 출력
        int orm;
 
        for(int x=0;x<arr.length;x++){
            for(int y=(x+1);y<arr.length;y++){
                if(arr[x]>arr[y]){
                    orm=arr[x];
                    arr[x]=arr[y];
                    arr[y]=orm;
                }
            }
        }
        for(int data:arr){
            System.out.println(data);
        }

결과값

 

40
50
60
70
80
90