2 gongsunshu Gongsunshu 于 2016.05.07 20:32 提问

JAVA新建同类的两个不同名对象,调用同一个方法,传入值不同,变量不改变,遇到鬼了??

代码如下,新手,只找到了问题语句,不知为什么,前辈们帮忙看一下,怎么回事这是?
1、main入口:
public class mainSelectClassSyste{
public static void main(String[] args) {
IStudentDao studentDao=new StudentDao();
Student student2=new Student(2, "HT142102", "石榴", "女", "1983-09-28",
"182-****-6563", "上海市浦东外高桥自贸区草高支路87号");
studentDao.insert(student2);
Student student1=new Student(1, "HT142101", "黄桃", "女", "1986-11-28",
"182-****-6836", "上海市徐汇区漕东支路95号");
studentDao.insert(student1);

}

}

2.
package com;

public class StudentDao implements IStudentDao{

private Student[] students=new Student[100];
public StudentDao(){
    super();
}

public boolean insert(Student student){
    for(int i=0;i<100;i++){
        if(students[i]==null)
        this.students[i]=student;
        break;
    }
    for(int i=0;i<students.length;i++){
        System.out.println(students[i]);
    }
    return true;
}
}

3.控制台运行结果:
Student [编号=2, 学号=HT142102, 姓名=石榴, 性别=女, 出生日期=1983-09-28, 电话=182-****-6563, 地址=上海市浦东外高桥自贸区草高支路87号]
null
null
..................
    null
    null
    Student [编号=2, 学号=HT142102, 姓名=石榴, 性别=女, 出生日期=1983-09-28, 电话=182-****-6563, 地址=上海市浦东外高桥自贸区草高支路87号]
null
null

值没有发生改变,这是为什么啊?一头雾水。
新人,没有金币。。。。。。。。。

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.05.07 20:44
已采纳
 for(int i=0;i<100;i++){
        if(students[i]==null){//注意括号的if范围
           this.students[i]=student;
          break;
                }
    }
danielinbiti
danielinbiti 回复Gongsunshu: if(students[i]==null) this.students[i]=student; break;这么写,if只作用到this.students[i]=student;,不会包括break,也就是for循环只会执行一次,执行一次后就跳出了,所以第二次赋值怎么也不会执行
大约 2 年之前 回复
Gongsunshu
Gongsunshu 什么意思啊?能详细说说吗?
大约 2 年之前 回复
Gongsunshu
Gongsunshu   2016.05.07 21:03

少写了一个花括号,判断语句没起作用。。。。。。。。。。。。。

Even_sneck
Even_sneck   2016.05.08 01:38

基础很差呀,java不是这么玩得。
1、逻辑乱
for(int i=0;i<100;i++){
if(students[i]==null)
this.students[i]=student;
break;
}
这代码想做什么?bug一堆。
1.1 if后面没有使用{}把后面两句包含起来
1.2 break不能乱用,break是结束整个循环的,按你的意思,这里应该使用continue
1.3这一整段代码一点用都没有,去掉

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java中复制两个不同类的对象的属性
Apache的开源包BeanUtils用来复制两个对象的属性,要使用这个Apache的开源包,要先去官网下载commons-beanutils-1.X.jar包,http://www.apache.org/ 然后点击Apache Projects下面的链接Commons,可以找到链接BeanUtils,点击进入后就可以看到下载了。 ——BeanUtils.copyProperties()与Prop
同一包(package)下,两个不同类的调用操作详解
被调用类: package com.huawei.test; public class B{      String sex="男"; } 调用类: package com.huawei.test; public class A {     public static void main(String[] args) {
经验总结-1-不同类之间调用彼此方法的几种情况
1.在A类中使用B类中方法C,并且B类挂在一个游戏对象D上,且方法C内需要用到此所挂的游戏对象D自身的属性,则在A类中声明一个d,将游戏对象D拖到这个d上,写下如下代码:d.getComponent().C(); 2.在A类中使用B类中方法C,此时B类并没有挂在任何游戏对象上,则在A类中声明一个B,写下如下代码:B b = new B();  b.C();
不同类如何共享同一个变量
我需要共享一个复杂的变量 基类: class A    {   static struct Map{      //.....多个变量   }map[4][4]; //需要共享这个 } 如何在其子类中共享它。 我试过了简单的变量类型如:int ,在基类中初始化,在子类中是能共享的,但这个复杂的怎么弄? ------解决方案------------
复制两个不同类型对象的相同字段的值
需求的来源是项目。每次做项目,都要建立很多的数据体,有的是数据库表产生的ORM,有的是网络请求的参数体,有的是网络接口调用给的返回数据返回数据体。同一种数据,这几种数据具体的结构并不一样。ORM旺旺跟数据表一致,并且做了映射。但是外键数据只有id,并不详细,前端调用的数据旺旺要求比ORM更丰富,有些则不需要。虽说可以建立一些与ORM无关的字段来用,但是字段多了会很麻烦,所以需要建立专用的VO数据类
java 同一个类下的不同方法的变量之间的引用
比方说public int A(){ return array[];  } 另一个方法public void B(){ } B方法中要用到array[]数组。 这种情况下如果是同一个变量,可以通过以下方法来定义,就可以随时被引用。方法一:定义为 static的,这样的话,就会初始化到内存中,直接引用变量名称即可获取到值。方法二:定义为final static的,这样的话,也
不同的类中怎样共享一个对象
不同类中怎样共享一个对象
关于java不同类之间的数据共享
<br />经常性的在不同类之间 需要共享一些数据。<br />为了解决这个问题,我之前的解决办法是将要共享的数据所在的类作为一个参数传入,这样便可以获取,但是这种方法不是很好。比较累赘。<br />第二种解决办法是创建一个类。该类存放所有要共享的数据,将这些设置为静态,这样需要用到的时候便可以简单获取即可。这种方法简洁而且高效。<br /> <br />例子:<br />package indexd; public class Constans { public final static Stri
java 对象传入到函数原对象不改变 值传递 引用传递
背景: 做项目的时候,将一个空对象的引用传入到方法中,期待方法里面创建一个新的对象给这个引用,后面就可以拿着这个对象用了。    可结果就是,定义在外面的对象引用并没有拿到这个引用 demo.java public class Entry { public static void main(String[] args) { List re
java中如何理解多个对象共享同一个静态成员变量(多个实例的static变量会共享同一块内存区域)
最近读《研磨设计模式》对这段话不太理解: Java 中 static 的特性: „ static 变量在类装载的时候进行初始化。 „ 多个实例的 static 变量会共享同一块内存区域。 做了个例子验证一下 例子: class A { static int num = 1; private String name; public String getName(St