java中的字符串输出?

来源:百度知道 编辑:UC知道 时间:2024/09/24 12:25:02
String a="f";
String a="f";
String c=new String("f");
String d=new String("f");
System.out.print(a==b);
System.out.print(c==d);
为什么是输出的是一个对,一个错,他们有什么区别?
为什么字符串比较是否相同不能用==而要用equals?
String answer="y";
Scanner answer = new Scanner(System.in);
while(answer=="y"){
..............
...........
..........
String answer = input.next();
}
为什么第一次循环还能执行,到了下面输入y的时候就不能循环了?

“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】
equal用于比较两个对象的值是否相同【不是比地址】

【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。

"=="比"equal"运行速度快,因为"=="只是比较引用.

后面两个是你实例化的值一样但是它们在内存里面的地址并不一样

==:比较的是内存地址
而equals:比较的是值

你给你的例子是比较地址是否相同的。

a和b的"f"都在常量池,==比较常量池
c和b都不在常量池,equals比较对象地址,每个对象都有自己的地址