String类的intern()方法

public native String intern();

这个是在String类源码中申明的一个方法,是一个本地方法,返回的是一个String对象的引用。先看一下代码:

String s1="123";
String s2 = new String("123");
System.out.println(s1==s2);//false
System.out.println(s1==s2.intern());//true

s1==s2结果为false,这个不再详述。s1==s2.intern()为true,说明s1和s2.intern()返回的引用指向是同一个对象,我们知道new String("123")其实是创建了两个对象,当然因为s1="123"编译时已存在String池中,源码注释上这么描述,调用intern()方法时,首先会将对象"123"用equals

的比较方法,看是否已经存在,如果存在就返回这个对象对应的引用,如果没有就创建这么个对象,然后返回引用。

String s1=new String(“123”);
String s2=s1.intern();
System.out.println(s1==s1.intern());//false
System.out.println(s2==s1.intern());//true

上面一段代码,s1.intern()返回的引用指向的是String池中的对象,s1指向的是堆中的。

小结:String s =new String("123");会产生两个对象,获取String池中该对象的引用使用s.intern()便可。

String类的intern()方法,布布扣,bubuko.com

时间: 2024-08-03 07:07:12

String类的intern()方法的相关文章

了解String类的intern()方法

相信绝大多数的人不会去用String类的intern方法,打开String类的源码发现这是一个本地方法,定义如下: public native String intern(); 文档告诉我们该方法返回一个字符串对象的内部化引用. public String intern()返回字符串对象的规范化表示形式. 一个初始时为空的字符串池,它由类 String 私有地维护. 当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确

测试String类的intern方法

<pre name="code" class="java">package com.ckw.mianshi; /** * 测试String类的intern方法 * @author Administrator *intern():返回一个字符串,内容与此字符串相同,但它保证来自字符串池中. */ public class StringOfIntern { public static void main(String[] args) { /** * 例1 *

String类中intern方法的原理分析

一,前言 ? 昨天简单整理了JVM内存分配和String类常用方法,遇到了String中的intern()方法.本来想一并总结起来,但是intern方法还涉及到JDK版本的问题,内容也相对较多,所以今天就弥补昨天缺失的知识点. 二,String.intern() ? 先来看下网上流行的关于intern()方法的示例代码: public static void main(String[] args) { String s = new String("1"); s.intern(); St

Java技术——你真的了解String类的intern()方法吗

0.引言 转载请注明出处:http://write.blog.csdn.net/postedit/52291082 什么都先不说,先看下面这个引入的例子: String str1 = new String("SEU")+ new String("Calvin"); System.out.println(str1.intern() == str1); System.out.println(str1 == "SEUCalvin"); 本人JDK版本1

JAVA中String类的intern()方法的作用

一般我们平时很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: [java] view plaincopyprint? public static void main(String[] args) throws Exception { String a =  "b" ; String b =  "b" ; System.out.print( a == b); String c = "d" ;

java基础知识回顾之---java String final类之intern方法

public class StringObjectDemo { /** * @param args */ public static void main(String[] args) { String hello = "Hello", lo = "lo"; System.out.print((hello == "Hello") + " ");//true System.out.print((Other.hello == hel

java.lang.String 类的所有方法

java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定索引处的字符(Unicode 代码点). int codePointBefore(int index) 返回指定索引之前的字符(Unicode 代码点). int codePointCount(int beginIndex, int endIndex) 返回此 String 的指定文本范围中的 Un

关于JAVA的String类的一些方法

一.得到字符串对象的有关信息 1.通过调用length()方法得到String的长度. String str=”This is a String”; int len =str.length(); 2.StringBuffer类的capacity()方法与String类的 length()的方法类似,但是她测试是分配给StringBuffer的内存空间的大小,而不是当前被使用了的内存空间. 3.如果想确定字符串中指定字符或子字符串在给定字符串的位置,可以用 indexOf()和lastIndexO

【java】String类的基本方法

Java的String类基本方法 一.构造函数 函数 返回值 作用 String(byte[] bytes) String 通过byte数组构造字符串对象 String(char[] chars) String 通过char数组构造字符串对象 String(String string) String 拷贝一个值为string的字符串对象 String(StringBuffer buffer) String 通过StringBuffer构造字符串对象 二.String类的基本方法 函数 返回值 作