求帮忙分析java程序

importjava.util.*;publicclassA02{publicstaticvoidmain(String[]args){Strings1="Hello",... import java.util.*;
public class A02{
public static void main(String[] args){
String s1="Hello",s2="Hello",s3;
if(s1==s2){
System.out.println("1:Equal");
}
if(s1=="Hello"){
System.out.println("2:Equal");
}
Scanner sc=new Scanner(System.in);
s3=sc.nextLine();
if(s3=="Hello"){
System.out.println("3:Equal");
}
if(s3.equals("Hello")){
System.out.println("4:Equal");
}
}
}
请解释的详细点哦
1、第一行import java.util.*;是什么意思?
2、在运行程序时输入Hello,为什么输出结果只有4:Equal,而没有3:Equal
我没有说清楚,纠正一下:程序运行结果有1、2、4
展开
 我来答
mquree
2012-05-02 · TA获得超过102个赞
知道答主
回答量:124
采纳率:0%
帮助的人:107万
展开全部
import java.util.*; 是导入工具类
之所以只有 4:Equal
你不理解是因为你还没理解== 和iqials的区别
== 是比较地址 equals 是比较值
String s1="Hello",s2="Hello",s3;
if(s1==s2)

这么说吧!!有两个人 他们的名字都叫hello 但是他们的地址不一样
所以 s1 != s2
说明:那个if里面的"hello"相当于声明了一个新的对象
Scanner sc=new Scanner(System.in);
s3=sc.nextLine();
if(s3=="Hello")

if(s3.equals("Hello"))
这个的意思 是只比较他们的名字 不关心他们的地址!
不知道这么说你能理解么!

这个是从键盘获取输入的东西 同样 你输入的东西也作为了一个新对象 原理同上

if(s1=="Hello")
这个比较可以这么理解 s1 叫hello 现在又来了一个人 他的名字也叫hello 但是他的地址和s1 不在一起 所以 他们是 s1!="hello"

我弄错了!我的错!!
是这样的!!你创建了s1 = "hello" ,这样会在string 缓冲池中存放一个"hello"对象,当你在创建s2的时候 s2 = "hello" 那么 会现在缓冲池中找这个对象如果有的话 就把第二的对象的值也指向这里!!!
所以 s1 == s2
但是 你如果是这样的话
String s2 = new String("hello");他们就不一样了
追问
你好,程序运行结果有1、2、4,没有3,请重新解释为什么有1、2?
追答
你创建了s1 = "hello" ,这样会在string 缓冲池中存放一个"hello"对象,当你在创建s2的时候 s2 = "hello" 那么 会现在缓冲池中找这个对象如果有的话 就把第二的对象的值也指向这里!!!
所以 s1 == s2
但是 你如果是这样的话
String s2 = new String("hello");他们就不一样了
今天又喝粥
2012-05-03 · TA获得超过230个赞
知道小有建树答主
回答量:262
采纳率:50%
帮助的人:119万
展开全部
1.是导入另人封装好的类
2.Java字符串比对用的是equals方法,== 是不会成立的,它比对的是实例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Orange_Jinhuan
2012-05-02 · 超过15用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:35.6万
展开全部
1、import ...导入需要的java开发工具包,util是一个包,里面有很多类,这里使用到了,就要导入。 2、==表示引用相等,指向相同的引用,equal表示内容相同,这里s1,s2都是String对象,内容相同但指向了不同的堆栈,java中的对象都存储在堆栈中,s1和s2是值相同,但指向不同的引用,所以==为false, s1=="Hello",实则右边也创建了Hello对象,他们指向不同的引用,所以s1=="hello"和s3=="hello"都是false,使用equal则是正确的,两遍内容都是Hello,所以返回true。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cf21fe1
2012-05-02
知道答主
回答量:38
采纳率:0%
帮助的人:12万
展开全部

import java.util.*;是导入的包

==和equal()方法虽都应用于两个字符串,但所判断的内容是有差别的。

== 判断的是两个字符串对象在内存中的首地址,就是判断是否是同一个字符串对象

而equals()判断的是两个字符串对象的值

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式