已采纳回答 / Tuboss
原因出在你的第二行代码用于用的addAll(1, Arrays.asList(courses2));的方法,你这行代码的意思是讲课程数组courses2中的两门课程从“1”这个位置开始放,也就是说:你添加的高等数学,和大学英语就位于课程列表的1和2位置上;此时你前面添加的3和4位置的上的离散数学和汇编语言就被挤在5和6的位置,然后你调用你截图中的3、4行代码。自然获取就是离散数学和汇编语言;;在分析你输出结果的第三行内容。按照惯性思维会认为输出原来1、2位置上被挤下来的两门课也就是(C语言和离散数学);但...
2015-10-05
已采纳回答 / 异新世
String s角标越界, for (int i=1;i<=s.length();i++ ), s.length()是字符个数,角标是从0开始,所以s的最大角标是s.length()-1, 所以s.charAt(i),取到s.charAt(s.length())时越界,抛出java.lang.StringIndexOutOfBoundsException,即String索引越界异常
2015-09-29
已采纳回答 / 无动于衷
接口是不能实例化的,但是接口的实现类可以,实现类的实例可以用接口的引用接受,像是这样:List<Student> list = new ArrayList<Student>();也可以这样定义属性:private List<Student> list;只要list后来指向一个实现类的实例就可以了:list = new ArrayList<Student>();
2015-09-24
已采纳回答 / 无动于衷
那要看调用equals()方法的对象所对应的类 里的equals方法是怎么写的了。举个例子。一般的类没有重写Object类的equals()方法,比如你随便定义一个类Student,那么当我Student t = new Student();t.equals(??)这里就会调用父类的equals()方法。Object类里的equals方法比较的是地址,所以我写的这个类比较的也是地址。而有些类为了一些使用上的方便合理,于是便重写了equals()方法。比如String类,当我们使用字符串时,当他们内容相同时...
2015-09-23
已采纳回答 / 无动于衷
map以简直对的形式存放数据。<K,V>这里的Key程序里定义的是Student的id,Value存放的是这个Student对象。你理解出错的地方时:get(ID)这个方法,这里参数是ID而不是得到的是ID!,get(K)是map中的一个方法,会得到K对应的V值,也就是得到这个ID对应的Student对象。输入ID,得到这个Student!好好想想把,弄明白参数和返回类型!
2015-09-22
已采纳回答 / 无动于衷
首先你要了解Override的范围!Overide只在当前类或子类中生效!第一个例子里,你重写的是Student类的compareTo()方法,那么当你用一个Student对象去调用这个方法时,执行的就是你Student里重写的方法,这个你应该是明白的。那么看方法中间的代码,return this.getId().compareTo(o.getId);这里的this.getId()是String类型的,而String类里的compareTo()方法并没有重写!它调用的是它自身的compareTo()方法(...
2015-09-21