您的位置:首页 > 编程语言 > Java开发

容易混淆的java知识点

2018-03-21 13:20 260 查看
    学校学的知识因为不理解,所以我一直处于一知半解的状态。现在在闲暇之余,抽空看一下基础内容,获益匪浅。首先说一下java语言涉及最多的单词class,class是一种类型,指的是“类”,就像超类 public class object{},所以不明白class和object区别的我,现在终于能够理解了。
    之后再说一下模糊不清的一些概念,interface是什么?是继承于object吗?我去网上查了一下资料,包括别人的一些描述,总共有2个观点:
1、接口继承于object
      接口继承了Object类,在.class文件中的super_clas
4000
s标志中可以看到,另外《深入java虚拟机》第二版以及《The Java Virtual Machine Specification》second edition中有说到

2、接口是接口,类是类。

      "接口隐含定义了一套与Object类中的方法签名完全相同的方法,所以,我们在程序中调用接口的那些与Object中具有相同签名的方法时,编译器不会报错!"
       我个人倾向于更容易理解的第二种,可能也是受类声明方式不一样的影响:interface **{}   class **{}
      除了这些平时只靠死记硬背,没有深入了解的东西外,还有诸如泛型之类的:
      T 和object的区别:T指的是具体的一种class类,而object则可以容纳所有类型的类。如同:List<T>和List<object>,2者中T可以为某一特定类,而object则涵盖了所有类。如下:
       public static void main(String args[]){
        List<object> list= new  ArrayList<Object>();
          int i=0;
         String s="String";
          list.add(i);
          list.add(s);
        }
        List本身是个泛型类,现在我们指定它接收Object类型的参数,此时就可以放置任意类型的参数进去,而在取出来是就必须得进行强制类型转换成具体的类型。
         现在我们如果将List指定接收String类型的参数,那么这个List就只能放置String类型,且取出来时就不用进行强制类型转换。而T就相当于这里的String。

         其次比较容易模糊的是class<? extends **>**类以及 class<?>在这里?是一个占位符的作用,当没有后面的“extends **”时,他指代的是任意一种类,可以是object类,也可以是其他类包括其他接口。具体的话希望大家可以看一下http://blog.csdn.net/jitianxia68/article/details/73610606,这篇博客写的很清楚。
          还有大家需要明白一点。T代表的是**.class。而如果将其作为返回类型,则应该返回的是**类型。例如:T如果代表的是int.class,那么其返回的类型为int。还有就是int.class和integer.class不是一样的,因为integer是int的封装类型,2者并不等同。
       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 知识点 泛型 class