首页 / JAVA / Java字符串实例化
Java字符串实例化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java字符串实例化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1412字,纯文字阅读大概需要3分钟。
内容图文
为什么此代码返回“false”而不是“true”:
package com.company;
public class Main {
public static void main(String[] args) {
String fullName = "Name Lastname";
String name = "Name ";
String lastName = "Lastname";
String firstNamePlusLastName = name + lastName;
System.out.println(fullName == firstNamePlusLastName);
}
}
如果我没记错的话:
String firstNamePlusLastName = name + lastName;
应该创建一个指向内存中现有地址的String(字符串池),因为我们已经声明了一个带有值的字符串:“Name Lastname”,不应该自动插入到字符串池中,输出不应该是“true” “既然我们已经在字符串池中使用与String firstNamePlusLastname相同的字符串?
编辑:
我知道在测试两个字符串的内容相等时我应该使用.equals()方法,但我不想在上面的例子中这样做,我实际上确实想测试引用相等性,并且基于Java实习两个我在上面的代码中比较的字符串应该相等,但它们不是,它们应该指向内存中的相同地址,因为它们具有相同的内容,并且两个字符串都不是使用“new”关键字创建的.我想知道为什么会这样.
解决方法:
字符串常量池在编译时创建.当你连接除最终参数之外的字符串文字/最终变量/最终字段时,它只使用池中的字符串,例如:
Concat Literals
String fullName = "Name Lastname";
String firstNamePlusLastName = "Name " + "Lastname";
System.out.println(fullName == firstNamePlusLastName);// true
Concat最终变量
String fullName = "Name Lastname";
final String name = "Name ";
final String lastName = "Lastname";
String firstNamePlusLastName = name + lastName;
System.out.println(fullName == firstNamePlusLastName);//true
内容总结
以上是互联网集市为您收集整理的Java字符串实例化全部内容,希望文章能够帮你解决Java字符串实例化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。