[계산] class OverLoadEx1 { public void print(int input) { System.out.println(input); } public void print(char input) { System.out.println(input); } public void print(String input) { System.out.println(input); } } public class Test28 { public static void main(String[] args) { OverLoadEx1 ex = new OverLoadEx1(); ex.print(100); ex.print('A'); ex.print("Hello"); } }
[결과값] 100 A Hello
this.○○ : 자기 변수를 호출하는 함수
class OverLoadEx1 {
int num1;
public OverLoadEx1(int num) {
this.num1 = num1;
}
…………………………………………………………………………
this() 생성자 : 생성자를 호출하는 함수
this(); : 가능
Song2(); : 불가능
String str1 = new String("Simple String");
String str2 = "The Best String";
String 인스턴스는 Immutable(불변) 인스턴스!
따라서 생성되는 인스턴스의 수를 최소화 한다.
[계산] public class ImmutableString { public static void main(java.lang.String[] args) { String str1 = "Simple String"; String str2 = "Simple String"; // str1,2는 문자열을 데이터값으로 바꾼 후 저장된 값이라 같은 값 // Method Area에 있는 메모리를 공유한다. String str3 = new String("Simple String"); String str4 = new String("Simple String"); // 참조 변수의 참조 값 비교 // str3,4는 주소값으로 저장되는데 주소값이 서로 다르므로 다름 if (str1 == str2) System.out.println("str1과 str2는 동일 인스턴스 참조"); else System.out.println("다른 인스턴스 참조"); // 참조변수의 참조 값 비교 if (str3 == str4) System.out.println("str1과 str2는 동일 인스턴스 참조"); else System.out.println("다른 인스턴스 참조"); ///////////////////////////////////////////////////////////////////////////// /* 타언어에서는 문자열 비교가 == 이지만, java에서는 equals를 사용한다 */ ///////////////////////////////////////////////////////////////////////////// if (str1 == str3) // 메모리 주소값을 불러와 false를 리턴한다. System.out.println("str1과 str3는 동일 인스턴스 참조"); else System.out.println("다른 인스턴스 참조"); if (str1.equals(str3)) // 원래는 메모리 주소값을 불러오지만, equals를 사용하면 안에 있는 String을 비교한다. // 안에 있는 문자열을 비교하여 true를 리턴한다. System.out.println("str1과 str3는 동일 인스턴스 참조"); else System.out.println("다른 인스턴스 참조"); } }
[결과값] str1과 str2는 동일 인스턴스 참조 다른 인스턴스 참조 str1과 str3는 동일 인스턴스 참조
*Immutable : 불변 인스턴스(String이 많은 데이터를 잡아먹기에 최적화를 위해 사용)
[계산] public class Switch { public static void main(String[] args) { String str = "two"; //String str = new String("two"); //switch문은 자동으로 equals를 호출해서 String 값을 불러온다. switch (str) { case "one": System.out.println("one"); break; case "two": System.out.println("two"); break; default: System.out.println("default"); } } }
[결과값] two
[계산] //concat은 단어를 이어준다. public class StringConcat { public static void main(String[] args) { String st1 = "Coffee"; String st2 = "Bread"; // private final byte[] value; // immutable불변 String st3 = st1.concat(st2); System.out.println(st3); String st4 = "Fresh".concat(st3); // Fresh : 주소값이 들어간다. System.out.println(st4); } }
[결과값] CoffeeBread FreshCoffeeBread