一、初识Java
整个框架都是从大博哥那里拿来的,偷个懒就不画图了😊😊😊,仅对内容进行扩充
如上图所示,这里对上图进行解释与补充
1.Java的特性
答:简单性,面向对象进行开发,分布式服务,健壮性,安全性,体系结构中立,可移植性,解释性,高性能,多线程,动态性
2.运行Java程序
Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的.class文件是由字节
码组成的平台无关、面向JVM的文件。最后启动java虚拟机来运行.class文件,此时JVM会将字节码转换成平台能够
理解的形式来运行。
【面试题】JDK、JRE、JVM之间的关系?
JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译
器javac与自带的调试工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程
序运行的所需环境。
JVM:Java虚拟机,运行Java代码
二、数据类型和变量
八个基本数据类型
byte ,short ,int, long, double, float, char, boolean
2.类型转换
1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
4. 强制类型转换不一定能成功,不相干的类型不能互相转换
3. 类型提升
1.不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.
三、运算符
算数运算符,关系运算符,逻辑运算符,位运算符,移位运算度,条件运算符。
四、程序逻辑控制
注意:
switch的括号内只能是以下类型的表达式:
byte, int, char, short
String字符串,枚举类型
五、方法的使用
这里主要还是回一下重载和重写
重载 | 重写 |
方法名相同 | 方法名相同 |
参数列表不相同(顺序,数据类型,数量) | 参数列表相同(顺序,数据类型,数量) |
返回值(没有要求) | 返回值相同,如果返回值不相同,那么必须构成父子类的关系(协变类型) |
为什么要重载:简化方法名的使用 | 为什么要重写:在继承、接口中使用。 |
六、数组
1.数组的拷贝
上图是浅拷贝,对newArr修改会影响arr的值
上图是深拷贝,对newArr修改不会影响arr的值
2.数组的二分查找
pubic static int binaryFind(int[] arr, int numFind){
int left = 0;
int right = array.length();
while(left<right){
int mid = (left+right)/2
if(arr[mid]<numFind){
left = mid+1;
}else if(arr[mid]>numFind){
right = mid+1;
}else{
return mid;
}
}
return -1;
}
3.数组的冒泡排序
public static void bubbleSort(int[] arr) {
for(int i = 0; i<arr.length; i++){
for(int j = 0; j<arr.length-i-1; j++){
if(arr[j]>arr[j+1]){
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
4.二维数组
理解为特殊的一维数组,只不过是存放的地址。
七、类和对象
难点的回忆:
this的用法 <————点击
内部类 <————点击
八、继承和封装
难点:
子类帮助父类写构造方法 <————点击
多态 <————点击
九、抽象类和接口
难点:
抽象类 <————点击
接口 <————点击
十、String类
String <————点击
十一、异常
异常 <————点击