求教一个java初级问题,是Why is "ture"? public class Exam { public static void main(String[] args) { System.out.println("ja" + "va" == "java"); }}为什么输出的是ture?谁能说下原理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么不是呢?先执行+,"java"=="java",执行了逻辑表达式,返回就ture了 因为 java 和 java 一样吗 呵呵因为你没有创建新的对象啊 如果用 new 做的话 就是false了只是简单的比较 不要想的很麻烦哦 再补充一点 例如public class DengTest{ public static void main(String [] args) { System.out.println(new String("ja")+new String("va")=="java"); }}就是false啦 首先,根据运算符的优先级计算了"ja" + "va" 得到的是字符串"java",此时"java"是个常量,同时你给出的"java"也是个常量,根据编译器的优化原则,这两个相同的常量就保存在同一地址里面。在进行==时是进行的逻辑比较。比较的是他们的地址。所以进行了==后表达式为true。如果用equals的话,进行的就是实际字符串的比较。字符串相等就等,不等就不等。 http://topic.csdn.net/u/20071117/11/262787bb-57ec-4a9b-9e0b-38785319fc54.html?569438221http://topic.csdn.net/u/20081129/21/050c006b-e41f-45af-aa2f-120ca4d6e55d.html?93299 "ja" + "va" == "java" 是比较表达式,结果只有两个值“true”和“false”。 "ja" + "va" 和"java"都是字符串常量在内存中的地址是一样的,当然是true了 /** * 字符串常量测试 */package net.csdn.blog.johnsnton;/** * @author Administrator * */public class TestString { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str1 = "java"; //字符串常量 String str2 = new String("java"); //字符串对象 System.out.println(str1 == str2); System.out.println("ja" + "va" == "java"); }}运行结果:falsetrue 俩常量都被存储在栈中,java会预编译成一字符串java,所以比较起来就是true` csdn出什么问题了?结了的贴还在待解决区? 运行浏览器小程序时,出现:Cannot run program "IeEmbed.exe":错误, JAVA新手 窗口的右键弹出菜单程序 讨论一下 \r(回车)和\n(换行)的区别 think in java 4 习题答案 求:输入汉字,自动输出拼音简码的现成JAVA代码 关于javadoc Java 中的命令行参数怎么用代码行来表示? 请问java.sql.Date()操作方法谢谢。 Java导出的可执行包在控制台可以正常运行,转换成exe后不能正常运行完 有关异常类问题 sql 语句 从 oracle 数据库中取值
只是简单的比较 不要想的很麻烦哦
例如
public class DengTest
{
public static void main(String [] args)
{
System.out.println(new String("ja")+new String("va")=="java");
}
}
就是false啦
此时"java"是个常量,同时你给出的"java"也是个常量,根据编译器的优化原则,
这两个相同的常量就保存在同一地址里面。
在进行==时是进行的逻辑比较。比较的是他们的地址。所以进行了==后表达式为true。如果用equals的话,进行的就是实际字符串的比较。字符串相等就等,不等就不等。
http://topic.csdn.net/u/20081129/21/050c006b-e41f-45af-aa2f-120ca4d6e55d.html?93299
在内存中的地址是一样的,
当然是true了 /**
* 字符串常量测试
*/
package net.csdn.blog.johnsnton;/**
* @author Administrator
*
*/
public class TestString { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "java"; //字符串常量
String str2 = new String("java"); //字符串对象
System.out.println(str1 == str2);
System.out.println("ja" + "va" == "java");
}}
运行结果:
false
true