JAVA static method, string (230622)

이원건·2023년 6월 22일
0

JAVA

목록 보기
14/33
post-thumbnail

1. 아래의 Accumulator를 완성하시오.

  • 문제
for (int i = 0; i <= 10; i++)
	Accumulator.add(i); // 전달되는 값을 모두 누적
      
Accumulator.showResult(); // 최종 누적 결과를 출력 sum = 55
  • 코드
class Accumulator{
	private static int sum;
	
	public static void add(int i) {
		sum += i;
	}
	
	public static void showResult() {
		System.out.println("최종 값 : " +sum);
	}
}

public class ClassMethod {
	
	
	public static void main(String[] args) {

		for (int i = 0; i <= 10; i++)
	         Accumulator.add(i); // 전달되는 값을 모두 누적

	      Accumulator.showResult(); // 최종 누적 결과를 출력
		
	}
}
  • 결과
최종 값 : 55

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는 다른 인스턴스 참조");
  • 예측
  • literal로 대입한 str1과 str2은 먼저 "Simple String" 이라는 문자열을 method 영역의 constant pool에 올린다. 그리고 나서 str1에 주소값을 넣고 str2에도 literal로 대입했으니 constant pool에
    Simple String"에 해당하는 주소값을 넣는다.
  • new로 생성한 객체는 heap영역에 객체를 하나씩 따로 생성하면서 str3과 str4에 각각 주소를 집어 넣는다.
  • 그렇기에 str1과 str2는 같은 주소값을 가지고 str3과 str4는 다른 주소값을 가진다.
  • 코드
public class ImmutableString {
	public static void main(String[] args) {
		
		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는 다른 인스턴스 참조

0개의 댓글