首页 > 编程语言 > 详细

Java基础梳理

时间:2020-09-27 21:52:35      阅读:38      评论:0      收藏:0      [点我收藏+]

JavaSE

基础语法

注释

行内注释 //

多行注释 /* */

文档注释 /** */ Javadoc生成帮助文档

标识符

关键字

数据类型

基本数据类型

整数:byte 1 short 2 int(默认) 4 long 8

浮点数:float 4 double(默认) 8 BigDecimal

字符:char 2 ASCII utf-8 Unicode

布尔值:boolean 1位

引用数据类型

接口

数组

类型转换

自动类型转换(低转高)

强制类型转换(高转低)

变量和常量

type varName = value;

作用域

类变量

实例变量

局部变量

常量

final MAX_A = 10;

命名规范

1.见名知意

2.驼峰命名(变量、方法)

3.类,首字母大写,驼峰命名

4.常量:大写+下划线

5.不要使用拼音命名

运算符

算术运算符:+ - * / % ++

赋值运算符:=

关系运算符:< > <= >= == != instanceof

逻辑运算符: && || !

位运算符: & | ^ ~ >> << >>>

条件运算符: ?:

扩展运算符:+= -= /=

包机制

域名倒写

防止命名冲突

package

import

JavaDoc

JDK帮助文档

javadoc

javadoc -encoding UTF-8 -charset UTF-8 HelloWorld.java

@author @Version @Since @param @return @throws

流程控制

Scanner:用户交互 System.in

顺序结构:程序默认结构,自上而下执行

选择结构:if单选择结构 if else双选择结构 if elseif else多选择结构

switch:jdk支持了String类型 case穿透现象 break default

循环结构:while do while for for each

break continue return

方法

方法的定义

修饰符 返回值 方法名 (参数名){return返回值}

方法调用

类名.方法

对象.方法

方法重载

名字相同,参数列表不同

命令行传参

给main方法传递参数

doc窗口下 HelloWorld 后接参数

可变长参数

...

必须放在最后一个参数

递归

自己调用自己,给自己一个出口

面试常问

数组

数组的定义

new int[5]

{1,2,3,4,5}

必须是同一类型值

数组的使用

通过下标拿到值

异常:ArrayindexoutofBounds

for each遍历

二维数组

int [] []

Arrays工具类

排序算法

冒泡排序

选择排序

插入排序

快速排序

归并排序

希尔排序

堆排序

基数排序

面向对象

类与对象

类是对象的抽象:模板Class

对象是类的具体

构造方法

构造的重载:默认无参构造

如果手动定义有参构造那必须手动加一个无参构造

单例模式,需要构造器私有

new对象

栈存放引用

堆存放具体的对象

封装

属性私有,get、set方法

继承

extends

Object

子类拥有父类的全部特性

方法重写

this

super

多态

父类的引用指向子类的对象 Person person = new Student();

instanceof 关键字,如果匹配,可以进行类型之间的转换

修饰符

public

protected

private

static

final

abstract

接口

interface

约束,只能定义方法名

子类实现接口,必须重写其中的方法

只有一个方法的接口叫做函数式接口,可以使用lambda表达式简化

接口比抽象类更抽象

一个类可以实现多个接口

内部类

局部内部类

静态内部类

匿名内部类(重点)

异常

Throwable

exception—运行时异常:1/0 ClassNotFound NullPoint UnknowType 下标越界异常 .....

Error:AWT错误

JVM错误:StackOverFlow OutOfMemory

五个关键字

try{}

catch(){}

finally{}

throw 手动抛出异常

throw 方法抛出异常

自定义异常

继承Exception类即可

常用类

Object类

Math类

Random类

File类

创建文件、查看文件、修改文件、删除文件

包装类

自动装箱拆箱

Date类

Date

SimpleDateFormat yyyy-MM-dd HH:mm:ss

Calendar(建议使用)

String类

不可变性 final 操作量较少

StringBuffer

可变长 append() 多线程数量较大 效率低安全

StringBuilder

可变长 单线程数量较大 效率高不安全

集合框架

Collection

使用Iterator接口遍历

List(有序可重复)

ArrayList:add remove contains size

LInkedList: getFirst{} getLast{} removeFirst{} addFirst{} ...

vector

Stack

Set(无序不可重复)

HashSet

TreeSet

Map

HashMap(重点,面试高频问题):

JDK1.7:数组+链表

JDK1.8:数组+链表+红黑树

TreeMap

Collections工具类

泛型 <>

约束,避免类型转换之间的问题

IO流

字节流

OutputStream

InputStream

字符流

Reader

Writer

节点流

CharArrayReader,CharArrayWriter

CharInputStream,CharOutputStream

StringReader,StringWriter

pipe(管道流),PipeOutputStream

file流

处理流

buffer:BufferInputStream,BufferOutputStream

BufferReader,BufferWriter

data:DataInputStream,DataOutputStream

Object流

转换流:InputStreamReader,OutputStreamWriter

Filter流

print:PrintWriter,PrintStream

序列化—反序列化 Serializable transient(透明化)

多线程

进程和线程

run(),Start()

线程创建的方式

Thread start0 本地方法:Java无权调用,交给底层的C处理

private native void start0();

Runnable 函数式接口 lambda

Callable 可以有返回值

静态代理

new Thread(Runnable).start();

Lambda表达式

函数式编程

避免内部类定义过多

new thread(()->{System.out.println();}).start();

手动推导一遍lambda表达式

线程的状态

新建状态

就绪

运行

阻塞

死亡

常用的方法

sleep

join

yield

isLive

start

setPriority

interrupt

线程同步

多个对象操作同一资源,并发

队列+锁

Synchronized:同步方法,同步代码块(常用)

第一个线程进来拿到锁,后面的进行排队,知道这个人释放锁,后面的才能拿着锁进去。

死锁:两个人都抱着对方的锁—互斥、请求与支持、不剥夺条件、循环等待条件

Lock(优先级高):

ReentrantLock:lock,trylock,unlock

线程通信

缓冲区:消息队列

标志位:红绿灯

wait();

notifyAll();

线程池(pool)

池化技术

池的大小

最大连接数

保持时间

。。。

网络编程

GUI

注解和反射

 

 

 

 

 

 

 

 

Java基础梳理

原文:https://www.cnblogs.com/zzqzzqzzq520/p/13741243.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!