1. 初始计算机与java语言
计算机体系结构(常识)
-
组成
- 计算机硬件
CPU 内存 硬盘 输入输出设备 主板 机箱 电源等
- 计算机软件
系统软件 应用软件
-
计算机单位
1Tb = 1024Gb
1Gb = 1024Mb
1Mb = 1024Kb
1Kb = 1024Byte (字节)
1Byte = 8Bit (二进制位)
java语言概述(常识)
-
计算机语言
机器语言->汇编语言->高级语言
-
java语言之父-詹姆斯·高斯林
-
java版本
-
JAVA SE 标准版
-
JAVA EE 企业版
-
JAVA ME 微型版
-
java开发环境搭建
- 环境变量
JAVA_HOME="/HOME/jdk1.8.0_201.jdk/Contents/Home"
CLASS_PATH="$JAVA_HOME/lib"
PATH=".$PATH:$JAVA_HOME/bin"
-
相关概念
- JDK - Java开发工具包
- JRE - Java SE运行时环境
- javac.exe - 编译器
- java.exe - 解释器
-
JDK & JRE & JVM
- 编译运行
-
跨平台原理
Java字节码可以通过JVM翻译为具体平台能够执行的机器指令。由于Sun
定义了JVM规范,而且不同的操作系统大多提供了JVM实现,才使得相同 的一个字节码文件可以在不同的系统上运行,从而使Java赢得了“一次编 译,到处使用”的美名。
2. Java语言基础
变量(重点)
声明变 量的本质就是在内存中申请一个存储单元,由于该存储单元中的数据内 容可以发生改变,因此得名为"变量"
- 声明
Type name [= value];
- 注意
- 变量使用前必须指明数据类型
- 变量使用前必须初始化
- 不能重复声明
标识符命名
- 数字 字母 下划线以及$组成 数字不能开头( 112L 11.2f 代表long float)
- 不能使用java关键字
- 区分大小写
- 中文支持不推荐
- 可以给类/变量/属性/方法/包 起名字
数据类型
由于存放的数据内容大小不一样,导致所需存储单元的大小不一样,在 Java语言中使用数据类型加以描述
-
基本数据类型
byte short int long float double boolean char
-
引用数据类型
数组 类 接口 枚举 标注 字符串
-
基本数据类型范围
byte(1B)范围:-128--127 short(2B)范围-32768--32767 int(4B)范围:-2147483648--2147483647 long(8B)范围:-9223372036854775808-9223372036854775807 float(4B)范围:-3.403E38~3.403E38 double(8B)范围:-1.798E308~1.798E308 boolean(1B): true false char(2B):0 ~ 65535
ASCII(掌握)
‘0’(48) ‘A’(65) ‘a’(97) ‘空格’(32) ‘换行’(10)
基本数据类型转换
- 字段类型转换
byte -> short -> int -> long->float -> double
char —>int
- 强制类型转换
(type)source
3. Java运算符
算术运算符
+ - * / %
System.out.println(10 / 3); // 3
// 保留小数 3.3333333333333335
System.out.println((double)10 / 3);
System.out.println(10 / (double)3);
System.out.println((double)10 / (double)3);
// 强制转换(10/3)
System.out.println((double)(10 / 3)); // 3.0
字符串连接符
+
int a = 6;
int b = 2;
int c = 0;
System.out.println(a + b + c); // 8
System.out.println(a + b + c + "/"); // 8/
System.out.println(a + b + "/" + c);// 8/0
System.out.println(a + "/" + b + c);// 6/20
System.out.println("/" + a + b + c);// /620
System.out.println("/" + (a + b + c));// /8
System.out.println("/" + a * b * c);// /0
关系/比较运算符
> < == >= <= !=
自增减运算符
++ -- (自用于变量)
a++ // 1. a++ = a 2. a= a+1
a-- // 2. a-- = a. 3. a= a-1
++a // 1. a= a+1 2. ++a = a
--a // 1. a= a-1 2. --a = a
int a = 5;
(a++ + ++a) // 12 1. a++ = 5 2. a = 6 3. a = 7 4. ++a = 7 5. 5+7=12
逻辑运算符
&& || !
-
短路特性
boolean a1 = true; boolean b1 = false; (a1 || (10 / 0 > 1)) // 正常 (a1 && (10 / 0 > 1)) // 报错 (b1 || (10 / 0 > 1)) // 报错 (b1 && (10 / 0 > 1)) // 正常
条件/三目运算符
System.out.println(10>5?10:5); // 10
System.out.println(10<5?10:5); // 5
赋值运算符
= += -= *= /+ %=
位移运算符
>> << >>>
2 << 3 (左移 3 位相当于乘以 2 的 3 次方, 右移 3 位相当于除以 2 的 3 次方)
31 * num 等价于(num << 5) - num
位运算
& | ~ ^
优先级
()最高
=最低
4. 流程控制
- 分支
if (true) {
// do;
}
if (true) {
// do one;
}else {
// do two;
}
if (true) {
// do one;
}else(true){
//do two;
}else{
//do three;
}
switch (变量/表达式) {
case 1:
// do;
break;
case 2:
// do ;
break;
default:
// do;
}
在 Java 5 以前, switch(expr)中, expr 只能是 byte、short、char、int。 从 Java 5 开始 expr 也可以是 enum 类型, 从 Java 7 开始, expr 还可以是字符串(String
- 循环
for (;?true;) {
//do;
}
// 标号
标号: for (;;) {
for(;;) {
break 标号;
}
}
while(?true) {
//do;
}
do {
//do ;
} while(?true);
- continue语句用在循环体中,用于结束本次循环而开始下一次循环。
- break用于退出当前语句块,break用在循环体中用于退出循环
5. 数组
数据类型[] 数组名称 = new 数据类型[长度];
- 一维数组声明使用
int[] intArray = new int[2];
for (int i = 0; i < intArray.length; i++) {
System.out.println(intArray[i]);
}
-
数组工具
java.util.Arrays
static String toString(int[] a) 输出数组中的内容 static void fill(int[] a, int val) 将参数指定元素赋值给数组中所有元素 static boolean equals(boolean[] a, boolean[] a2) 判断两个数组元素内容和次序是否相同 static void sort(int[] a) 对数组中的元素进行从小到大排序 static int binarySearch(int[] a, int key) 从数组中查找参数指定元素所在的位置
int[] arr = {5,4,3,2,1};
System.out.println(Arrays.toString(arr));
int[] arr2 = new int[10];
Arrays.fill(arr2, 10);
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.equals(arr, arr2));
int[] arr3 = new int[10];
Arrays.fill(arr3, 10);
System.out.println(Arrays.equals(arr3, arr2));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr, 5));
常见异常
- ArithmeticException(算术异常)
- ClassCastException (类转换异常)
- IllegalArgumentException (非法参数异常)
- IndexOutOfBoundsException (下标越界异常)
- NullPointerException (空指针异常)
- SecurityException (安全异常)