Java学习之路02--JavaSE基础(一)

 

(一)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():

 

6.可变参数(Varargs)

可变参数使程序员可以声明一个接受可变数目参数的方法(类似于多个方法重载,只不过是可变参数提供一个方法实现多个方法的重载,变得只是方法其中的参数)。

注意:可变参数必须是函数声明中的最后一个参数。

比如:我们编写一个简单的打印方法,以传统的方式实现方法重载:

 

下面使用可变参数来实现这些方法的重载:

 

 

调用方法:

Write("abc",123,new ArrayList());  // 当然其中的参数可以是任意类型,任意多个

 // 这就很方便的实现了方法重载 

输出:

java.lang.String
     java.lang.Integer
     java.util.ArrayList

 

 

JDK1.6新特性(代号:野马)

1.DestTop类和SystemTray类

前者用于调度操作系统中的一些功能,例如:

· 可以打开系统默认浏览器指定的URL地址;

· 打开系统默认邮件客户端给指定的邮箱发信息;

· 用默认程序打开或编辑文件;

· 用系统默认的打印机打印文档。

后者可用来在系统托盘区创建一个托盘程序。

 

2.使用JAXB2来实现对象与XML之间的映射

JAXB是Java Architecture for XML Binding的简写。JAXB是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
原来JAXB是Java EE的一部分,在JDK6中,SUN将其放到了Java SE中。

 

3.StAX

StAX是JDK1.6中除了DOM和SAX之外的有一种处理XML文档的API。

StAX是The Streaming API for XML的缩写。由于JDK6.0中的JAXB2和JAX-WS 2.0都会用到StAX,所以Sun决定把StAX加入到JAXP家族当中来,并将JAXP的版本升级到1.4. 

JDK6里面JAXP的版本就是1.4。JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。

 

4.使用Complier API

现在我们可以用JDK1.6 的Compiler API动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。

这个特性对于某些需要用到动态编译的应用程序相当有用, 比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Server才可以看到效果的,这时候我们就可以用Compiler API来实现动态编译JSP文件。

 

5.轻量级的Http Server API

JDK6 提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现。

 

6.插入式注解处理API(Pluggable Annotation Processing API)

JSR (JSR是Java Specification Requests的缩写,意思是Java 规范请求)用Annotation Processor在编译期间而不是运行期间处理Annotation, Annotation Processor相当于编译器的一个插件,所以称为插入式注解处理。

 

7.用Console开发控制台程序

JDK6中提供了java.io.Console 类专用来访问基于字符的控制台设备. 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳。

 

8.对脚本语言的支持

如: ruby, groovy, javascript

 

9.Common Annotations

Common annotations原本是Java EE 5.0规范的一部分,现在SUN把它的一部分放到了Java SE 6.0中. 随着Annotation元数据功能加入到Java SE 5.0里面,很多Java 技术(比如EJB,Web Services)都会用Annotation部分代替XML文件来配置运行参数,保证Java SE和Java EE 各种技术的一致性.。

 

 

JDK1.7新特性

1.对Java集合(Collections)的增强支持

在JDK1.7之前的版本中,Java集合容器中存取元素的形式如下:

以List、Set、Map集合容器为例:

    

 

在JDK1.7中,摒弃了Java集合接口的实现类,如:ArrayList、HashSet和HashMap。而是直接采用[]、{}的形式存入对象,采用[]的形式按照索引、键值来获取集合中的对象,如下:

 

2.在Switch中可用String

在之前的版本中是不支持在Switch语句块中用String类型的数据的,这个功能在C#语言中早已被支持,好在JDK1.7中加入了。

 

 

 

3.数值可加下划线

例如:int one_million = 1_000_000;

 

4.支持二进制文字

例如:int binary = 0b1001_1001;

 

5.简化了可变参数方法的调用

当程序员试图使用一个不可具体化的可变参数并调用一个*varargs* (可变)方法时,编辑器会生成一个“非安全操作”的警告。

 

6.自动资源管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值