(一)Java的特点
平台无关性,“一次编译,到处运行”
java采用虚拟机运行原理,先将.java文件编译成.class字节码文件,然后在jvm虚拟机(Java Virtual Machine)上运行,只要计算机有jvm虚拟机就可以,无论系统是什么版本的(但是只是相对与电脑来说,如果想在手机上运行,还得重新编码,所以也是有点局限性的)。
面向对象
面向对象技术是一种程序设计技术,相比于面向过程设计模式,面向对象设计重点放在对象和对象的接口上,比如拿“老张开车去东北”来说,面向过程的“老张”,需要将汽车设计出来,然后一步步组装起来,才能开着车去东北,而面向对象的“老张”,只要叫来司机,开一辆车,去东北,老张就可以坐着车去,不用关其他的事,无需知道汽车内部如何运行的。
面向对象的4个特征:
1、抽象
分为过程抽象和数据抽象,过程抽象就是把一个系统按功能划分成若干个子系统,进行“自顶向下逐步求精”的程序设计。数据抽象是以数据为中心,把数据类型和施加在该类型对象上的操作作为一个整体(对象)来描述,形成抽象数据类型ADT。
2、继承
继承就是基于原本存在的类的定义的基础建立的新的类,Java只有单继承,通过实现(implements)多个接口来实现多继承的效果,新类可以在父类的基础添加新的数据和方法。所有的类的父类是object。
3、封装
封装就是将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件,外部无法直接访问这些数据,如果想访问类里面的数据,必须通过接口访问,接口规定可对一个特定的对象发出哪些请求。
4、多态性
多态性就是发信息给某个对象,让该对象自行决定执行何种行为。使用父类类型的引用指向子类的对象,该引用只能调用父类中的数据和方法,如果子类复写了父类的中方法则该引用会调用子类的该方法。实现多个子类,对同一个信息做出不同的响应。
(二)JDK
JDK中包含:
----|JDK:Java Development Kit -------->Java开发工具包
----|JRE:Java Runtime Environment---->Java运行时环境
----|-----|JVM:Java Virtual Machine---------->Java虚拟机
----|-----|Java SE Api:-------------------------->Java系统核心类库
JVM不是跨平台的,每个操作系统都有自己版本的JVM,除此之外都是跨平台的。
以下是网络摘抄,方便以后查看。(JDK1.5、1.6、1.7各个版本的新特性)
JDK1.5新特性(代号:猛虎)
1.静态导入(import static)
import语句可以导入一个类或是某个包中的所有类。
import static 语句可以导入一个类中的某个静态方法或是所有静态方法。
例如:
Math类提供了很多于数学运算的静态方法,通常情况下我们是以Math.abs();这样的方式来进行调用函数的。但是我们可不可以只写出adb();
在JDK1.5之后,可以使用import static 语句导入一个类中的某个静态方法或是所有静态方法。这是JDK1.5的新特性之一。
例如:
import static java.lang.Math.abs;就可以直接写一个abs();函数。
import static java.lang.Math.*; 就可以直接调用Math类中的所有静态方法。
2.泛型(Generic)
在JDK1.5之前,在Java集合容器中(如:List)可以讲任何类型的对象加入到其中,此时被加入的对象被视为Object来看待。当从集合容器取出对象时,需要程序员自行保证对象类型的强制转换。如下:
这段代码中很显然List对象中的类型不匹配,但在JDK1.5之前会编译通过,运行时才会报错,这样在开发过程中很不好。所以JDK1.5引入了泛型(Generic)的概念。在看下面的代码:
泛型的引入在很大程度上避免了程序员自行保证集合容器中存取数据的强制转换。
3.For-Each循环(增强型for循环)
JDK1.5中,For-Each循环的加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为:
4.自动装包/拆包(Autoboxing/unboxing)
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer)
自动拆包:包装类自动转为基本类型.(Integer >> int)
5.枚举(Enums)
JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。如下:
之后,可以这样使用:
Gender gender = Gender.male;
也可以对枚举进行遍历,枚举类型提供了两个静态方法values()和valueOf():