본문 바로가기

JAVA

자바 기본 문법 / 얕은 복사와 깊은 복사 / String

자동 형변환

여러 타입의 변수 여러 개를 연산했을 때, 결과값은 가장 큰 타입의 피연산자 타입으로 변환됨!

float + double => double

public class W02 {
    public static void main(String[] args) {
        // 자동 형변환
        int a = 10;
        int b = 329;

        float af = a;
        float bf = b;
        float cf = 35.0f + a;

		// 실수로 나온다!
        System.out.println(af);
        System.out.println(bf);
        System.out.println(cf);
    }
}

 

삼항연산자 & 비트연산자

public class W02 {
    public static void main(String[] args) {
        //삼항연산자
        int x = 1;
        int y = 10;
        boolean z = (x==y) ? true : false;
        System.out.println(z);

        //비트 연산자
        System.out.println(3 << 2); //왼쪽으로 비트 부호 이동시 *2 11 -> 1100
        System.out.println(30 >> 2); //오른쪽으로 비트 부호 이동시 /2 

    }
}

 

switch

  • switch : 코드의 중복이 적지만, 하나의 피연산자에 대해서만 조건을 달게 됨
  • If : 코드의 중복이 많지만, 여러 피연산자에 대해서 조건을 달 수 있음
public class W14 {
    public static void main(String[] args) {
        int month = 8;
        int a = 0;

        switch(month){
            case 1:
                System.out.println("1월 입니다");
                break;
            case 8:
                System.out.println("8월 입니다");
                a = 8;
                break;
            default:
                System.out.println("모릅니다");
                break;
        }

        System.out.println(a);
    }
}

 

향상된 for문

public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9};

        for(int number : numbers){
            System.out.println(number);
        }
    }

 

 

얕은 복사와 깊은 복사

= 로 하는 복사는 얕은 복사

int[] b = {1, 2,3};

int[] a = b →a는 b배열의 주소를 복사하는 것

a[1] = 5

sout(b[1]); → 5출력

 

깊은 복사

int[] a = b.clone(); //2차원 배열 이상에서는 얕은 복사

혹은

int[] a = Array.copyOf(b, b.length);

 

String

  • Char : '' / 기본 자료형 / 1byte만 사용 
  • String : "" / 참조 자료형 / 널문자를 포함함
  • 선언 : String str = "ABCD";
  • 길이 : str.length();
  • 해당 인덱스 값(char)로 변경 : char strChar = str.charAt(2);
  • 부분 문자열 출력 : String subString = str.substring(0, 3);
  • 동일한 내용의 문자열인지 확인 : newStr.equals(str);
  • char 배열로 변환 : char[] cArr = str.toCharArray();
  • char에서 String으로 : String strArrays = new String(bArr);
public class Arr02 {
    public static void main(String[] args) {
        String str = "ABCD";

        int strLength = str.length();
        System.out.println(strLength);

        char strChar = str.charAt(2);
        System.out.println(strChar);

        //0부터 2까지 출력
        String subString = str.substring(0, 3);
        System.out.println(subString);

        String newStr = "ABCD";
        boolean strEqul = newStr.equals(str);
        System.out.println(strEqul);

        //string을 char배열로 변환
        char[] cArr = str.toCharArray();

        //반대로
        char[] bArr = {'a', 'b', 'c'};
        String strArrays = new String(bArr);
        System.out.println(strArrays);
    }
}