java基础
2021-07-16 09:36:45 77 举报
AI智能生成
为你推荐
查看更多
java的基本学习路线
作者其他创作
大纲/内容
环境配置
java的由来、特点
java语言的特点
java运行机制
java是跨平台的
java回收机制(GC)
java简介
使用//或/* */
单行注释
使用/* *注释内容 */
多行注释
使用/** * @author 用户名 */
文档注释
注释的分类
注释的规范
java的注释规范
java语法基础
byte(1)
short(2)
int(4)
long(8)
数值型
默认值为0
float(4)
double(8)
浮点型
默认值为0.0
char(2)
字符型
默认值为'\\u0000'
boolean
布尔型
默认值为float
基本数据类型
类、对象、数组等
引用数据类型
默认值为null
java的数据类型
+ 、- 、*、 /、 %、 +=、 -= 、/= 、%=
算数运算符
&、|、^、<<、>>、>>>
位运算
++、--
自增、自减运算
> 、< 、==、 !=、 >=、 <=
比较运算
&&、||、!
逻辑运算符
条件表达式?值1:值2
条件运算符
java类型及运算符示例
运算符
从上到下,从左到右依次执行
顺序结构
if - else
break
continue
switch - case -default
break结束的是循环体;continue结束的是一次循环,没有结束循环体;
选择结构
for
while
循环结构
程序结构代码示例
程序结构
函数定义时给定的参数叫做形参
形参
调用调用时传递给函数的参数叫做实参
实参
按值传递
按地址(引用)传递
形参与实参的概念
函数的重载
变长(可变)参数
方法函数
方法和函数
一维数组
二维数组
多维数组
数组
面向对象映射的是人类社会的思维方式
什么是面向对象?
是对对象的规范定义
类
从同类个体中将群体的共性进行抽象
抽象
将抽象的结果封装到类中
封装
父类角度: 继承是使用已有的类派生新的类的一种方法途径; 子类角度: 子类通过继承获取父类允许子类获得的属性和行为一种途径;
继承
多态是父类和子类之间的一种关系;对于同名的行为子类展示或者扩展出来的与父类不同的行为状态;
多态
面向对象的核心
面向对象三大核心
私有的,本类可访问
private
本包的类可访问
默认
受保护的,本包的类及其子类可访问
protected
公开的,任何类都可访问
public
访问修饰符
构造方法名是固定的,是以类名作为构造方法名的;
构造方法没有返回值;
构造方法可以使用访问控制修饰符进行修饰,这和普通方法一样;
构造方法不能被其他的普通方法调用;
构造方法可以被 new 操作符调用;
构造方法之间可以调用,但是调用方式是通过 this(实参列表) 来进行调用;this必须放在第一行;
构造方法可以重载;
构造方法与普通方法的区别
每个类如果没有明确的显式写出构造方法,则由jvm默认提供一个不带参数的默认的构造方法;
如果一个类有显式的构造方法,则jvm默认提供的构造方法就失效了,如果还想使用默认的构造方法,则需要手动显式写出;
构造方法不能继承,不能重写,没有多态;
构造方法的语法规则
子类在执行构造方法的同时会递归的调用父类的构造方法;【在执行子类的构造方法之前会把所有父类的构造方法执行一遍】
子类的构造方法默认调用的是父类的默认的构造方法,所以要求被调用的父类提供默认的构造方法;
如果子类需要显式的调用父类的构造方法,则需要使用 super(实参列表) 来调用父类的构造方法;
super(实参列表)要求必须防在第一行;
继承下的构造方法的语法:
构造方法
在类中定义的变量
成员变量
在方法中定义的变量
局部变量
变量
局部变量和成员变量同名时,局部变量的值会覆盖成员变量的值;也即是同名时使用的值是局部变量的; 判定原则: 范围最小优先原则; 就近原则; 当局部变量和成员变量同名时,成员变量的值会被覆盖;如果此时需要使用成员变量的值,需要使用 this 关键字最为前缀即可;
this. 表示当前类的;用于区分被同名局部变量覆盖成员变量;
this(实参列表) 表示调用当前类的构造方法;【只能在第一行】
指代当前类的实例对象
this
super. 表示当前类的父类的属性和行为;用于区分被子类同名方法重写的父类方法;
super(实参列表) 表示调用当前类的父类的构造方法;【只能在第一行】
指代当前类的父类的实例对象
super
静态在jvm中是常驻内存的
非静态语句块在类每次new时都会执行,并且是在构造方法之前执行的;静态语句块只执行一次
静态的生命周期:从加载jvm开始到jvm运行结束为止
static可以修饰:类、方法、成员变量、语句块
语句块:使用 {} 标识的代码块; 主要作用是改变作用域范围
static只能修饰成员变量不能修饰局部变量
static修饰的静态方法或者静态语句块只能调用静态的对象【静态成员变量、静态的方法】
非静态的方法可以调用静态的和非静态的对象;也就是非静态方法可以调用所有的
static修饰的成员变量和方法可以类名直接调用;所以静态的成员变量也叫作类变量
static修饰的语句块叫做静态语句块,静态语句块只执行一次;作用:用于类加载的一些初始化操作;有点类似于构造方法的初始化作用
静态的
static
final可以修饰类、方法、变量(成员变量和局部变量)
修饰类表示该类不可被继承,防止继承滥用的
final修饰的方法表示这个方法不能够被子类重写,防止通过重写修改父类来修改父类方法的逻辑
基本类型:不允许在修改【值不能改】
引用类型:不允许修改引用地址,存储空间中的内容可以修改; 【地址的值不能改;地址的存储空间内容可以改】
final修饰的变量表示这个变量的值一旦被初始化,则不允许再进行修改
static final 修饰的成员变量 叫做静态常量 ; 命名规则 字母全部大写用_分割; 静态常量要求声明时就要进行初始化;
最终的
final
abstract可以修饰类、方法; abstract修饰的类叫做抽象类;修饰的方法叫做抽象方法;
抽象的
abstract
接口是一组行为规范的定义; 接口是一种特殊的抽象类;特殊到需要使用interface重新定义;
类多继承接口:一个类【class】可以继承多个接口;使用implements关键进行继承【实现】
接口多继承接口:一个接口可以继承多个接口;使用extends关键字进行继承;
支持多继承(实现)
接口
interface
关键字
Object是java中顶级类,是所有类的直接或间接父类
【所有类都会包含这些方法】 hashCode() clone() equals() toString() wait() notify()
Object
String适用于处理字符串的工具类,字符串本质上是一个字符的数组
String字符串一旦初始化之后,长度是不可以改变的; String字符串具有数组的特性,可以使用下标进行访问; 掌握字符串和字符之间的异同点; 掌握字符换工具类中常用的方法;
String
Util
byte-->Byte
short-->Short
int-->Integer
long-->Long
float-->Float
double-->Double
char-->Character
boolean-->Boolean
采用面向对象的方式对基本数据类型进行封装
包装类
定义在成员变量位置上的内部类就是成员内部类
成员内部类
使用static修饰的成员内部类就是静态内部类
静态内部类★★★
定义在局部变量位置上的内部类就是局部内部类
局部内部类
没有变量名的局部内部类就是匿名内部类,也是定义在局部变量位置上的内部类
匿名内部类★★★
定义在类内部的类就是内部类
内部类
静态语句块首先执行;【只执行一次】非静态语句块;【每次new都执行,且在构造方法之前】构造方法;
(1)执行父类的静态语句块; (2)执行子类的静态语句块; (3)执行父类非静态语句块; (4)执行父类的构造方法; (5)执行子类的非静态语句块 (6)执行子类的构造方法
java对象的执行顺序:
== 判断两个变量的地址引用是否相同; 地址引用相同内容一定相同;反之,不一定;
== 操作符是判定的两个对象是否相等;【基本类型是值相等;对象类型是通过判定地址引用是否相同来判定相等,也就是判定是否为同一个存储地址】
==
equals是用来判定内容是否相同;
equals方法一般是用来判定两个对象的内容是否相同
其他的子类必须对继承自Objcet类的equals方法进行重写;重写的目的是 让equals方法具有判断内容相等的功能;例如 String类,重写了equals方法;
equals
==与equals:
面向对象的详细概念
面向对象
错误,是jvm在运行过程中不应该发生的严重问题;一般会影响jvm继续运行,且是不可控的
Error
异常,是jvm在运行过程可以捕获的可以处理可以预料一些问题;一般异常不会影响jvm继续运行;但是异常需要进行捕获处理
Exception
Throwable
发生在编译阶段的异常;要求必须进行异常处理,否则无法通过编译; 也叫作 检查性异常
编译时异常
发生在运行阶段的异常;不要求进行异常处理,【一般通过良好的编程规范来进行规避】,数组越界异常、除数为0异常、空指针异常
运行时异常
根据发生的时机分为
要求在编码时必须进行显式的异常处理;也叫作 编译时异常
检查性异常
在编码是不要求记性显式的异常处理,但是在运行时会发生的异常; 也叫作 运行时异常
非检查型异常
根据异常是否需要进行预处理
异常的分类
异常
类似数组,查改快,增删慢
ArrayList类
类似链表,增删快,查改慢
LinkedList类
List接口
是有序列的,可重复的,可以为null
使用hash散列存储,没有下标,无法使用下标遍历继承了Iterator接口,可以使用迭代器进行遍历
是不可重复的,无序列的,没有排序,可以为null
HashSet类
使用红黑树【平衡二叉树】存储,没有下标,所以无法使用下标遍历;继承了Iterator接口,可以使用迭代器进行遍历
是不可重复的,无序列的,排序的,不能为null
TreeSet类
使用双向链表存储,没有下标,无法使用下标遍历继承了Iterator接口,可以使用迭代器进行遍历
是不可重复的,有序列的,没有排序,可以为null
LinkedHashSet类
Set接口
Collection接口
使用hash散列存储,没有下标,所以无法使用下标遍历
键值是不可重复的,无序列的,没有排序的,可以为null
HashMap类
使用红黑树【平衡二叉树】存储,没有下标,所以无法使用下标遍历
键值是不可重复的,无序列的,排序的,不能为null
TreeMap类
使用双向链表存储,没有下标,所以无法使用下标遍历
键值是不可重复的,有序列的,没有排序的,可以为null
LinkedHashMap类
Map接口
存入TreeMap中的元素要么实现了Comparatable接口;要么使用Comparator接口作为构造参数创建Set对象
使某个类实现接口后具有比较的功能,通过重写comparaTo(Object o)方法
Comparable
Comparator
Collections工具类
是一个规范两个对象之间进行比较的行为接口
集合
泛型是对某一类未知的类型的统称
在集合中使用泛型来表示集合可以处理的类型范围
要求在能够明确泛型的地方一定要使用明确的泛型,可以减少不必要的非检查性异常
泛型
FileInputStream
ObjectInputStream
InputStream
FileOutputStream
ObjectOutputStream
OutputStream
字节流
InputStreamReader
Reader
OutputStreamWriter
Writer
字符流
IO流
继承Thread类
实现Runnable接口
实现的方式
代码+数据
程序
在cpu中动态执行的程序就是进程;进程是操作系统分配资源的基本单位;【像一条流水线】
进程
是微进程;一个进程中包含若干个线程,线程之间是共享进程的资源的;线程是cpu资源调度的基本单位;【像流水线上的工人】
线程
新建线程
可运行状态(就绪)
阻塞
运行状态
死亡(销毁)
五态图
新建线程
调用start方法
可运行状态
调用sheep方法
调用join方法
调用wait方法
等待队列
调用notify、notifyAll方法
锁池
七态图
使用时必须使用synchronized(同步),使方法同步或代码块同步
线程状态
状态图地址
互斥条件;【资源具有互斥性,只能有一个进程使用】 不可剥夺条件;【一旦持有之后,不会主动放弃】 请求与保持条件;【先申请一部分资源,再继续申请后续资源】 循环等待条件;【资源不足时可以继续等待】
形成的条件(必须全部满足才能形成死锁)
只需打破其中一条即可
解锁
死锁
多线程
序列化:是一组信息在经过IO、网络等传输过程中,对这组信息进行编码,保证接收方可以按照编码的进行重新组合该对象【反序列化】
需要进行序列化的对象需要实现一个 Serializable 接口,该接口没有方法,只是一个标识性接口,告诉jvm要进行序列化处理
序列化 (Serialization)
一般和序列化进行搭配使用; 作用就是使用transient修饰的属性,不会被序列化;在序列化过程中,该属性的值会使用默认值代替;
瞬时(transient)
将内存中某个时间的快照值写出到文件进行保存; 对象流要求必须进行序列化才能处理
网络编程
反射
JDBC
java基础
在集合中如果指明了泛型类型可以避免一些强制的类型溯型; 如果集合指明了泛型,则该集合只能处理该类型的值; 如果指明泛型,泛型默认的类型是Object类型;
0 条评论
回复 删除
下一页