JAVA

[Java] Overloading, String, StringBuilder

SangRok Jung 2022. 6. 2. 11:45
반응형

 

Overloading


OOP의 특성중 Polymorphism을 지원하기 위한 방법 중 하나.

같은 이름의 Method로 서로 다른 기능을 호출하는 Mechanism

 

특징

  • Method의 Parameter로 구별하여 호출한다.
  • Retrun type이 다른 경우 사용 할 수 없다.
  • 과도한 overloading은 가독성을 저해시킨다.
  • 애매한 overloading은 지양해야한다.
    • ex) myfunction(int a, int b); 
    • ex) myfunction(short a, short b)

 

 

 

 

 

 

 

 

 

String


String을 처리하기 위한 Class.

String은 종료문자(null 문자, 일반적으로 0x00)를 포함하는 문자의 집합을 의미한다.

 

 

 

 

 

생성

두 코드는 다르다.

 

 

 

Sugar Code의 특징

아래의 두 code는 서로 다르게 출력한다.

최적화를 수행하기 위해 sugar code 사용시 문자열이 같다면 동일한 참조값으로 처리한다.

 

 

 

기능

기능 Code
Switch  case에서 string 사용 가능 (JAVA 7 이상)
String의 길이 str.length();
String 연결 str.concat();  //concatenaing
String 추출 str.substring();
String 비교 str.equals(), str.compareTo(), str.compareTognoreCase()
Primitive type을 String type으로 변환 static String.valueOf()
String의 변환 str.replace()

 

▶ Switch

public class swtich {

    public static void main(String[] args) {
        
        String day = "monday";

        switch (day) {
            case "monday" :
                System.out.println("MONDAY");
            break;
        }
    }
}

 

▶ valueOf()

public class strValueof {

    public static void main(String[] args) {
        
        // String으로 전환해준다.
        int a = 10;
        String str = String.valueOf(a);

        System.out.println(str);

        
    }
}

 

 

▶ substring()

public class strSubstring {

    public static void main(String[] args) {
        
        String day = "monday";

        //2번 인덱스 부터 리턴
        System.out.println(day.substring(2));

        //2번 인덱스 부터 4번 인덱스 까지 리턴
        System.out.println(day.substring(2, 4));

    }
}

 

 

▶ replace()

public class strReplace {

    public static void main(String[] args) {
        
        //지정한 문자를 전환시켜준다.
        String str = "hello my name is".replace('h', 'H');
        System.out.println(str);

    }
}

 

 

 

▶ equals()

public class strEquals {

    public static void main(String[] args) {
        
        String day = "monday";
        String day1 = "wednesday";
        
        if(true == day.equals(day1)){
            System.out.println("Same");
        }
        else{
            System.out.println("Different");
        }

        
    }
}

 

 

▶ concat()

public class strConcat {

    public static void main(String[] args) {
        
        String day = "monday";

        String newday = day.concat("는 하체");
        System.out.println(newday);

        System.out.println("my name is".concat("Jung"));
    }
}

 

 

 

▶ compareTo()

public class strCompare {

    public static void main(String[] args) {
        
        String day = "monday";
        String day1 = "1wednesday";
        
        int comp = day.compareTo(day1);

        System.out.println(comp);

        if(comp == 0){
            System.out.println("Same");
        }
        else if(comp > 0){
            System.out.println("사전앞에 있는 경우");
        }
        else if(comp < 0){
            System.out.println("사전상 뒤에 있는 경우");
        }

        
    }
}

 

 

 

 

 

 

StringBuilder


  • String buffer를 직접 제어 가능한 Class.
  • String Class와 달리 문자를 추가 및 삭제가 가능.
  • String Buffer Class와 기본적으로 같으나 Thread-Safty

 

 

StringBuilder 기능

in-buffer의 크기를 변경할 수 있기 때문에 속도가 느릴 수 있다.

기능 Code
기본자료형을 문자열에 추가 sb.append(int i)
문자열 일부를 삭제 sb.delete(start, end)
문자열 추가 sb.insert(offset, str)
문자열 변경 sb.replace(start, end, str)
문자열 일부 추출 sb.substring(start, end)

 

 

 

 

▶ replace()

public class strbuilderReplace {

    public static void main(String[] args) {
        
        StringBuilder sb = new StringBuilder("Day");

        sb.append("Tuesday").append("Sunday").append("Wednesday");

        //인덱스 1~5를 HELLO로 바꿈
        sb.replace(1, 5, "HELLO");

        System.out.println(sb);

        
    }
}

 

 

 

▶ delete()

public class strbuilderDelete {

    public static void main(String[] args) {
        
        StringBuilder sb = new StringBuilder("Day");

        sb.append("Tuesday").append("Sunday").append("Wednesday");

        sb.delete(5, 8);

        System.out.println(sb);
    }
}

 

 

 

 

▶ append()

public class strbuilderAppend {

    public static void main(String[] args) {
        
        StringBuilder sb = new StringBuilder("day");

        StringBuilder a = sb.append(10);
        
        System.out.println(sb);
        if(a == sb){
            System.out.println("같다");
        }

        a.append("tuesday").append("sunday");

        System.out.println(a);
    }
}

 

 

 

 

참고 문헌 :

https://docs.oracle.com/javase/8/docs/api/index.html

반응형

'JAVA' 카테고리의 다른 글

[Java] VSC JAVA 개발 환경 구축  (0) 2022.06.03
[Java] Class  (0) 2022.06.02
[Java] Stack 구현  (0) 2022.05.31
[Java] Comment(주석), 클래스(class), 생성자, 정보은닉  (0) 2022.05.31
[Java] 리터럴(Literal), 연산자  (0) 2022.05.30