从Java编程思想看Java体系结构

     Java编程思想中的章节一共有22章,除了图形界面那一章之外,其他的可以简单的分为三大类,主要包括Java的核心语言基础、面向对象的有关特性和开发相关。这也是Java体系结构的组成部分。下面来细细划分三大类,并由此管窥Java体系结构。

   Java语言核心基础

      语言特性相关或者说是通用语言相关的部分又可以以下七个部分。

    操作符

      Java中的操作符主要包括+,-,*,/,%,|,||(短路或),&,&&(短路与)等二元操作符,++,--,!等一元操作符以及?:三元操作符。这部分算是语言通用部分。

   控制流程

    Java中控制流程主要包括if-else,do- while,while,for,break,continue,switch等。

   关键字

  Java中关键字大约有五十个,平常比较常见的主要包括final(不可变),static(静态),extends(继承类),implements(实现接口),abstract(抽象),public,private,default,protected(访问权限相关),synchronized,volatile(并发相关),return(流程返回),try,catch,finally(异常处理相关)等等。

数据类型

 Java中的数据类型主要分为八种,包括boolean,byte,char,short,int,long,float,double。这八种基本数据类型对应着不同的八个包装类。

  字符串

    字符串算是各个语言中通用的一种数据存储结构,Java中字符串底层是一个不可变的字符数组(final修饰),因此字符串本身是不可以被改变的。在改变字符串时实际上是通过StringBuilder来调用append来实现。Java中提供了一些正则支持来方便对字符串进行一些操作。

  数组

     Java中数组其实就是一个比较特殊的对象,在堆中开辟一块连续的空间来存放这些对象,它一旦被穿件就不可以被改变。Java中通过Array的静态方法,提供了比较丰富的数组操作,包括复制数组,比较数组,排序数组等等。

面向对象相关

     Java语言是面向对象的语言,因此面向对象的一些特性不得不说。由于面向对象一般都和类相关,因此一些类的特性都可以被视为面向对象相关的内容。这部分主要包括初始化、封装、抽象、继承、多态、接口、内部类等内容。其中封装、继承、多态是面向对象的三大特性。

    初始化

     类的初始化的过程中涉及到构造器,同时由于继承的存在,子类的初始化过程又涉及到父类以及它的构造器。

    多态

     多态是面向对象的独特特性,多态的存在首先是由于类的继承关系的存在,其中使用子类来实现父类和使用父类来实现子类都是多态的体现,这也就是上转型和下转型。再就是覆盖,子类重写了父类的相同方法,并且保证除了方法体之外的其他内容完全相同。

   接口

     接口可以实现多继承,Java中只能继承一个类,但是可以实现多个接口。接口的存在可以解耦。和接口类似的是抽象类,这两个都可以被实现,但是抽象类本质上仍然是一个类,只能单继承。

  内部类

     内部类的存在可以解决单继承的问题,由于一个类内可以有多个内部类,而每一个内部类都可以继承一个类。主要包括静态内部类(可以通过类名直接调用)、匿名内部类(没有构造器和类名),普通内部类。

开发相关

  Java开发相关的内容特别丰富,和我们平时开发最为息息相关的或者说是最为常用的内容主要有容器、类型信息、泛型、异常、IO、并发、注解等等。

   容器

      容器的作用是为了持有对象,可以认为它是一组对象按照某种方式存储的集合。容器主要可以分为两大类,一类是Collection,另外就是map。其中collection又可以细分为List、Set、Queue三大类。

      List用来存放一组对象,对象可以重复,底层可以由数组来实现(ArrayList),也可以由链表来实现(LinkedList),数组存放的查找比较快,但是删除需要移动大量元素,比较慢。链表存放的可以比较快的删除,但是查找要遍历整条链表。

      Set用于存放一组不重复的元素,主要包括HashSet、SortedSet、TreeSet等。其中HashSet底层是由HashMap来实现的。另外两个可以进行元素排序。

     Queue是一个接口,代表队列,可以有LinkedList来实现,特点是先进先出。

      Map是一个存储键值对的容器,通过链表或红黑树来处理hash冲突的问题,主要包括HashMap、TreeMap、LinkedHashMap等。

     除了上述之外,还有一些已经基本不用的容器,包括Vector,hashtable等等。

类型信息

    类型信息包括class对象的一些内容,其中常用的两个比较重要的技术是反射(运行时获得类和方法的一些信息)和动态代理(代理一个接口来实现类的方法)。这个可以在具体看一些框架源码是详细看。

泛型

      泛型常用在类和方法之前,使用T或者其他符号代表一个占位符,表示这里可以放多种不同的类型。泛型的存在可以省去很多类似的代码,提高开发效率。泛型中还有比较重要的概念就是泛型擦除和擦除边界的问题。开发中会用即可。

IO

    IO中比较重要的概念是文件和流的操作。其中文件的操作包含在File这个类中,包括读文件,判断文件是不是文件夹,创建文件等等。再就是流的概念,Java中流分为输入流和输出流,这些都是面向字节的。NIO中又有面向字符的概念,提供了Reader和Wirter。并且提供了一些适配不同类的适配类来方便操作。

并发

   并发是Java中比较重要的概念,它提供了一些比较重要的类和包,还有一些关键字。

     Java中 比较重要的类是Thread,包括一些静态方法(sleep,yield,join)等等,通常可以使用start来启动一个新的线程。

   并发涉及到共享资源的合理使用,不正确的竞争共享资源会造成问题,除了lock接口以及它的一些实现类之外,Java本身提供了一些关键字,比如sychronized和volatile等等。有关这些锁的性能问题也是比较关键的。

  再就是concurrent这个包,里面有很多并发构件,比如CountDownLatch和CyclicBarrier,还有线程池等等。



   Java体系结构当然不是我写的这么简单,但是这大概其是一个轮廓,要学的东西还有很多,任重而道远啊。

猜你喜欢

转载自blog.csdn.net/pb_yan/article/details/80229702