java语言基础
2021-03-24 13:01:37 0 举报
AI智能生成
java语言基础
作者其他创作
大纲/内容
HelloWorld
javac Hello.java
生成class
java Hello
编译型语言
解释型语言
IDEA
基础语法
注释
行内注释 //
多行注释 /* */
文档注释/** */
标识符
关键字
数据类型
基本数据类型
整数
byte 1字节
short 2
int(默认)4
long 8
浮点数
float 4
double (默认)8
BigDecimal(金融方面)
字符
char 2
ASCII
utf-8
Unicode
布尔值
boolean 1位
应用数据类型
类
接口
数组
类型转换
自动类型转换
低转高
基本数据类型:字节小-->字节大(int --> long)
接口:子类转父类
强制类型转换
高转低
(低)高
(int)long
变量和常量
type varName [=value]
作用域
类变量,static
实例变量
局部变量
常量
final MAX_A = 10;
用大写字母命名
命名规范
1、见名知意
2、驼峰命名
3、类,首字母大写,驼峰命名
4、常量:大写+ _ +大写
5、不要使用拼音
运算符
算术运算符
+ ,- ,*, /, ++, --
赋值运算符
=
关系运算符
>, <, instanceof
逻辑运算符
&&, ||, !
位运算符
&, |, ^, ~, >>, <<, >>>
条件运算符
? :
扩展运算符
+=, -+,...
包机制
域名倒写
防止命名冲突
import
JavaDoc
流程控制
Scanner
用户交互 System.in
顺序结构
程序默认的结构,自上而下执行
选择结构
if单选择结构
if-else双选择结构
if-elseif-else多选择结构
switch
jdk支持了String类型
case穿透现象
break
default
循环结构
while
do...while
for
增强for循环
break & continue
方法
定义
方法的调用
类名.方法
对象.方法
方法重载
名字相同,参数列表不同
命令行传参
给main方法传递参数
可变长参数
...
必须放在最后一个参数
递归
数组
定义
使用
通过下表拿到值
增强for循环遍历
Arrays工具类
排序算法
冒泡排序
选择排序
插入排序
快速排序
归并排序
希尔排序
堆排序
基数排序
面向对象
定义
类与对象
类是对象的抽象:模板Class
对象是类的具体
构造方法
构造的重载
默认的无参构造
如果手动定义了有参构造,必须手动再加一个无参构造
new对象
栈存放引用
堆存放具体的对象
封装
属性私有,get、set
继承
继承: extends
类实现一个接口用的关键字:implements
Object
子类拥有父类的全部特性
方法重写
this
super
Java是单继承,只能继承一个父类
多态
父类的引用指向子类的对象,Person person = new Student();
instanceof关键字,如果匹配,可以进行类型之间的转换
修饰符
public
protect
private
static
final
abstract
接口
interface
约束,只能定义方法名
子类实现接口,必须重写接口描述的所有方法
只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化
接口比抽象类更抽象
一个类可以实现多个接口
内部类
局部内部类
静态内部类
匿名内部类(重要)
异常
Throwable
Exception
Error
AWT错误
JVM错误
处理异常,五个关键字
try{}
catch(){}
先小后大
finally{}
throw
手动抛出异常
throws
方法抛出异常
常用类
Object类
hashCode()
toString()
clone()
getClass()
notify()
wait()
equals()
Math类
常见的数学运算
Random类
生成随机数
UUIND
File类
创建文件
查看文件
修改文件
删除文件
包装类
自动装箱和拆箱
Date类
Date
SimpleDateFormat
yyyy-MM-dd HH:mm:ss
Calendar(建议使用)
String类
不可变性final
StringBuffer类
可变长
append()
多线程,数据量较大
效率低,安全
StringBuilder类
可变长
单线程,数据量较大
效率高,不安全
集合框架
集合概念
对象的容器
和数组相似
定义了多个对象进行操作的常用方法
Collection接口
List集合
有序、有下标、元素可重复
ArrayList
add()
remove()
contains()
size()
LinkedList
getFirst()
getLast()
removeFirst()
.....
Vector
向量、动态数组
提供set/get, indexof, sublist等方法
Stack
Set集合
无序、无下标、元素不可重复
HashSet
底层HashMap
TreeSet
建议用迭代器Iterator遍历
迭代器(Iterator)
Iterator接口提供了很多对集合元素进行迭代的方法
每一个集合类都包括了可以返回迭代器实例的迭代方法
迭代器可以在迭代过程中删除底层集合的元素,但是不可以直接调用集合的remove(Object obj)删除,可以通过迭代器的remove()方法删除
Map集合
存储一对数据,无序、无下标,键不可重复,值可重复
没有迭代器
HashMap(面试高频问点)
jdk1.7:数组+链表
jdk1.8:数组+链表+红黑树
TreeMap
HashTable
Collections工具类
集合工具类
定义了除存取以外的集合常用方法
泛型<>
约束
避免类型之间的转换问题
io流
按数据流向分
读数据:输入流
写数据:输出流
按操作方式分
字节流
InputStream
普通字节输入流:FileInputStream
高效(缓冲)字节输入流:BufferedInputStream
OutputStream
FileOutputStream
BufferedOutputStream
字符流
Reader
FileReader
BufferedReader
Writer
FileWriter
BufferedWriter
节点流
处理流
buffer
BufferedReader
BufferedWriter
BufferedInputStream
BufferedOutputStream
序列化
Serializable
序列化
data
DataInputStream
DataOutputStream
object流
转换流
InputStreamReader
OutputStreamWriter
Filtter
FiltterInputStream
FiltterOutputStream
FiltterReader
FiltterWriter
print
PrintWriter
PrintStream
对文件进行操作
File类
多线程
进程
概念:一段程序的执行过程
一个进程有多个线程
线程
创建方式
继承Thread
start0, 本地方法:Java无权调用,交给底层的C处理
private native void start0();
实现Runnable接口
函数式接口
lambda表达式
Callable
可以有返回值
静态代理
new Thread(Runnable).start();
Lambda表达式
函数式编程
避免内部类定义过多
多线程
一个进程包含多个线程
优缺点
1、线程切换耗费额外的资源,切换本身也是耗时间的
2、解决了多部份代码同时运行的问题
线程调度
操作线程的状态
线程状态
新建
就绪
运行
阻塞
死亡
常用方法
线程插队join
线程休眠sleep
线程让步yield
isLive
start
setPriority
interrupt
线程同步
多个对象操作同一个资源,并发问题
队列 + 锁
Synchronized
同步代码块(常用)
同步方法
锁太多了
第一个线程进来拿到锁,后面的线程就要进行排队了,后面拿到锁才能进去
线程死锁
两个人都抱着对方的锁
互斥
请求于保持
不剥夺条件
循环等待条件
Lock(优先级高)
ReentrantLock
lock
trylock
unlock
线程通信
缓冲区:消息队列
标志位:红绿灯
wait();
wait等待
notify唤醒
notifyAll唤醒所有
线程池(pool)
池化技术
池的大小
最大连接数
保持时间
...
垃圾回收
System.gc()
网络编程
网络体系(7层架构)
应用层
应用层
HTTP, TFTP, FTP, NFS, WAIS, SMIP
表示层
telnet
会话层
SMTP, DNS
传输层
TCP, UDP
网络层
IP, ICMP, UUCP
数据链路层
数据链路层
物理层
通信要素
IP地址
端口号
https
443
mysql
3306
传输协议
TCP
可靠,效率低
三次握手,四次挥手
面向连接
java封装类
ServerSocket
Socket
UDP
不可靠,速度快
不会进行连接
Packet
服务器
IIS
apache
tomcat
nginx负载均衡
常用网络类
InetAddress
获取主机名、IP地址
Socket
管道,网络通讯也叫Socket通信
注解和反射
注解
元注解
内置注解
自定义注解
反射读取注解
反射
Class
newInstance()
类加载机制
Method
invoke(user3, "name")
存在重载,也需要写参数的类型
Field
set(user4, "name")
Construct
newInstance()
获取的时候需要,传递参数的class类型
破化私有关键字
setAccessible(true)
性能分析
正常 > 检测关闭的反射 > 默认的反射
反射获得注解,泛型...
单例模式大的探究
Stream
FOrkJoin
效率对比
0 条评论
下一页