JavaSE个人总结
2020-05-14 13:02:19 0 举报
AI智能生成
JavaSE个人学习总结
作者其他创作
大纲/内容
基础
小规范
对大小写敏感
1、类名以大写字母开头,后跟字母或数字
2、驼峰命名规则
3、文件名和类名的关系
2、驼峰命名规则
3、文件名和类名的关系
注释://或/* */或/** */
public class Hello{
public static void main(String[] args ){
System.out.println("Hello,World!");
}
}
public static void main(String[] args ){
System.out.println("Hello,World!");
}
}
CMD: javac Hello.java 生成class文件
java Hello
java Hello
Java关键字
百度一下
数据类型
基本数据类型
整型
byte:1字节
short:2字节
int:4字节
long:8字节
浮点型
float:4字节
double:8字节
金融:BigDecimal
字符
char:2字节
ASCII
UTF-8
Unicode
转义字符
布尔值
boolean(true false):1位
引用数据类型
类
接口
数组
类型转换
自动类型转换(按字节数低转高时)
强制类型转换(按字节数高转低时)
注:类类型转换一样,自动对应子类转父类
小技巧:布尔值转为0,1可以:b?1:0;
变量和常量
变量
声明:type varName [=value];
作用域
类变量(static)
实例变量(无static)
局部变量(在方法内部)
常量
声明:final
一般纯大写表示常量(可以下划线隔开MAX_NUM)
运算符
算术运算符
+ - * / % ++ --
赋值运算符
=
关系运算符
> < >= <= == != instanceof(判断子类是否属于父类或接口)
逻辑运算符
&& || !
位运算符
& | ^ ~ >> << >>>
条件运算符
? :
扩展
+= -= *= /=
包
一般域名倒写
package(必须写在第一行)
import
javadoc(JDK帮助文档)
@author
@version
@since
@param
@return
@throws
流程控制
顺序结构
程序从上而下执行
选择结构
if
if-else
if-else if-else
switch
case
break
default
循环结构
while
do while
for
增强for循环
break,continue,return
方法
声明
修饰符 返回值类型 方法名(参数名){
内容;
return ;
}
内容;
return ;
}
调用
1、类名.方法名
2、对象名.方法名
2、对象名.方法名
方法重载
针对方法名相同,参数列表不相同的情况
命令行参数传递
在CMD给Hello文件的main方法传递参数-java Hello aa bb cc
递归
给自己留一个出口
时间复杂度高
数组
声明:int[] a = new int[100];
int[] a = {1,2,3,4,5};
int[] a = {1,2,3,4,5};
使用
使用下标得到值
注意下标越界-ArrayindexoutofBounds
二维数组
int[][]
Arrays工具类
数组排序
对象与类
类是对象的抽象:Class
对象是类的具体
对象是类的具体
构造器
注意重载
默认无参数
手动定义了有参数的构造器最好再定义一个无参数的
单例模式,需要构造器私有
new 对象
栈中存放引用
堆中存放具体的对象
封装
将属性私有化,用get和set方法调用
继承
extends关键字
所有类继承Object类
子类会拥有父类的全部特性
注意方法重写
注意this和super的使用
注意只能单继承
多态
父类引用指向子类对象(Person person = new Student())
instanceof关键字,如果匹配(判断是该超类的子类),可以进行类型转换
常用修饰符
public
protected
private
static
final
阻止类的继承(String类就是final类)
abstract
无法实例化(new)
在类中可以不实现方法,在其子类实现
接口
interface声明一个接口
比抽象类更抽象
接口中只能定义方法名,子类实现接口必须重写方法
函数式接口
接口包含唯一的抽象方法
public interface Runnable{
public abstract void run();
}
public abstract void run();
}
可以用lamda表达式简化
interface Ilove{
void love(int a);
}
p s v main(...){
Ilove l = (a)->{
具体实现;
}
}
void love(int a);
}
p s v main(...){
Ilove l = (a)->{
具体实现;
}
}
注意一个类可以实现多个接口
内部类
匿名内部类
快速实现接口,只用一次
interface AA{
void aa();
}
void aa();
}
public static void test(AA a){
a.aa();
}
a.aa();
}
类名.test(new AA(){
void aa(){
实现;
}
} );
void aa(){
实现;
}
} );
静态内部类
class outer{
static class inner{
内容;
}
}
static class inner{
内容;
}
}
outer.inner a = new outer.inner();
局部内部类
在方法里定义内部类,出了该方法就不能用了
异常
总接口Throwable
Exception
运行时异常RuntimeException(逻辑错误)
1/0
ClassNotFound
NullPoint
UnknownType
下标越界
已检查异常CheckedException(编译器处理)
Error
AWT错误
JVM错误
StaticOverFlow
OutOfMemory
关键字
try
catch
注意捕获时:子异常在前,父异常在后
finally
throw(手动抛出异常)
throws(方法抛出异常)
自定义异常
继承Exception类
常用类
Object类
hashCode()相等的对象散列码相同
toString()
clone(),对象克隆,地址不同
getClass(),通过对象获得类的信息
notify(),多线程,唤醒处于等待状态的线程
waite(),多线程,当前线程立刻停止运行,处于等待状态
equals(),判断两个对象是否等价
Math类
Math.ceil() floor() round()
Math.abs() sqrt() pow()
Math.PI E
Math.random()
Random类
伪随机数
File类
创建文件
File f = new File("文件地址");
f.mkdir();//只要地址不对就没法创建
f.mkdirs();//地址不对就连地址一块创建
f.mkdir();//只要地址不对就没法创建
f.mkdirs();//地址不对就连地址一块创建
File f1 = new File("文件名");
f1.creatNewFile();//在项目路径下创建文件
f1.creatNewFile();//在项目路径下创建文件
查看文件
f.exists();//文件是否存在
f.isDirectory();//是否是目录
f.isFile();//是否是文件
new Date(f.lastModified());//最后修改的时间
f.length();//文件大小
f.getName();//获取文件名
f.getPath();//获取文件路径
修改文件
f.renameTo(new File("地址及新名字"));//文件改名
删除文件
boolean flag = f.delete();
包装类
基本数据类型与包装类对比
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double
自动装箱:编译器自动将基本数据类型转化为包装类
自动拆箱:自动反向转化
Date类
Date d = new Date(2000);//毫秒
d.getTime();//获得对应的毫秒数
d.getTime();//获得对应的毫秒数
SimpleDateFormat:将时间类Date转化为字符串yyyy-MM-dd HH:mm:ss
Calendar:日历类
get()获得时间
set()设置时间
add()计算时间
String类
不可被改变 final
length()
isEmpty()
charAt()
indexOf()
subString()
concat()
replace()
replaceAll()
split()
toUpperCase()
trim()
StringBuffer
可变长,线程安全,但效率低(用于多线程)
StringBuilder
可变长线程不安全,但效率高,常用
append();//在后面添加
reverse();//倒序
setCharAt();//设置值
insert();//插入值
delete();删除某区间的值
集合
Collection接口
List接口(有序可重复)
ArrayList
size();
add();
remove();
clear();
isEmpty();
toArray();
contains()
set();
get();
indexOf();
lastIndexOf();
建议用iterator遍历
List<String> a = new ArrayList<>();
for(Iterator<String> iter = a.iterator() ; iterator.hasNext() ; ){
String temp = iter.next();
}
for(Iterator<String> iter = a.iterator() ; iterator.hasNext() ; ){
String temp = iter.next();
}
LinkedList
getFirst();
getLast();
removeFirst();
addFirst();
push();
pop();
Set接口(无序不可重复)
HashSet(常用)
TreeSet
Map接口
HashMap(重点)
JDK1.7 数组+链表
JDK1.8 数组+链表+红黑树(避免链表太长影响效率)
JDK1.8 数组+链表+红黑树(避免链表太长影响效率)
TreeMap
Collections工具类
泛型<>
IO流
字节流
InputStream
FileInputStream
read()
close()
ByteArrayInputStream
OutputStream
FileOutputStream
write()
flush()
close()
ByteArrayOutputStream
字符流
(中文必须)
(中文必须)
Reader
FileReader
Writer
FileWriter
节点流
CharArrayReader
CharArrayWriter
StringReader
StringWriter
管道流
PipeInputStream
PipeOutputStream
处理流
buffer
字节缓冲
BufferedInputStream
BufferedOutputStream
字符缓冲
BufferedReader
BufferedWriter
data
DataInputStream
DataOutputStream
object
ObjectInputStream
ObjectOutputStream
转换流
InputStreamReader
OutStreamWriter
过滤Filter(就是buffer的四个)
打印流
PrintStream
PrintWriter
随机流
RandomAccessFile
合并流
SequenceInputStream
多线程
进程与线程
线程创建
Thread(本身实现了Runnable接口)
继承Thread类,重新run()方法,之后start()
Runnable
实现Runnable接口,重新run()方法,new Thread(实现接口的类的对象).start();
callable
静态代理
new Thread(Runnable).start();
lambda表达式简化 new Thread( ()->{
实现;
});
实现;
});
多线程中,Thread类的对象代理Runnable接口调用start方法
线程状态
创建状态
就绪
运行
阻塞
死亡
常用方法
sleep();//休眠
join();//等待线程终止
yield();//暂停当前线程
interrupt();//中断线程,不建议用,可以用标志位代替这个方法
isAlive();//测试线程是否处于活动状态
setPriority();//更改线程优先级
start();
线程同步
多个对象操作同一资源,并发
1、需要进入对象等待池,前面处理完再处理后面的
2、为保证安全,每个对象需要加锁Synchronized(队列+锁)
2、为保证安全,每个对象需要加锁Synchronized(队列+锁)
Synchronized
同步方法(弊端:锁太多)
同步代码块(常用)
死锁:两个对象互相抱着对方的锁
四个形成条件破坏其中一个就会解锁
四个形成条件破坏其中一个就会解锁
互斥
请求与保持
不剥夺
循环等待
Lock锁
ReentrantLock
显式定义的同步锁
显式定义的同步锁
lock();
unlock();
线程通讯
利用缓冲区
判断标志位
wait();
notifyAll();
线程池
提前创建线程放入线程池,使用时获取,用完放回
ExcutorService s = Excutors.newFixedThreadPool(池子大小);
网络编程
IP
端口
Socket编程
TCP
三次握手
四次挥手
面向连接
UDP
无连接
Packet
URL
GUI
AWT
Frame
监听事件
鼠标
键盘
窗口
文本框
动作事件
Swing
文本框
标签
按钮
文本域
面板
布局方式
关闭窗口
列表
注解与反射
注解
元注解
内置注解
自定义注解
反射读取注解
反射
Class类
newInstance()
类加载机制
Method
invoke();
Field
set();
Construct
newInstance()
获取时,传递参数的class类型
破坏私有关键字
setAccessible
收藏
0 条评论
下一页