`

String str=”dddd”; String str=new String("ddddd")

 
阅读更多

1.String str=”kvill”; String str=new String (“kvill”);的区别:

 

 

String str=”kvill”; String str=new String (“kvill”);的区别:   
在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。   
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。   
看例1:
String s0=”kvill”;
String s1=”kvill”;
String s2=”kv” + “ill”;
System.out.println( s0==s1 );
System.out.println( s0==s2 );   
结果为: true true   

首先,我们要知道Java会确保一个字符串常量只有一个拷贝。   
因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。   所以我们得出s0==s1==s2;   用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。
  
看例2:
String s0=”kvill”;
String s1=new String(”kvill”);
String s2=”kv” + new String(“ill”);
System.out.println( s0==s1 );
System.out.println( s0==s2 );
System.out.println( s1==s2 );   
结果为: false false false
  
例2中s0还是常量池中”kvill”的应用,s1因为无法在编译期确定,所以是运行时创建的新对象”kvill”的引用,s2因为有后半部分new String(“ill”)所以也无法在编译期确定,所以也是一个新创建对象”kvill”的应用;明白了这些也就知道为何得出此结果了。


分享到:
评论

相关推荐

    VBA中采用正则表达式的四则运算

    sstr = "HArccotan(ddddd-eeeee*1000*(sqrt(-2000)-aaaa)-cos(dddd+sin(ddd*1122)))-floor(222)*20000*int(ddd)" str = sstr i = 0 action: Set mc = r.Execute(str) If mc.Count = 0 Then GoTo e

    OC增删改查

    `str4=[str stringByReplacingOccurrencesOfString:@"sdgg" withString:@""];`将所有"sdgg"替换为空字符串,得到"fdfhjtyhdrfsdh"。 接下来,我们看`NSMutableString`,它是可变的字符串,允许我们在创建后进行修改...

    将度分(ddmm.mmmm)的坐标转换为常用坐标(dd.ddddd)

    GNSS NMEA 格式的坐标(ddmm.mmmmm)转换为原始 GPS 格式

    用文本文件制作留言板提示(上)

    如是我们得到数据形如: $str=”aaaaa&bbbbb&ccccc&ddddd”; 在将数据写入文件前我们加上 $str=$str.”\r\n” 然后执行: $fp=fopen(txt/mytxt.txt,a); fwrite($fp,$txt); fclose($fp); 这样我们写入的数据...

    一道华为的面试题 关于JAVA来的

    TestCurlyBraces instance = new TestCurlyBraces(); String input = "asda{asd{fsfsff}sdfab245}2{32}"; instance.match(input); } public void match(String input) { Matcher match = pattern.matcher...

    111111DDDDD

    111111DDDDD

    论文学习资源ddddd

    论文学习资源ddddd

    图像识别资源ddddd

    图像识别资源ddddd

    项目源码资源ddddd

    项目源码资源ddddd

    html5ddddd

    一个HTML5的 文件 关于朝鲜族的 是我们做期末成绩的东西

    SSH框架实现发送电子邮件的两种方法

    ApplicationContext context = new ClassPathXmlApplicationContext("test.xml"); // 获取邮件发送器 JavaMailSender mailSender = (JavaMailSender) context.getBean("mailSender"); // 创建邮件对象 ...

    Android 对Map按key和value分别排序的实例

    Map<String, String> map = new TreeMap(new Comparator<String>() { @Override public int compare(String obj1, String obj2) { // 降序排序 return obj2.compareTo(obj1); } }); map.put("b", "ccccc")...

    Struts标签的使用说明

    <html:checkbox value="aa" property="dddd">ddddd ``` ### Struts Bean标签库 #### `<bean:write/>` 用于显示JAVA BEAN或其属性的内容。如果只设置了`name`属性,表示输出已存在的变量值;如果同时设置了`name`...

    网站小偷ddddd.zip

    总的来说,"网站小偷ddddd.zip"可能提供了一种工具或教程,帮助用户学习如何有效地抓取和下载网站内容。通过掌握这些技能,设计师和开发者可以更好地理解网络生态,但也应始终遵守伦理和法律规范。

    RTXServer 应用开发指南

    Private Sub SmsObj_OnSendSmsMessage(ByVal szSender As String, ByVal szSmsSender As String, ByVal szRecvMobiles As String, ByVal szMsg As String, ByVal szCookie As String) txtRecvSmsMsg.Text = ...

    2012计算机二级C上机题库答案.doc

    STYPE s[10] = {{1, "aaaaa", "111111"}, {1, "bbbbb", "222222"}, {1, "ccccc", "333333"}, {1, "ddddd", "444444"}, {1, "eeeee", "555555"}}; int k; k = fun(s); if (k == 1) { printf("Succeed!")...

    redis桌面管理程序ddddd

    标题"redis桌面管理程序dddd"指的是Redis Desktop Manager这款软件,可能是对软件的一种强调或者版本号的补充说明。描述中的"redis桌面管理程序"进一步确认了我们讨论的主题是针对Redis数据库的桌面版管理工具。 ...

    rzsz源码包ddddd

    rzsz源码包,也可以从网上直接下载,为了方便,就在这里放一个,不需要积分 ,这里放一个网盘链接:https://pan.baidu.com/s/19Kxcs1C26jEEmHiiYCcTHw 提取码:vrfn

    py代码-用于生成ddddd

    在Python编程语言中,"py代码-用于生成ddddd" 的标题暗示了这是一个使用Python编写的脚本,其目的可能是创建或生成某种特定的数据结构、文件格式或者动态内容,而"ddddd"可能是项目或功能的代号,由于具体含义没有...

    史上最全Java表单验证封装类

    - `isNull(String str)`:判断字符串是否为空或只包含空格。 - `isNull(Long longs)`:判断Long对象是否为零或空。 ### 使用示例 下面是一些使用示例,帮助理解如何调用这些方法: ```java public static void ...

Global site tag (gtag.js) - Google Analytics