java基础

Welcome to 微博

java版本重要历史

2006年末,使所有的Java核心代码,免费和开源,除了代码的一小部分,其中Sun并没有拥有版权
2009年4月 日正式发布 OpenJDK
2010年1月 Oracle收购Sun公司及其产品。现在Java由Oracle控制。
2011年7月 Java SE 7.0版本发布,这个版本距上次发布有5年之久。
新增特性:是支持动态语言;Java nio包;多重异常处理;try with resourece功能
2014年3月 JAVA SE 8.0版本发布。
新增特性:函数式接口和Lambda表达式;接口的默认方法和静态方法;方法引用;重复注解、拓宽注解的应用场景;Stream API;新的日期和时间 API ;更好的类型推断;
官方新特性说明地址:http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
2017年9月 Java SE 9.0版本发布。
新增特性:模块化;交互式命令行;默认的垃圾回收器;进程操作改进;竞争锁的性能优化;分段代码缓存;优化字符串占用空间
官方新特性说明地址:http://openjdk.java.net/projects/jdk9/
2018年3月 Java SE 10.0版本发布。
新增特性:局部变量类型推断;垃圾收集器接口;G1并行全GC;线程本地握手;
官方新特性说明地址: 
http://openjdk.java.net/projects/jdk/10/       

常用术语

JDK:
Java development toolkit,是 Java 语言的软件开发工具包(SDK)。这里面包含了JAVA的运行环境(jre),JAVA工具(javac/java/jdb等)和JAVA基础的类库(即Java API 包括rt.jar)。

JRE:
Java Runtime Environment,是运行基于Java语言编写的程序所不可缺少的运行环境。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。

JVM:
java virtual machine,就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。

J2SE:
Java 2 Standard Edition是Java的标准版,用于标准的应用开发;其实是一个官方的标准,符合这个标准的产品叫“实现”。由于J2SE是标准版,所以只有JDK就可以实现。

J2ME:
Java 2 Micro Edition是Java的微型版,常用于手机上的开发;其实是一个官方的标准,符合这个标准的产品叫“实现”。因为用于嵌入式开发,所以J2ME会有其他的标准,而满足这个标准的就是实现了J2me,支持J2ME。

J2EE:
Java 2 Enterprise Edition是Java的一种企业版用于企业级的应用服务开发;其实是一个官方的标准,符合这个标准的产品叫“实现”。因为用于企业级开发,所以J2EE会有比JDK更加强大的标准,而满足这个标准的就是实现了J2EE,支持J2EE,比如jboss,weblogic。

JAVA API:
Application Programming Interface,应用程序编程接口是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

JDK两大版本

OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的;
OpenJDK官网:http://openjdk.java.net/

OracleJDK采用了商业实现, 而OpenJDK使用的是开源的自由型。
OracleJDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。
OracleJDK官网:http://www.oracle.com/technetwork/java/index.html

编译执行

源文件:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java;
编译:将源文件编译成与平台无关的字节码,文件扩展名为:.class
运行:将字节码加载到JVM虚拟机解释执行;

CLASSPATH:配置classpath变量,才能使得java解释器知道到哪里去找标准类库;这些标准类库在JDK的lib目录下以jar为后缀的文件中:一个是dt.jar,一个是tools.jar;所以通常我们都会把这两个jar包加到我们的CLASSPATH环境变量;
javac:源文件编译工具;
用法: javac <options> <source files>
参数: -g、 -nowarn
java:运行java字节码程序;
用法: java [-options] class [args...]或java [-options] -jar jarfile [args...]

java基础

Java 的两大数据类型:

内置数据类型:
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型:

引用数据类型:
引用类型变量由类的构造函数创建,可以使用它们访问所引用的对象。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。对象、数组都是引用数据类型。所有引用类型的默认值都是null。一个引用变量可以用来引用与任何与之兼容的类型。
例子:Animal animal = new Animal(“giraffe”)。

java常量:
常量就是一个固定值。它们不需要计算,直接代表相应的值。
常量指不能改变的量。 在Java中用final标志,声明方式和变量类似,虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。

Object类

Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。
Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入。
Object类没有定义属性,一共有13个方法,具体的类定义结构如下图:    

java关键字

java容器

java泛型

java反射