一、分析
Java为了避免在一个系统中大量产生String对象,于是就设计了一个字符串池(也有叫做字符串常量池),在字符串池中所容纳的都是String字符串对象。
String创建规则:创建一个字符串时,首先没有检查池中是否有字面值相等的字符串。
如果有,则不再创建,直接返回池中该对象的引用。
如果没有则创建之,然后放到池中,并返回新建对象的引用。
二、场景
实例程序:
public class Suggestion52 { public static void main(String[] args) { String str1 = "中国"; String str2 = "中国"; String str3 = new String("中国"); String str4 = str3.intern(); //两个直接量是否相等 boolean b1 = (str1 == str2); //直接量和对象是否相等 boolean b2 = (str1 == str3); //经过intern处理后的对象与直接量是否相等 boolean b3 = (str1 == str4); System.out.println(b1); System.out.println(b2); System.out.println(b3); } }
创建str1时,字符串池中没有对象,则创建"中国"字符串放到池中,待再创建str2时,池中已经存在对象,则返回该对象的引用。则str1==str2为真。
创建str3时,直接声明一个String对象,不检查字符串池,也不会把对象放到池中,所以str3==str1为假。
创建str4时,intern会检查当前对象在对象池是否有字面值相同的引用对象,如果有则返回对象,如果没有则放置到对象池中,并返回当前对象。所以str1==str4为真。
利用对象池,可以提高效率,同时也减少了内存空间。
三、建议
String对象的生成方式有两种:
1.通过new关键字生成,String str3 = new String(“中国”);
2.直接声明,如:Str str = "a"。
对于String对象来说,极力推荐使用直接声明的方式。
相关推荐
java代码-使用java增强for循环 string数组赋值的源代码 ——学习参考资料:仅用于个人学习使用!
直接赋值方式,例如:String s1= "Welcome to Java"; 含义:字符串常量直接初始化一个String对 象,赋值给引用变量,s1指向字符串对象。 字符串变量中存储的是对象的地址。 例 1: String str = "Hello Java"; // ...
java.lang.NumberFormatException For inputstring 4294967295处理方法
Write a program called String1.java and do the following: Create a String object that accepts input from the user. Referencing the JDK docs, execute 2 different methods on the String. Print the ...
解决 java.lang.NoSuchFieldError: STRING at org.jbpm.identity.hibernate.PermissionUserType. 不用jbpm的jbpm-identity.jar 用这个就好
String直接赋值与使用new String的区别description: 研究String直接赋值与new String的区别原文标题:String直接赋值
本程序提供了std::string 类型的Format格式化函数,以及两种格式化string字符串的方法,主方法在str.hpp文件中,测试文件在string_format.cpp中,已测试可用
附件解决dbf读取文件时遇到乱码问题,下载下来可以直接使用,无需使用dbf的jar包了,可以直接使用.
一、QString赋值给char* 例如: QString qstr; char *str = qstr.toLatin1().data();//这样便把qstr中的值传给了str 二 、char [] 赋值给string char str[32]; string str2(str);//这样便把str中的值传给...
dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中
Java String 类型 API 测试代码 1.String和char[]之间的转换 toCharArray(); 2.String和byte[]之间的转换 getBytes() Arrays工具类 : Arrays.toString(names) String类 String replace(char oldChar, ...
下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。
String message = “Welcome to Java”; System.out.print(message.length()); //输出字符串长度15 返回字符串中字符的个数,即长度。中文、英文都算作一个字符。 其语法形式如下:字符串名.length(); 例1:在某系统...
java编程中对字符串的各种方式的处理,包括(空字符串处理、判断是否是空字符串 null和"" 都返回 true、 把string array or list用给定的符号symbol连接成一个字符串、 判定第一个字符串是否等于的第二个字符串中的某...
java String 使用详解,看完对String 的用法完全掌握
(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...
讲解String.xml标签在布局文件中及java代码中的引用
java字符串转String数组简单实例,简单但很实用
JAVA 对word 内容的提取返回String 的代码 两种方式详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分