java 数组和对象的问题。 这个代码哪里有问题啊,主要是想修改。但是都没变化。。
publicvoidmodifyStudent(Student[]stu){Scanners=newScanner(System.in);System.out.print...
public void modifyStudent(Student[] stu) {
Scanner s = new Scanner(System.in);
System.out.println("输入一个你要修改的人的名字:");
String you = s.next();
System.out.println("输入一个修改后的人的名字:");
String your = s.next();
for (int i = 0; i < stu.length - 1; i++) {
if (stu[i]!= null && you==stu[i].name) {
stu[i].name = your;
break;
}
}
} 展开
Scanner s = new Scanner(System.in);
System.out.println("输入一个你要修改的人的名字:");
String you = s.next();
System.out.println("输入一个修改后的人的名字:");
String your = s.next();
for (int i = 0; i < stu.length - 1; i++) {
if (stu[i]!= null && you==stu[i].name) {
stu[i].name = your;
break;
}
}
} 展开
4个回答
展开全部
那些说String类型比较必须用String.equals方法的人,都不是正解。
你这个代码是一个片段,说明不了你具体的问题是什么,大概的功能是,你输入一个要修改的名字,然后输入一个修改后的名字,把修改后的名字覆盖到要修改的名字上。
看以下代码
String a = "A";
String b = "A";
return a==b;
返回的结果是true。过程如下:String a = "A"; 会去 内存的 栈 内找 存储 "A” 的地址,如果未找到,那么划分一块内存,用于储存 "A",并将句柄指向 a 变量。同理,String b = "A”,去找,因为已经存在了,所以,不会划分内存,直接将 b 变量指向 a变量的内存地址。
所以,a == b,内存地址一样,返回的是true。
String a = new String("A");
String b = new String("A");
return a == b;
返回的结果是false。因为通过new关键字,创建的变量将在 堆 内储存。每new一次,都会单独开辟一块内存空间。所以, a == b,地址并不相同,返回结果false。
以上两种情况下,return a.equals(b) 和 return b.equals(a) 返回的结果都是true.因为,不管他们存储的地址,他们的值都是 "A"。
以上
你这个代码是一个片段,说明不了你具体的问题是什么,大概的功能是,你输入一个要修改的名字,然后输入一个修改后的名字,把修改后的名字覆盖到要修改的名字上。
看以下代码
String a = "A";
String b = "A";
return a==b;
返回的结果是true。过程如下:String a = "A"; 会去 内存的 栈 内找 存储 "A” 的地址,如果未找到,那么划分一块内存,用于储存 "A",并将句柄指向 a 变量。同理,String b = "A”,去找,因为已经存在了,所以,不会划分内存,直接将 b 变量指向 a变量的内存地址。
所以,a == b,内存地址一样,返回的是true。
String a = new String("A");
String b = new String("A");
return a == b;
返回的结果是false。因为通过new关键字,创建的变量将在 堆 内储存。每new一次,都会单独开辟一块内存空间。所以, a == b,地址并不相同,返回结果false。
以上两种情况下,return a.equals(b) 和 return b.equals(a) 返回的结果都是true.因为,不管他们存储的地址,他们的值都是 "A"。
以上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题出在字符串的比较上面,String 的比较最好使用 equals。
所以你的比较代码应该是
you.equals( stu[i].name)
这样就可以解决了。
所以你的比较代码应该是
you.equals( stu[i].name)
这样就可以解决了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
you==stu[i].name,字符串的比较用equals方法。
you.equals(stu[i].name)
you.equals(stu[i].name)
更多追问追答
追问
我们这个还没教呢。
追答
没教?那你们学没学String类啊?
学了String类,equals方法应该是重点说明的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把代码贴全了,这个片段看不出啥名堂来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询