(문자열) String의 불변 모드

2302 단어
String의 불변 모드: 기본 데이터 형식 String의 경우 실행 중 상태가 영원히 바뀌지 않습니다.불변 모드: 문자열 대상이 만들어진 후 그의 값은Stringstr1="hello";//객체를 작성해도 그의 값은 System을 변경하지 않습니다.out.println(str1);str1+="world!";//두 문자열의 대상이 끈적끈적한데 시스템은 사실 새로운 대상을 만들었고Str1의 지향을 바꾸었고 새로운 대상을 지향했다.hello는//쓰레기가 된다.System.out.println(str1);//만약 계속 이렇게 창설한다면 시스템의 효율에 영향을 줄 것이다.문자열 대상의 값을 빈번하게 바꾸려면StringBuffer로 설명하기;StringBuffer sb=new StringBuffer("[");sb.append("hehe");
sb.append("]");//append();쓰레기를 만들지 않고 sb의 값을 바꾸고 있습니다.System.out.println(sb);
2. 대상지
 
Object obj = new Object();
obj는 객체의 참조입니다. 객체는 스택에 있고 new Object()는 객체이며 스택에 있습니다.(객체 롤업, 변수 롤업)
obj는 풍선에 매달린 밧줄이고, new Object()는 풍선이라는 것을 이렇게 이해할 수 있다. 우리는 대상의 인용을 통해 우리가 밧줄을 잡고 있어야 풍선이 도망가지 않는다.
String을 만드는 방법은 두 가지가 있습니다. 하나, String str=new String("abc"). 2, String s="def";두 가지 방법이 모두 String 대상의 인용이지만 자바 가상기 jvm는 이 두 가지 대상을 처리하는 방식이 다르기 때문에 첫 번째 jvm는 Heap에서 대상을 만들고 이 대상의 인용을 고객에게 되돌려준다.두 번째, jvm는 먼저 String 대상 탱크에서 String의 equals 방법을 통해 대상 탱크에 이 String 대상을 저장했는지 찾습니다. 만약에 있으면 기존의 대상의 인용을 고객에게 되돌려주고 Heap에 새로운 대상을 만들지 않습니다. 대상 탱크에 이 String 대상이 없으면 jvm는 Heap에 새로운 대상을 만들고 그의 인용을 고객에게 되돌려주며 이 인용을 String pool,첫 번째 방법으로 만든 대상은 jvm에서 String 대상을 대상 탱크에 넣지 않습니다. String의 인터넷 방법을 사용하지 않으면
 
package learn;

public class AutoBox {
public static void main(String[] args) {
	Integer integer=12;
	System.out.println(integer+13);
	
	Integer i1=13;
	Integer i2=13;
	Integer i3=137;
	Integer i4=137;
	System.out.println(i1==i2);
	test();
	
}
	public static void test(){
		String str=new String("abc");//jvm 
		//jvm String pool 'abc‘ , String , 
		// String pool , String 
		String s="abc";
		if(str==s){
			System.out.println("str==s");
		}else{
			System.out.println("not");
		}
		String s3="abc";
		// ,jvm String pool “abc" , s   s3
		// s s3 
		if(s==s3){
			System.out.println("s==s3");
		}else{
			System.out.println("s!=s3");
		}
	}
}

 
즉, 하나의 문자열에 대해 어떤 조작이 되돌아오는 대상은 문자열 자체가 아니라 새로운 대상이다
 
 
 
 

좋은 웹페이지 즐겨찾기