已采纳回答 / 无动于衷
接口是不能实例化的,但是接口的实现类可以,实现类的实例可以用接口的引用接受,像是这样: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
已采纳回答 / 伊兮尘昔
1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。3. StringBuilder:线程非安全的 StringBuffer:线程安全的 当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他...
2015-09-19
已采纳回答 / Java暗影
对于行数不确定的建议用while语句和数组实现。例如:<...code...>public void input(){Scanner in = new Scanner(System.in);//定义输入流对象int i = 0;//定义一个变量用于接收输入的值 int []nums = new int[20];/...
2015-09-18
已采纳回答 / _潇潇暮雨
凡是new出来的都是对象。你new了2次,当然会产生新的对象(开辟新的地址)。我们说字符串具有不变性,指的是字符串一旦声明不可改变(存储在字符串常量池中)。例如:<...code...>实际上...
2015-09-17