一。java的发展简史
1995年Java语言面世。
1998年发布JDK 1.2,随之将Java 分为J2SE、J2EE和J2ME
2002年发布JDK 1.4。
新增正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。
2004年发布JDK 1.5。
引入大量新特性:自动装箱拆箱、泛型、动态Annotation、枚举、可变长参数、foreach,提供了concurrent并发包等。
2006年12月,Sun发布了JDK 1.6。
启用JavaSE、JavaEE、JavaME的命名方式。这个版本对java虚拟机做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法。
2011年7月,Oracle发布了Java 7。
2014年3月,Oracle发布了Java 8。
2017年9月,Oracle发布了java 9。
二。java的机制
1. JVM机制
保证了java程序的跨平台特性
2. 垃圾回收机制
保证了java程序更安全和高效
三。java环境的搭建
1.安装jdk,这个很容易get到,就不再赘述
2.配置环境变量
PATH:jdk安装路径/bin。这是为了让系统可以找到编译和运行java程序的执行指令。因为在bin目录下包含了大部分我们需要用到的命令,如javac java javadoc
CLASSPATH:指定字节码文件的搜索路径。JVM就是从CLASSPATH指定的路径下去搜索所要执行的类文件。jdk1.4及以前的版本必须配置这个环境变量。从jdk1.5开 始,如果系统不配置这个环境变量,会默认到当前目录及java的系统类路径。
四。java程序的最小单位是类
[修饰符] class [类名] { } 类名只要是合法的标识符即可,但实际上我们应该规范为类名是一个或多个有意义的单词组成,而且每个单词的首字母要大写。
五。运行程序的两个步骤
首先java源文件的命名是有规则的:(1). 必须是以.java为后缀名。(2)如果源文件中定义了public类,那么文件名必须与此public类名相同。(3)如果没有public类,则 文件名随意。
1. 使用javac命令将 *.java源文件编译成 *.class字节码文件。命令如下
javac -d [目录] java源文件
目录指定生成的字节码文件存放的位置
注意:生成的字节码文件名称总是类名.class。若源文件中定义了N个类,则将生成N个.class文件
2. 使用java命令运行
java -cp [目录] java类名
目录指定JVM到哪里去搜索所要执行的java类。
注意:如果没有cp选项,则根据CLASSPATH指定的路径去搜索。如果连CLASSPATH也没有设置,那么在jdk1.5及以后的版本都会在当前目录下搜索
六。java中的标识符
自定义的,由大小写字母(包括中文字符、日文字符、韩文)、数字、_、$组成。数字不可以打头,不能使用关键字和保留字,严格区分大小写。
java中的关键字(48个)和保留字(goto、const)全是小写的。true false null
七。注释
对程序本质没有任何影响,主要帮助开发者记录辅助信息。
1. 单行注释://
2. 多行注释:/*.....*/
3. 文档注释:/**.......*/
文档注释只有放在类、方法、Filed、内部类之前才有效。
可以利用javadoc命令来提取文档注释,并由此生成api文档:
javadoc -d [目录] java源文件
目录指定文档生成的位置
八。分隔符
常见的分隔符有 英文分号(;),花括号({}),英文方括号([]),英文圆括号(()),空格,圆点(.)
九。变量
变量是用来存取数据的。通过它可以访问计算机内存里的数据。通俗一点可以理解成一个容器。
十。数据类型
java语言是强类型的。
1. 所有的变量,必须先声明类型,再使用。
2. 什么样的类型存放什么样的数据。
java语言的数据类型分为两种:
1. 基本数据类型(7个数值型 + 1个布尔型 7个数值型包括4个整型 2个浮点 1个char,char可当做正整数)
整数类型:byte(1 byte(8 bit) -27~27-1)
short(2 byte -32768~32767)
int(4 byte -231~231-1)2147483648
long (8 byte)
关于整数的存储:
1.最高位是符号位;0代表正数,1代表负数
2.所有的数在计算机中以补码的形式保存。
原码:将一个其他进制的数直接换算成的二进制数
反码:原码符号位不变,其余各位取反
补码:负数的补码=反码+1,正数的补码=原码
3.整型数表现形式:
二进制表示:(0b)(jdk7开始)
八进制表示:(0)
十进制表示:(默认的)
16进制表示:(0x)
4.默认是int,如果想要long型,则可以在直面量后面跟一个L/l
浮点类型(支持小数):float double
1.表现形式:
十进制: 5.232 .32(没有整数部分,0可以省略)
科学计数法: .23e4
2.浮点默认是double型,如果想要float型,则可以在直面量后面跟一个F/f
3.浮点有三个特殊值
正无穷大:用正浮点数除以0,得到正无穷大 所有的正无穷都相等 Double.POSITIVE_INFINITY
负无穷大:用负浮点数除以0,得到负无穷大 所有的负无穷都相等 Double.NEGATIVE_INFINITY
非数:用0.0除以0得到非数,非数与自己不相等 Double.NaN
字符类型:char(2字节,表数范围是0~65535)
每一个字符型变量只能存一个字符,可以是英文,也可以是中文,字符型的值用单引号引起来。
字符型的值表现形式:
1. 直面量,如: 'a','我'
2.转义字符,如: '\n','\r'
3.Unicode的方式,如:'\u0041'
布尔类型:boolean(true / false)
2. 引用数据类型
十一。数据类型的转换
1.自动类型转换
表数范围小的可以转换为表数范围大的。将一个整数值直接赋给变量,Java中默认的整数类型时int。如果这个整数的范围在byte、short表数范围内,系统自动会把它当做byte、short使用。
所有的数值型都可以转换为 double型;
除了double外,所有的数值型都可以转换为float型;
所有的整型都可以转换为long型。
2.强制类型转换
当把表数范围大的变量或值,转为表数范围小的时,就需要强制类型转换。
3.表达式类型提升
整个表达式的值与表达式中表数范围最大的类型相同。