String internal() 방법
3466 단어 String
public String intern()은 문자열 객체의 정규화된 표현 형식을 반환합니다.클래스 String이 개인적으로 관리하는 비어 있는 문자열 풀인터넷 방법을 호출할 때, 만약 풀에 이 String 대상과 같은 문자열이 포함되어 있다면, (이 대상은 equals (Object) 방법으로 확정됨) 풀의 문자열을 되돌려줍니다.그렇지 않으면 이 String 객체를 풀에 추가하고 이 String 객체의 참조를 반환합니다.이것은 두 문자열의 s와 t를 따른다. s.equals (t) 가true일 때만 s.intern () = t.intern () 이true이다.모든 문자열과 문자열 값 상수 표현식은 내부적입니다.문자열 면 값은 Java Language Specification의§3.10.5에 정의되어 있습니다.되돌아오기: 문자열의 내용은 이 문자열과 같지만, 문자열 탱크에서 오는 것을 보장합니다.
package section13_3;
public class StringMethod {
public static void main(String[] args) {
String str = "abc";
String str1 = new String("abc");
System.out.println(str.equals(str1)); //true
System.out.println(str == str1); //false
String str2 = "qq";
String str3 = new String("qq").intern();
System.out.println(str2.equals(str3)); //true
System.out.println(str2 == str3); //true
String str4 = "lancelot";
String str5 = new String("lancelot");
System.out.println(str4.equals(str5)); //true
System.out.println(str4 == str5); //false
// intern() str5
str5.intern();
System.out.println(str4.equals(str5)); //true
System.out.println(str4 == str5); //false
String str6 = new String("zyp");
String str7 = new String("zyp");
// , false
// str7 = str7.intern();
System.out.println(str6 == str7); //false
System.out.println(str6.equals(str7)); //true
}
}
괜찮은 글:http://bbs.csdn.net/topics/190153906
String.intern(); 존재class 파일의 상수 탱크입니다. 실행 중 jvm에 불러오고 확장할 수 있습니다.String의 인터넷 () 방법은 상수도를 확충하는 방법이다.String 실례str가 인터넷 () 방법을 호출할 때, 자바는 상수 탱크에 같은 유니버설 문자열의 상수가 있는지 찾고, 없으면 인용을 되돌려줍니다. 그렇지 않으면 상수 탱크에 유니버설과str의 문자열을 추가하고 인용을 되돌려줍니다.
예3:
String s0=”kvill”;
String s1=new String(“kvill”);
String s2=new String(“kvill”);
System.out.println(s0==s1);
S1.intern();
S2=s2.intern();
System.out.println(s0==s1);
System.out.prntln(s0==s1.intern());
System.out.println(s0==s2);
결과: False False//s1이 수행되었지만intern (), 그러나 반환 값이 s1 True True에 부여되지 않았습니다. 마지막으로 잘못된 이해를 깨뜨렸습니다."String.intern () 방법을 사용하면 하나의 String 클래스를 전역 String 테이블에 저장할 수 있습니다. 같은 값을 가진 유니버설 문자열이 이 테이블에 이미 있다면, 이 방법은 테이블에 있는 문자열의 주소를 되돌려주고, 테이블에 같은 값의 문자열이 없으면 자신의 주소를 테이블에 등록합니다."이 전역 String 테이블을 상량으로 이해하면마지막으로'표에 같은 값의 문자열이 없으면 자신의 주소를 표에 등록한다'는 말은 틀렸다.
예4:
String s1=new String(“kvill”);
String s2=s1.intern();
System.out.println(s1==s1.intern());
System.out.println(s1+” ”+s2);
System.out.println(s2==s1.intern());
결과:False Kvill kvill True 우리는 "kvill"상수를 성명하지 않았기 때문에 상수 탱크에는 처음에 "kvill"이 없었습니다. 우리가 s1을 호출할 때.() 이후 상량 탱크에'kvill'상량을 새로 추가했습니다. 원래 상량 탱크에 없는'kvill'은 여전히 존재합니다.'자신의 주소를 상량 탱크에 등록하는 것'도 아닙니다.
예5:
String str1="java";
String str2="blog";
String s=str1+str2;
System.out.println(s=="javablog");
결과는false입니다.Jvm는 String str1="java"와 같은 유형이 맞습니다.의 String 대상은 상수도에 놓여 있지만, 컴파일할 때 그렇게 하는 것이고, String s=str1+str2;실행할 때 알 수 있습니다. 즉str1+str2는 무더기에서 만들어졌기 때문에false가 되었습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Access Request, Session and Application in Struts2If we want to use request, Session and application in JSP, what should we do? We can obtain Map type objects such as Req...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.