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”的应用;明白了这些也就知道为何得出此结果了。
分享到:
相关推荐
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
`str4=[str stringByReplacingOccurrencesOfString:@"sdgg" withString:@""];`将所有"sdgg"替换为空字符串,得到"fdfhjtyhdrfsdh"。 接下来,我们看`NSMutableString`,它是可变的字符串,允许我们在创建后进行修改...
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); 这样我们写入的数据...
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
论文学习资源ddddd
图像识别资源ddddd
项目源码资源ddddd
一个HTML5的 文件 关于朝鲜族的 是我们做期末成绩的东西
ApplicationContext context = new ClassPathXmlApplicationContext("test.xml"); // 获取邮件发送器 JavaMailSender mailSender = (JavaMailSender) context.getBean("mailSender"); // 创建邮件对象 ...
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")...
<html:checkbox value="aa" property="dddd">ddddd ``` ### Struts Bean标签库 #### `<bean:write/>` 用于显示JAVA BEAN或其属性的内容。如果只设置了`name`属性,表示输出已存在的变量值;如果同时设置了`name`...
总的来说,"网站小偷ddddd.zip"可能提供了一种工具或教程,帮助用户学习如何有效地抓取和下载网站内容。通过掌握这些技能,设计师和开发者可以更好地理解网络生态,但也应始终遵守伦理和法律规范。
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 = ...
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桌面管理程序dddd"指的是Redis Desktop Manager这款软件,可能是对软件的一种强调或者版本号的补充说明。描述中的"redis桌面管理程序"进一步确认了我们讨论的主题是针对Redis数据库的桌面版管理工具。 ...
rzsz源码包,也可以从网上直接下载,为了方便,就在这里放一个,不需要积分 ,这里放一个网盘链接:https://pan.baidu.com/s/19Kxcs1C26jEEmHiiYCcTHw 提取码:vrfn
在Python编程语言中,"py代码-用于生成ddddd" 的标题暗示了这是一个使用Python编写的脚本,其目的可能是创建或生成某种特定的数据结构、文件格式或者动态内容,而"ddddd"可能是项目或功能的代号,由于具体含义没有...
- `isNull(String str)`:判断字符串是否为空或只包含空格。 - `isNull(Long longs)`:判断Long对象是否为零或空。 ### 使用示例 下面是一些使用示例,帮助理解如何调用这些方法: ```java public static void ...