目录
jdk的重要版本
1.2
1998-12-08 Playground(操场)
– 集合框架;
– JIT(Just In Time)编译器;
– 对打包的Java文件进行数字签名;
– JFC(Java Foundation Classes), 包括Swing 1.0, 拖放和Java2D类库;
– Java插件;
– JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型;
– Applet中添加声音支持
1.5
2004-09-30 Tiger(老虎)
– 泛型;
– 增强循环,可以使用迭代方式;
– 自动装箱与自动拆箱;
– 类型安全的枚举;
– 可变参数;
– 静态引入;
– 元数据(注解);
– Instrumentation
1.7
- 2011-07-28 Dolphin(海豚)
- switch语句块中允许以字符串作为分支条件;
- 在创建泛型对象时应用类型推断;
- 在一个语句块中捕获多种异常;
- 支持动态语言;
- 支持try-with-resources(在一个语句块中捕获多种异常);
- 引入Java NIO.2开发包;
- 数值类型可以用二进制字符串表示,并且可以在字符串表示中添加下划线;
- 钻石型语法(在创建泛型对象时应用类型推断);
- null值得自动处理
1.8
2014-03-18– Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。– 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。– 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。– 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。– Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。– Date Time API − 加强对日期与时间的处理。– Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。– Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎,它允许我们在JVM上运行特定的javascript应用
11
2018-09-25翻译后的新特性有:1、181:Nest-Based访问控制2、309:动态类文件常量3、315:改善Aarch64 intrinsic4、318:无操作垃圾收集器5、320:消除Java EE和CORBA模块6、321:HTTP客户端(标准)7、323:局部变量的语法λ参数8、324:Curve25519和Curve448关键协议9、327:Unicode 1010、328:飞行记录器11、329:ChaCha20和Poly1305加密算法12、330:发射一列纵队源代码程序13、331:低开销堆分析14、332:传输层安全性(Transport Layer Security,TLS)1.315、333:动作:一个可伸缩的低延迟垃圾收集器 (实验)16、335:反对Nashorn JavaScript引擎17、336:反对Pack200工具和API
第一个编程
HelloWorld
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld!!");
}
}
代码解释和注释
Java中的注释
单行注释
//这是一个单行注释
多行注释
/*
这是一个多行注释
*/
文本文档
/**
这是一个文本文档
*/
代码解释
类
类作为Java的基本执行单位,一份Java代码必须有类存在,而且作为文件的最外层结构,固定单词class
表示。并且以 {} 作为类的范围界定。public修饰的类为公共类,公共类的名称必须和文件名一致
输出语句
- 语句即一条条的指令,以分号且必须以分号结束。
System.put.println("输出的内容");
入口
- public static void main(String[] args){
- }
在Java中程序的入口是固定的,必须是以上格式,没有入口的程序时不能执行的
标识符
就是给类,接口,方法,变量等起名字的字符序列。用来查找、定位、标明、唯一确认内容。
Java 标识符有如下命名规则:
标识符必须以字母、下划线_ 、美元符开头。
标识符其它部分可以是字母、下划线“_”、美元符“ ”和数字的任意组合。
Java 标识符大小写敏感,且长度无限制。
不可以是Java的关键字
变量(variable)
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式
为: type varName [=value] ;
注意事项:
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量声明举例
double salary ;
boolean done;
long earthPopulation ;
int age ;
常量(Constant)
常量:初始化(initialize)后不能再改变值!
public class Constants {
public static void main(String[] args) {
final double PI = 3.14;
// PI = 3.15; //error
double r = 4;
double area = PI * r * r;
double circle = 2 * PI * r;
System.out.println("area = " + area);
System.out.println("circle = " + circle);
}
}
数据类型
数据类型
基本数据类型
- 4类8种
• 基本数据类型
• 整型
• 计算机最基本的单位 : 字节 1byte = 8bit 单位的进制1024为进制
byte 字节型 1个字节 8bit [-128,127]
short 短整型 2个字节 16bit [-32768,32767]
int 整型 4个字节 32bit +-21亿
long 长整型 8个字节 64bit 灰常大
注意 : java中整数字面常量值默认是int类型
表示long类型数据,需要在数据的后面 添加L(推荐)|l
• 浮点型
• float 单精度 4个字节 表示小数点后6位左右
double 双精度 8个字节 表示小数点后15左右
小数的字面常量值默认为double类型
表示float类型数据需要在数据的后面添加f|F
java中浮点类型运算有可能不精确
• 字符型
• char 字符型 2个字节
字符型的表现形式 :
''包裹一个字符,有且仅有一个字符
'1' 'a' ' '
0~65535之间的整数表示一个字符
unicode 字符型 --> ASCII字符集
字符型参与运算,会先转为十进制的整数再运算
• 布尔型
• boolean 布尔型 1bit
true
false
在进行逻辑运算的时候会大量的使用到boolean
引用数据类型
- 类 接口 数组[]
• Scanner
• 接收用户键盘输入的内容
1.导入
import java.util.Scanner;
2.创建 Scanner类型的引用
Scanner sc = new Scanner(System.in);
3.使用工能
引用.nextInt() **** 接收用户键盘输入int类型的内容
引用.nextByte()
引用.nextShort()
引用.nextLong()
引用.nextDouble() ****
引用.nextFloat()
从有效字符开始接受,遇到enter建结束功能
引用.next() 接收用户键盘输入String类型的内容
从有效字符开始接收,遇到 空格等不接受,遇到enter建结束功能
引用.nextLine() 接收用户键盘输入一整行的String类型的内容
遇到enter建结束功能
注意: 不要定义与jdk中类型同名,同包的类
如果在 nextLine上面存在系列的next工能.,需要处理遗留enter问题
• Random
• 产生随机数
1.导包
import java.util.Random
2.创建Random类型的引用
Random ran = new Random();
3.使用功能
ran.nextInt() 随机产生int范围内的整数
ran.nextInt(整数n) 随机[0,n)整数
ran.nextDouble() [0.0,1.0) 随机产生double范围的小数
公式总结 :
随机整数:
[0,n) ran.nextInt(整数n)
[0,n] ran.nextInt(n+1)
[min,max) ran.nextInt(max-min)+min
ran.nextInt(max)->[0,max)
ran.nextInt(max)+min->[min,max+min)
ran.nextInt(max-min)+min->[0,max-min)+min -->[min,max)
[min,max] ran.nextInt(max-min+1)+min
注意 : 伪随机数
数值型表现形式
整型
进制 : 满几进一 二进制 : 由0,1组成 由0b|0B开头表示二进制 八进制 : 有0~7组成 由0开头表示八进制 十进制 : 默认 十六进制 : 由0~9,a~f组合而成,不区分大小写 由0x|0X 组成 其他进制转为10进制 : 从最后一位开始,数值*进制数^从0开始,每次+1,最后的和就为十进制的结果 十进制转为其他进制 : 对十进制的数值除以要转为的进制数,得到余数,从下往上
浮点型
1.小数点前面为0,0可以省略
2.科学计数法
e->10
3.14e2 ==> 3.14*10^2
3.14e-2 ==> 3.14/10^2
转义字符
在java中有些字符具有特殊含义(",'),如果不想要表示特殊含义,只想表示字符本身,可以使用转义字符进行转义
转义字符从\开始
\"
\'
\\
\t 制表符 1个制表符位占8个空格
如果前面的内容是制表符位的整数倍的宽度,当前的\t从新开辟一个完整的制表符位
如果前面的内容不满制表符位的整数倍的宽度,包含前面的内容凑成一整个制表符位
一个中文字符占2个空格
一个英文,数字,符号字符占一个空格
\n 换行
光标从当前位置到下一行的行首
\b 退格,回删一格
光标后退一格
数据类型转换
对应类型的数据赋值给对应类型的变量
自动类型提升
小---->大 ===> 可以正常存放,但是可能会造成内存的浪费
强制类型转换
大---->小 ===> 不能发生,有可能会造成损失精度 小范围类型 变量名 = (小范围类型)大范围类型数据;
运算符
操作数 : 运算符左右两边的数据
表达式 : 运算符连接操作数整体称为表达式
语句 : 语句以;结束
一元运算符|单目运算符 : 操作数只有一个 + -(正负号) ++ --
二元运算符|双目运算符 : 操作数有两个 + - * /
三元运算符|三目运算符 : 操作数有三个 条件运算符
算数运算符
+ - * / % ++ --
+:
1)正号 (省略)
2)加法运算
3)字符串的连接符
当+左右两边一旦出现""字符串,+就做为字符串连接符,把左右两边的数据拼接成为一个字符串
- :
1)负号
2)减法运算
% 取余数 | 取余|模以
当第一个操作数<第二个操作数,结果为第一个操作数
赋值运算符
比较运算符|关系
比较运算符|关系运算符
> < >= <=
byte,short,int,long,float,double,char
== !=
基本,引用
结果都为boolean类型
逻辑运算符
注意:
操作数必须为boolean,值为boolean的表达式
建议使用短路运算符
& 与
- 两个都为真true,结果才为true,一个为false就是false
| 或
- 一个为true就是true,两个都为false才是false
! 非
- 取反
!true -> false
!false -> true
^ 异或
- 相同为false,不同为true
短路
- 如果左边的操作数的值能够决定最终表达式的结果 ,第二个操作数不会执行
&& : 两个都为真true,结果才为true,一个为false就是false
| | : 一个为true就是true,两个都为false才是false