JAVA
2021-06-07 13:21:52 21 举报
AI智能生成
Java思维导图
作者其他创作
大纲/内容
Java历史简介
计算机语言的历史
第一代计算机语言
机器语言00010110101
第二代计算机语言
汇编语言
第三代计算机语言
高级语言
面向过程
C语言
面向对象
Python/Java/PHP/C++/C#
核心优势
跨平台
JDK/JRE/TVM
JDK
Java Develpoment kit(java开发工具包)
JRE
Java Runtime Environment(Java运行时的环境)
JVM
Java Virtual Machine(Java虚拟机)
变量
数据类型
数值类型(0)
整形
byte
-128~127(-2^7~2^7-1)
short
-2^15~2^15-1
65536(-32768~32768)
int(default)
-2^31~2^31-1
±2.1G
long
-2^63~2^63-1
浮点型
float(0.0f)
double(default)
布尔类型boolean(flase)
ture
false
字符类型('\n0000')
char
0~65535
引用数据类型
数组
数组特点
数组类型相同的数据集合
不可改变长度
数组初始化
静态初始化
动态初始化
数组长度(Array.length)
数组遍历
字符型(char)
0~65535('\u000'~'\uffff')
数据类型的转换
自动转换(隐式转换)
小转大
long num=10;
强制类型转换(显式转换)
大转小
byte b=(byte)129;//会溢出,损失精度
运算符
算术运算符
++、--、+、-、*、/、%
比较运算符
>、>=、<、<=、==、!=
逻辑运算符
&& || !
& | ~
位运算符
& | ~
三目运算符
布尔表达式?表达式1:表达式2
移位运算符
>>、<<、>>>
砖石运算符
<>
赋值运算符
=、+=、-=
运算符的优先级
算术>比较>逻辑>赋值
方法
方法的声明
方法的重载规则
1.在同一个类中
2.方法名相同
3.参数列表不同
(1.)参数的个数不同
(2.)参数的数据类型不同
(3.)参数的顺序不同
4.只有返回值类型不同,不能构成重载
流程控制
顺序流程
控制流程
if( )
if( ){
}else{
}
}else{
}
if( ){
}else if(){
}else{
}
}else if(){
}else{
}
switch...case
switch(int、自动转化int、枚举类型、字符)
循环控制流程
while 先判断条件是否满足,如果满足就执行循环体内的语句,
执行完毕后再回来判断条件是否满足,如此无限循环;
直到条件不满足时,执行while循环后面的语句。
执行完毕后再回来判断条件是否满足,如此无限循环;
直到条件不满足时,执行while循环后面的语句。
for
break 跳出整个循环体,结束循环过程,执行循环后面的语句
continue 跳出本次循环,继续执行后面的循环语句
do while 不管是否满足循环条件,都会至少执行一次
死循环 for(; ;);
不是代码错误,属于逻辑错误
JDK中常用的引用类型
java.lang
String
length()
charAt(int index)
根据下标返回对应符
indexOf(int char)
根据字符返回下标
lastindexOf(int char)
返回最后一次出现的下标
substring(int index)
截取指定下标(包括)后的字符
substring(int beginindex,int endindex)
截取字符串,前包括,后不包括
replace(char oldChar,char newChar)
字符串替换
trim()
去首尾空格
System
out.print( ) 输出结果不分行
out.println( ) 输出结果分行
in
arraycopy对数组进行删除,添加(src要复制的数组即原数组,srcPos复制原数组的起始位置,
dest目标数组,destPos目标数组的下标位置,length要复制的长度)
被复制的数组,从第几个元素开始复制,要复制到的数组,从第几个元素开始粘贴,一共需要复制的元素长度;
dest目标数组,destPos目标数组的下标位置,length要复制的长度)
被复制的数组,从第几个元素开始复制,要复制到的数组,从第几个元素开始粘贴,一共需要复制的元素长度;
Comparable抽象方法
compareTo(T)
java.util
scanner
nextlnt()
nextDouble()
nextLine()
Arrays
toString(Object obj)
copt(T[ ] arr)
sort T[ ]
equals(T[ ],T[ ])
判断两个数组是否相等
Random
nextInt
Date
new Date()当前系统时间
String str = format(date)
Date date = parse(str)
gettime()1970-0101 00:00:00.000~
java.text
abstract DateFormat
SimpleDateFormat
排序算法
选择排序
每一个元素与第一个元素比较,如果小,交换
i:第一个元素的位置
0~arr.length-1
j:后面每个元素的位置
i+1~arr.length
a[i] >a[j] 交换
冒泡排序
两两比较,如果后面的小,交换
i:比较的轮数
0~arr.ength-1
j:比较的位置
0~arr.length-i-1
a[j]> a[j+1] 交换
快速排序
快速排序是指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,
然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。
然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。
其他排序
自学成才
JDK提供的排序方法
arrays.sort(arr[ ])
底层实现使用的排序算法中的快速排序
递归算法
在方法体内调用自己的方法
递归头
递归循环体
面向对象(OOP)
使用new关键字创建对象
构造方法(构造器)
JVM会默认有一个无参的构造方法
根据需求重载构造方法
this关键字
指代当前对象的关键字
NPE
null值调用属性或者方法会出现NullPointreException(空指针异常)
三大基本特征
继承( 继承是为了重用父类代码)
extends关键字继承父类除了构造方法以外的所有属性和方法
子类的构造方法中会默认调用父类的构造方法
super关键字
指代当前类的直接父类
必须放到构造方法中的第一行,且不能与this()并存
子类继承父类语句的执行顺序
输出父类的静态语句块
子类的静态语句块
父类的普通代码块
父类的构造方法
子类的普通代码块
子类的构造方法
子类的静态语句块
父类的普通代码块
父类的构造方法
子类的普通代码块
子类的构造方法
重写的规则
父子类中,必须要有继承
方法的访问权限不能比父类的方法更严格
相同的方法签名
方法名+参数列表相同
封装( 封装隐藏了类的内部实现机制,可以在不影响使用的情况下
改变类的内部结构,同时也保护了数据。)
改变类的内部结构,同时也保护了数据。)
访问权限修饰符
在编程规约中,所有的非特殊成员变量,不允许外部直接访问
其成员变量,必须将其私有,且提供对外公开的方法
其成员变量,必须将其私有,且提供对外公开的方法
多态(调用)—实现多态:继承和接口implement
继承只能单继承,接口可以多实现
继承只能单继承,接口可以多实现
赋值多态
传参多态
构成Java多态的规则
1.要有继承
2.要有方法的重写
3.父类的引用指向子类的对象(向上转型)
static关键字
从属于类
静态属性使用 类名.静态变量名
静态方法使用 类名.静态方法
在JVM中仅初始化一次
Objiect类
所有类的父类
equals()
==和equals()的区别
1.==比较的是地址
如果 == 两边是基本数据类型或者是字符串常量
比较的是常量池中的数值
比较的是常量池中的数值
2.equals()方法在没有重写父类方法时,比较的也是地址
3.再重写equals()后比较的是引用类型属性是否相等
在实际应用中必须重写equals()方法
hashcode()
调用本地操作系统的c++库的哈希地址
toString
由完全限定名+“@“+十六进制的哈希地址组成
子类按需求重写父类的toSrting()方法
引用类型直接输出对象名,默认调用toString()方法
Java实体类的编程规约
类必须实现可序化接口
成员变量私有化
对外提供公开的getter和setter方法
必须重写toSring()、equles()、hashcode()方法
final关键字
修饰变量:即为常量,不能被二次赋值
修饰方法:不能被子类重写,但是可以重载
修饰类:不能被子类继承
抽象类
由abstract关键字修饰的类
1.有抽象方法的类必须定义为抽象类
1.抽象类不一定有抽象方法
2.抽象方法不可以有方法体
2.抽象类不能创建对象
抽象类中定义属性共有的属性
定义子类必须要重写的方法
3.让子类继承
接口
比抽象类还抽象的抽象类 interface
在接口中定义的属性全为常量
public static final
接口中定义的方法全为抽象方法
类与接口的关系
implements
类与类的关系
extends
接口与接口的关系
extends
如果你是....就必须的会....
定义了某些规范
与抽象类的区别
1.抽象类只能单继承,而接口可以多实现
2.接口中的变量全是常量,方法全是抽象方法,
抽象类中可以有普通方法,方法可以有非抽象方法
抽象类中可以有普通方法,方法可以有非抽象方法
3.接口存在的意义就是为了定义规范,让子类去继承
Collection
面试笔试题:String、StringBuilder和StringBuffer的区别
1.String不可变长字符串
2.StringBuilder和StringBuffer可变长
3.用StringBuilder代替StringBuffered(效率高)
4.大量字符串操作时用StringBuilder代替String
5.StringBuffer线程安全,StringBuild线程非安全
List
Arraylist
底层数据结构为线性表,添加、修改、删除比较慢,
线程非安全,查询快,效率高
线程非安全,查询快,效率高
add(Object)
size()
get(index)
remove(index)remove(Object)
contains(Object)
toArray() E[]
iterator() Iterator<E>
LinkedList
底层数据结构为双向链表,添加、修改、删除比较快,
查询慢,线程非安全
查询慢,线程非安全
Vector
线程安全,效率低,不经常用
Set
HashSet<Object>
add()
向Hash Set中添加元素,输出结果是无序的
List、Set、Map接口的区别
List、Set同属于Collection接口
List添加有序,Set添加无序
Map使用put(K,V)方法添加元素,K唯一
List、Set可以使用iterator接口遍历,而Map不行
List里面的元素可以重复,Set里面的元素不可重复
多线程
继承Thread类,重写run()
实现Runable,重写run()
通过Callable创建线程
通过线程池创建线程
0 条评论
下一页