Java基础学习笔记
以下是笔记是边看视频,边做的笔记。
视频地址:https://www.bilibili.com/video/BV12J41137hu (狂神说Java)
Java基础思维导图
左键在“新标签页打开图片”可查看高清大图

一、Java入门
-
特性与优势
高可用 高并发 高性能
面向对象、多线程、简单性(去掉了内存分配、指针)、跨平台(可移植性)、高性能、分布式、动态性、多线程、安全性、健壮性 -
Java三大版本
JavaME JavaSE JavaEE
JDK JER JVM
JDK 开发需要使用
JER 运行需要使用
JVM 虚拟机 -
数据类型
byte short int long double float char boolean
数字默认值:0 0.0
布尔默认值:false引用类型默认值:null
0b 二进制
0x 十进制
0 八进制 -
idea 生成JavaDoc文档
生成文档 javadoc -encoding UTF-8 -charset UTF-8 Demo05.java -
变量作用域
类变量 static
实例变量
局部变量 -
基本运算符
+ - * / %
三元运算符
++a 先运算后赋值
a++ 先赋值后运算
位运算
A:0011 1100
B:0000 1101
A&B (与) 两者都是1,则得1
A|B (或) 两者都是0,则得0
A^B (异或) 两者相同得0,否则是1
~B (取反)
<<(左移) * 2 2<<3 = 16
>>(右移) / 2
二、结构
顺序结构
循环结构
while、DoWhile、for、增强for循环
条件结构
if、switch
流程控制
break、continue
三、方法
重载、命令行传参、可变参数
递归,就是自己调用自己,递归可算出积乘。递归层次不宜算得太多。
边界条件、前阶段、返回阶段
引用传递、值传递
四、数组
定义动态数组
类型[] 变量名 = new 类型[]
静态数组
类型[] 变量名 = {1 , 2, 3}
对象数组
对象[] 变量名 = {对象, 对象}
多维数组
类型[][] 变量名 = {{}, {}, {}}
堆栈
堆:存放new的对象和数组,可以被所有线程共享,不会存放别的对象引用
栈:存放基础变量类型 引用对象的变量
冒泡排序
有多少值,循环多少次,每一次循环求出最大值或最小值,置于当前循环的索引,后续循环会越来越少,越来越快。
稀疏数组
记录原始数组的坐标与值
五、面向对象(OOP)
本质:以类的方式写代码,以对象的方式封装数据
构造器:有参构造、无参构造
调用父类的构造器,必须在子类构造器的第一行
super与this不能同时调用构造器
三大特性:封装、继承、多态
多态:同一个事物具有多种形态
对象的方法与属性会存储在方法区,实例化的对象名会存储在栈,对象内容存储在堆
程序设计:高内聚、低耦合
封装:属性私有,get/set
继承:子类无参不能调用父类有参,除非在构造器中用super(有参)
重写:子类重写父类的方法,子类和父类的方法一致,方法体不同
多态:
多态是方法的多态,属性没有多态
存在条件:继承关系,方法需要重写,父类引用指向子类对象
不能重写的方法:static、final、private
instanceof:判断两个类是否有父子级关系
子类可转父类可能会丢失一些方法,父类转子类不会
父转子:Student student = (Student)person;
子转父:Person person = student;
代码块:静态代码块、匿名代码块
静态导入包:import static java.lang.Math.random;
最终类 final 不可被继承
抽象类 abstract
1、抽象类中的方法在继承类必须被实现,抽象类无法实现抽象方法。
2、抽象方法只能存在抽象类中
3、抽象类不能通过new实例化
4、抽象类可以写普通方法
个人理解,抽象的存在是为了规范类,使类具有约束性,并能体现面向对象的思维
接口 implements
普通类只有具体的实现,抽象类有实现和规范,接口只有规范
接口的本质是契约,接口中的方法默认public abstract
一个类可以实现多个接口
接口命名:UserService,实现类命名:UserServiceImpl
可利用接口实现多继承
接口定义的变量都是静态的常量
接口不能被实例化,没有构造方法
内部类,可以使用外部类的属性与方法
静态内部类,无法使用外部类的属性与方法,除非是静态的
局部内部类,存在于方法的类
匿名内部类,实例后,未保存实例化的对象,实例化接口,需要直接实现
一个文件中,只能有一个public的外部类
六、异常
异常关键字:try、catch、finally、throw、throws
异常,分为虚拟机异常Error、人为异常Exception
try至catch是要监听的代码块,catch中是出现异常的处理,finally无论是否出现异常,都会执行
可写多个catch,根据异常权重排序(从小到大)
主动抛出异常 throw new ArithmeticException()
方法抛出异常 throws ArithmeticException()
可以自定义异常,继承Exception

浙公网安备 33010602011771号