JAVA基础
2019-08-17 11:30:16 1 举报
AI智能生成
javaSE
作者其他创作
大纲/内容
集合
Collection
List
ArrayList
ArrayList集合加入1万条数据,应该如何提高效率?
LinkedList
Vector
Set
HashSet
TreeSet
Queue
方法
toArray
add:最集合末尾追加
addAll(Collection c):将集合c中的所有元素添加到该集合的末尾
clear:清空集合
remove(Object o):删除集合中的指定元素
size:返回集合中元素个数
iterator:返回一个Iterator对象,用于遍历数组
contains:是否包含指定元素,返回Boolean
Collection与Collections的区别
Map
子类
HashMap
优点:查找快,时间复杂度是O(1)
缺点:空间浪费
特点
无序,不支持排序
允许放null为key
key的值不能重复,重复的话新value覆盖旧value
key的值要为对象,此类要满足什么条件?
TreeMap
优点:支持排序
缺点:查找慢
特点
不允许放null为key
支持排序
key的值不能重复,重复的话新value覆盖旧value
LinkedHashMap
Hashtable
方法
values:获取所有value,返回Collection集合
keySet:获取所有的键,返回Set集合
put: 添加一个 key-value 对
size: Map 里的 key-value 对的个数
get(index):返回指定键的值
Entry
getKey:返回entry里包含的key值
getValue:返回entry里包含的value值
setValue(String s):将所有的value改为s
访问
list通过索引来访问
map通过key来访问
set通过元素本身来访问,这也是set集合中元素不能重复的根本原因
泛型
类型
声明阶段
使用阶段
优点
代码更加简洁(不用强制转换)
程序更加强壮(只要编译不报错,运行就不会报错)
可读性和稳定性(在编写集合的时候就确定了类型)
遍历
iterator
用法
hasNext:被遍历的集合有没有下一个元素,有就返回true
next:返回集合中的下一个元素
子主题
lambda表达式
java想拥有函数式编程
要求:一个接口中只有一个抽象方法
lamdba用来代替匿名内部类
例子
Collections
sort:排序
max:最大的
min:最小的
binarySearch:查找
reverse:逆序
disjoint:俩集合中没相同的元素返回true
各种区别
重载与重写
重载
重写
int与Integer
静态变量与实例变量
&与&&
值传递与址传递
接口与抽象类
深拷贝与浅拷贝
深拷贝
浅拷贝
==与equals()
JDK,JRE,JVM区别
JVM
类的加载
java的跨平台性
多线程
基本概念
程序
进程
线程
进程与线程的区别
进程是资源分配的基本单位,线程是调度和执行的基本单位
线程是进程的一部分,线程称为轻量级进程
多个程序运行是多个进程,一个进程中有多个执行过程是多线程
进程是独立的内存空间,进程切换开销大;线程是共享内存空间的,线程切换开销小
java中如何实现多线程
继承Thread类,重写run方法,调用这个类对象的start方法
实现Runnable接口
线程的状态
新生状态
就绪状态
运行状态
阻塞状态
死亡状态
锁机制
synchronized内置锁
修饰
代码块
普通方法
静态方法
特性
原子性
可见性
释放
synchronized声明不会被子类继承
Lock显式锁
方法
run
start
sleep
yield
sleep与yield的区别
join
setDaemon
wait
notify
一个线程只能启动一次
优先级
setPriority(int):设置优先级
getPriority():获取优先级
常量
MAX_PRIORITY:最高优先级(10)
MIN_PRIORITY:最低优先级(1)
NORM_PRIORITY:默认优先级(5)
执行顺序
静态初始化块先执行,并且只执行一次
非静态初始化块再执行,每次new对象,都会执行
构造函数最后执行,每次new对象都会执行
网络编程
IO流
路径
绝对路径
相对路径
分类
按大小分
字节流
缓冲字节流
BufferedInputStream
BufferedOutputStream
文件字节流
FileInputStream
从本地硬盘读
构造
传String文件路径
传File对象
方法
read()
read(byte[] b)
read(byte[] b,int off,int len )
FileOutputStream
构造
传String文件路径
传File对象
方法
write()
write(byte[] b)
write(byte[] b,int off,int len )
字符流
文件字符流
FileReader
FileWriter
缓冲字符流
BufferedReader
BufferedWriter
作用
按功能分
过滤流
缓冲流
BufferedInputStream
BufferedOutputStream
数据过滤流
DataInputStream
DataOutputStream
对象序列化
ObjectOutputStream
ObjectInputStream
PrintWriter
将字节流转为字符流
InputStreamWriter
OutputStreamWriter
节点流
按方向分
输入流
输出流
步骤
创建节点流
包装过滤流
读写数据
关闭流
File类
方法
creatNewFile:创建文件
delete:删除
mkdir:创建目录(文件夹)
listFiles:列出目录下所有东西
getName:获取文件名
公共语言基础
数据类型
基本数据类型
byte(1)
short(2)
int(4)
long(8)
char(2)
boolean(1或4)
float(4)
double(8)
引用数据类型
数组
类
接口
String
类型转换
自动转换
特例
强制转换
运算符
赋值:=
算数:+,-
比较:>,<
三目:a?b:c
逻辑:&&
位:&
拓展:++
连接:+
流程控制语句
分支型
if-else
switch-case
循环型
for
foreach
while
do-while
数组
定义
初始化
静态
动态
赋值与取值
取值:一般利用for循环
赋值:a[i]=3;
应用
求值
排序
查找
拷贝
注意
多维数组
遍历数组
for
foreach
while
方法
要素
参数列表
返回值
方法名
方法逻辑题
调用
方法名()
重载
定义
注意
参数
形参
实参
常用方法
输入
Arrays
sort:排序
toString:取每个元素
copyOf(原数组,新数组长度)
equals:判断俩个数组是否相同
Math
abs:绝对值
random:随机数(0~1)
max(a,b):俩个数的最大值
min(a,b):俩个数的最小值
pow(x,n):x的n次方
sqrt(x):根号下x,返回的是double类型
floor:向下取整
ceil:向上取整
round:四舍五入
值传递与址传递
值传递
址传递
面向对象
思想
类与对象
关系:类是对象的抽象,对象是类的实例
构造方法
get,set方法
访问修饰符
public
protected
private
默认
instanceof
三大特征
封装
继承
单根继承
创建
构造方法
父类设计原则
尽量隐藏父类内部数据
不让子类随意访问修改父类方法
不在构造器中使用将被重写的方法
多态
引用变量
编译时类型
运行时类型
条件
继承
重写
父类引用指向子类对象
多态只发生在方法上,成员变量不存在多态
引用类型的转换问题
向上转型
向下转型
关键字
static
final
this
native
super
抽象
抽象类
抽象类不能new对象
抽象类中可以有非抽象方法,甚至可以都是非抽象方法
抽象类不能用private,protecterd修饰
抽象类可以继承抽象类,可以实现接口
抽象类中有构造器,但不是用来new对象的,而是用来给子类调用的
接口
接口中只能定义静态常量,不能定义普通成员变量
接口中的方法必须都是抽象的
接口只能用public修饰或默认
不能被final修饰
不能实例化
一个接口可以继承多个接口,但接口不能实现接口
一个类可以实现多个接口
接口没有构造方法
abstract和static不能同时修饰方法
异常
分类
运行时异常
编译时异常(checked异常)
Throwable
Error
Unchecked Exception
Exception
Checked Exception
IOException
SQLException
用户自定义Exception
Runtime Exception
ArrayIndexOutOfBoundsException
ArithmeticException
NullPointerException
ClassCastException
NumberFormatException
处理异常
抛出异常(throws)
捕获异常(try-catch-finally)
try
catch
finally
注意事项
枚举
本质
枚举继承了java.lang.Enum类,枚举不能显示继承任何类
枚举中只能是静态常量
枚举类本身不能new,不能被继承
静态的values()方法遍历枚举实例,返回实例的数组
switch-case支持枚举类型
枚举可以实现多个接口,让每个枚举值分别实现接口中的方法
枚举类与普通类的区别
枚举的构造方法用private修饰
枚举的所有实例在第一行列出,并且默认由public static final修饰
不能被继承
内部类
匿名内部类
特点
没有类名
必须继承一个抽象类或实现一个接口
规则
没有构造方法
只能创建一个实例对象
不能定义静态的成员
不能用四种访问修饰符,static,final,abstract修饰
成员内部类
可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)
当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员
静态内部类
静态内部类里才可以写静态的方法;其他内部类中不能写静态方法
局部内部类
常见类及API
String相关知识
String
本质
char类型数组,不可以改变
成员方法
charAt(int):返回指定索引的值
s1.concat(s2):拼接字符串
compareTo(str):与指定字符串比较,返回的是int
substring():截取字符串
split(","):将字符串以,分割成字符串数组
valueOf:将参数类型转为字符串。比如:String.valueOf('d')
startsWith:以什么开始,返回boolean
endsWith:以什么结束
contains:是否包含指定字符串
equals:俩个字符串是否相等
trim:去掉字符串俩端的空格
length():字符串中获取长度是方法
isEmpty():判断是否是空字符串
indexOf:返回第一次出现字符的位置
codePointAt:将指定字符转为Unicode码
getByte:将字符串转为字节码,返回byte数组
创建
String s="123";
String s=new String("lalla");
创建了几个字符串对象
+连接就会产生新的字符串对象
虚拟机优化问题
拼接变量与常量区别
重中之重
在项目中,字符串比较要用equals,不要用==
javap -c class文件名 :用这条命令在workspace的out里看编译过程
StringBuffer
本质与StringBuilder一样
比StringBuilder多了一个线程安全
StringBuilder
本质:可变的char数组
方法
append:拼接
insert(int offset, String str):插入
delete:删除
toString:StringBuilder转String
优化
包装类
Integer
valueOf
返回值是Integer
传入int,String(必须是数字字符串)
parseInt
返回值是int
传入数字字符串
Character
Byte
Short
Long
Float
Double
Boolean
自动拆箱与自动装箱
自动装箱
自动拆箱
Object里的一些常用方法
equals
equals与==的区别
hashCode
toString
BigInteger
常量
ONE
TEN
ZERO
方法
BigInteger.valueOf(long):将一个long转为BigInteger
add:加法(返回BigInteger)
compareTo:比较(返回int)
divide:除法(返回BigInteger)
multiply:乘法(返回BigInteger)
subtract:减法(返回BigInteger)
BigDecimal
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容