10일차: JAVA String

jk·2024년 1월 12일
0

kdt 풀스택

목록 보기
16/127



1.immutable 에 대하여 설명하시오.

  • 변하지 않는 값이다.
  • Java 에서는 흔히 final 로 표현한다.



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"의 메모리주소)

profile
Brave but clumsy

0개의 댓글