Java于 1996 年第一次发布。LTS(Long Term Support) 长期支持版本
Java类库源文件在 jdk 安装目录下的 src.zip 压缩文件中。
Java是 强类型 + 面向对象 语言,每个变量必须声明一种类型。
Java语言是跨平台的,但是 JVM 不是跨平台的。
Java语言不一定是最好的语言,但是Java虚拟机JVM一定是最好的虚拟机,因为JVM除了可以运行Java程序外还可以运行其它语言的程序。
Java一共有 8 种基本类型,包括 4 种整型,2 种浮点类型,1 种真值类型,1 种表示Unicode编码的字符类型。Java中的数据类型具有固定的大小,用于消除代码移植可能出现的问题,例如int在Java中永远是32位(4字节)整数。
数据类型 | 名称 | 存储要求 |
---|---|---|
整型 | int | 4字节 |
短整型 | short | 2字节 |
长整型 | long | 8字节 |
字节型 | byte | 1字节 |
单精度浮点型 | float | 4字节 |
双精度浮点型 | double | 8字节 |
布尔型 | boolean | |
字符型 | char | 2字节 |
// 错误写法
int flag = 1;
if (flag) {
System.out.println("不成立");
}
// 正确写法
boolean flag = true;
if (flag) {
System.out.println("成立");
}
JVM 主要有三种:
Sun公司的 HotSpot(通常使用)
BEA公司的 JRockit
IBM公司的 J9VM
|— bin 指令、开发工具
|— include C或C++的头文件
|— jre 运行时环境
|— legal 法律声明
|— lib 动态链接本地库,jar包(rt.jar 运行时环境)
|— bin 指令、开发工具
|— conf 配置文件
|— include C或C++的头文件
|— jmods JMOD格式平台模块
|— legal 法律声明
|— lib 动态链接本地库,jar包(rt.jar 运行时环境)
模块化必须在JDK1.9及以上,需各模块建立module-info,并且在JDK1.9有了JShell这个REPL工具,不用再像原来那样 [ 建立文件 —> 编译 —> 执行 ],可直接在里面运行语句
- 简单性
- 面向对象
- 分布式
- 健壮性
- 安全性
- 体系结构中立
- 可移植性
- 解释性
- 高性能
- 多线程
- 动态性
public static void main(String[] args) {
if (args.length == 0 || args[0].equals("-h")) {
System.out.println("Hello,");
} else if (args[0].equals("-g")) {
System.out.println("GoodBye,");
}
for (String str : args) {
System.out.println(str);
}
编译时输入命令行参数
java Test -h tylt java
---> Hello, tylt java
此时args数组的状态
args[0] = -h
args[1] = tylt
args[2] = java
所以在Java Web Spring 项目打成jar包运行时可以进行参数追加,因为最终也是通过main函数运行,本质还是传递到main函数中的args里面,例如变更端口号
java -jar xxx.jar --sever.port=9090
public static void main(String[] args) {
int n1 = 0, n2 = 1, n3 = 0;
n2++;// 此时n2=2
System.out.println("first " + n2);
++n2;// 此时n2=3
System.out.println("second " + n2);
n1 = n2++;// 此时n2=4,由于后置n1的赋值是返回值n2+1之前的值,所以n1=3
System.out.println("three " + n2);
n3 = ++n2;// 此时n2=5,由于前置n1的赋值是返回值n2+1之后的值,所以n3=5
System.out.println("four " + n2);
System.out.println(n1 + " " + " " + n3);
}
//10即为 int 类型的字面量
int a = 10;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个姓名");
String str = scanner.nextLine();
System.out.println("请输入年龄");
int num = scanner.nextInt();
System.out.println("姓名是:" + str +" "+ "年龄是:" + num);
String str = "张三";
String strnull = null;
if (str.length() == 0) {
System.out.println("str为空");
}
if (str.equals("")) {
System.out.println("str为空");
}
if (strnull == null) {
System.out.println("strnull为NULL");
}
// 普通写法
String name = "张三";
if (name.equals("张三")) {
System.out.println(name + "此人存在");
} else {
System.out.println("此人不存在");
}
// 三元运算符写法
String name = "张三";
String result =
name.equals("张三") ? name + "此人存在" : "此人不存在";
System.out.println(result);
String str = "接下来的名字是";
String strr = "张三";
int num = 10;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(str);
stringBuilder.append(strr);
stringBuilder.append(num);
String comstr = stringBuilder.toString();
System.out.println(comstr+stringBuilder);
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
String[] a = new String[10];
for (int i = 0; i < 10; i++) {
a[i] = scanner.nextLine();
}
for (int j = 0; j < a.length; j++) {
System.out.print(a[j]);
}
//foreach循环遍历
for (String elem : a) {
System.out.print(elem);
}