2. 아래의 결과를 예측하고,이유를 설명하시오.
String str1 = "Simple String";
String str2 = "Simple String";
String str3 = new String("Simple String");
String str4 = new String("Simple String");
if(str1 == str2)
System.out.println("str1과 str2는 동일 인스턴스 참조");
else
System.out.println("str1과 str2는 다른 인스턴스 참조");
if(str3 == str4)
System.out.println("str3과 str4는 동일 인스턴스 참조");
else
System.out.println("str3과 str4는 다른 인스턴스 참조");
//예측값
str1과 str2는 동일 인스턴스 참조
str3과 str4는 다른 인스턴스 참조
- str1 과 str2 는 "Simple String" 이라는 동일 인스턴스에서 메모리 주소를 받아오기 때문에 true 값이 나왔다.
- str3 과 str4 는 String 함수로 새로 선언됐기 때문에 각자 새로운 메모리 주소를 할당받아서 false 값이 나왔다.
3. 2번의 메모리를 그리시오.
//2.사용자에게 받은 문자열을 역순으로 화면에 출력하는 프로그램을 작성하시오.
//
//
//-scanner 함수와
//-string 함수의 charAt() 함수를 이용해 볼것
//
//입력:abcde
//출력:edcba
private final static String ADDRESS = "의 메모리주소)";
private static void dataHashCode (char character) {
StringBuilder print = new StringBuilder();
print.append(System.identityHashCode(character));
print.append("(char \'");
print.append(character);
print.append("\'");
print.append(ADDRESS);
System.out.println(print);
}
private static void dataHashCode (String string) {
StringBuilder print = new StringBuilder();
print.append(System.identityHashCode(string));
print.append("(String \"");
print.append(string);
print.append("\"");
print.append(ADDRESS);
print.append("\n");
System.out.println(print);
}
public static void main(String[] args) {
System.out.println("Main2");
Scanner scanner = new Scanner(System.in);
System.out.print("역순으로 할 문자열을 입력해주세요: ");
String str = scanner.next();
dataHashCode(str);
int len = str.length();
String reverse = new String();
for (int i = (len - 1); i >= 0; i--) {
char character = str.charAt(i);
dataHashCode(character);
String stringFromCharacter = String.valueOf(character);
dataHashCode(stringFromCharacter);
reverse = reverse.concat(stringFromCharacter);
};
System.out.print("역순이 된 출력값은 다음과 같습니다: " + reverse + "\n");
dataHashCode(reverse);
scanner.close();
}
//출력
//
역순으로 할 문자열을 입력해주세요: abcde
274773041(String "abcde"의 메모리주소)
//
1629911510(char "e"의 메모리주소)
292917034(String "e"의 메모리주소)
//
242355057(char "d"의 메모리주소)
455538610(String "d"의 메모리주소)
//
1226622409(char "c"의 메모리주소)
1957502751(String "c"의 메모리주소)
//
1780132728(char "b"의 메모리주소)
1177377518(String "b"의 메모리주소)
//
1773206895(char "a"의 메모리주소)
1970881185(String "a"의 메모리주소)
//
역순이 된 출력값은 다음과 같습니다: edcba
1250391581(String "edcba"의 메모리주소)