
求帮忙分析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 展开
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 展开
4个回答
展开全部
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");他们就不一样了
之所以只有 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");他们就不一样了
展开全部
1.是导入另人封装好的类
2.Java字符串比对用的是equals方法,== 是不会成立的,它比对的是实例。
2.Java字符串比对用的是equals方法,== 是不会成立的,它比对的是实例。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、import ...导入需要的java开发工具包,util是一个包,里面有很多类,这里使用到了,就要导入。 2、==表示引用相等,指向相同的引用,equal表示内容相同,这里s1,s2都是String对象,内容相同但指向了不同的堆栈,java中的对象都存储在堆栈中,s1和s2是值相同,但指向不同的引用,所以==为false, s1=="Hello",实则右边也创建了Hello对象,他们指向不同的引用,所以s1=="hello"和s3=="hello"都是false,使用equal则是正确的,两遍内容都是Hello,所以返回true。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询