1. 大括号成对写,对其写
  2. 左大括号前要有空格
  3. 代码缩进
  4. 方法和程序块之间要有空行
  5. 并排语句加空格
  6. 运算符两侧加空格

 

常量与变量

image-20210221221113176

 

注释

 

关键字

常见的关键字:

image-20210221222537051

image-20210221222606889

image-20210221222632481

image-20210221222656603

 

常量

代码语句中直接引用的值即为常量(值不会发生变化)

 

变量

定义方法:数据类型 变量名称 = 初始化值;

 

数据类型

image-20210221223448191

整数型

名称解释
byte字节
short短整型
int整形
long长整型

浮点型

名称解释
float单精度(值最后必须加f)
double双精度

字符型

名称解释
char单字符(单引号)

布尔型

名称解释
booleantrue,false

 

类型转换

目标类型 变量名 =(目标类型)要技换的值

 

标识符

image-20210221224548358

 

运算符

image-20210221224949089

算术运算符

image-20210221225040332

自增与自减

在变量前,先自增(自减),再进行其它运算

在变量后,先以原值进行其它运算,再自增(自减)

 

关系运算符

image-20210221225713879

判断两个变量是否相等尽量使用:

 

逻辑运算符

运算符解释
&&并且,两个都对即为对
||或者,有一个对即为对
非,否定的意思

 

三元运算符

表达式?表达式:表达式; //类似于if的简化模式,表达式1对执行2,不对执行3

 

键盘录入(Scanner)

这是一个调试程序的东西,类似于打印到控制台,所以要先说

导包(将这个类所在的包进行导入)

创建对象(及引用类并用一个对象接收)

调用方法

 

流程语句

If

Switch

程序判断a是否等于一,如果没有break,那将继续往下执行,如果找到,将忽视其他的case

For

 

增强版

 

While

image-20210222131818653

Do ... While

先执行一遍然后再判断是否继续循环

Break和Continue

Break:结束整个循环语句

Continue:结束本次循环,循环语句将被继续

标号

结束指定循环语句,一般用于循环的嵌套,详细看代码

image-20210222134405538

随机数生成

Random

导包

创建对象

调用

Math.random()

方法

方法也叫函数,一般把指定功能放在一个方法中,提高复读型和效率

格式与例子

方法重载

在同一类中多个相同名称的方法但参数不同,这种情况叫方法重载,与返回值类型无关

一般用于相同功能,但是参数不同

 

数组

定义方法

定义之后如果没有赋值,那么默认是有初始值的

方法一:

方法二:

方法三:

引用方法

数组名[序号]:从0开始

遍历

数组名.length:返回数组的长度

内存图解

image-20210222155043192

创建数组是在内存中开辟一片空间,所以直接输出数组只是输出数组在内存中的地址,并不是值

数组=数组1:假如数组发生改变,数组1也会改变,因为数组=数组1只是把数组1在内存中的地址赋值给了数组,并没有将值给数组,所以实际上数组和数组1指的是同一个东西

image-20210222155526415

例子

 

面向对象

面向对象编程即为面向类,因为对象只是类的具体表现

 

构建方法

方法名与类名相同,没有返回值但可以有参数,创建对象的时候首先运行,如果没有程序将自动生成空的构建方法

 

重载

方法名相同,参数不同,返回值不一定相同的叫做重载

static

静态修饰符,在编译的时候先写入到内存中,可以使用类名直接调用

修饰方法时,方法中不能调用非静态变量

静态代码块

 

final

常量修饰符

封装

将一些功能封装成方法或者类,这样方便后期维护,提高了效率

 

类与对象

类:属性与行为的结合,抽象概念,一个功能的集合

对象:是该类的具体表现,对该功能的具体使用

属性(成员变量)与行为(成员方法)组成的一个文件叫类

对象

对象是类的具体表现,调用一个类需要先创建这个类的对象,调用对象即为调用这个类

创建与引用

一个对象创建的内存图解:

image-20210222173105292

两个:

image-20210222173203969

标准类

 

 

Private和This

Private

私有的,关键字,可以提高类的安全性,一般用于类中成员变量

作用:声明私有成员变量,别的类无法访问

This

指针,谁调用它它就只想谁,一般用于直接调用本类中的成员变量

例子:

继承

子类继承父类的所有非私有属性与方法

子类必须使用super创建父类对象(在子类构造方法中),继承实际上是创建子类对象,子类对象再在内存中开辟父类空间、

不能被继承的

  1. 父类私有的属性与方法
  2. 子类与父类不在一个包中并且修饰符为默认的属性与方法
  3. 构建方法

继承思路

初始化顺序:

image-20210414162634581

image-20210415091130886

重写

  1. 方法名相同
  2. 参数列表相同
  3. 返回值类型相同或是子类
  4. 访问权限不能小于父类

 

super

 

this调用本类,super调用父类

final

最终版,不允许继承(类,方法,属性),不能重写

抽象类

抽象类是抽象的,是一种规则,子类必须实现抽象方法

 

多态

概述:Polymorphismm同一个方法调用,由于对象不同会有不同的行为。

多态条件:重写、继承、引用(父类引用子类对象)。

父类引用指向子类对象并该父类引用调用子类重写的方法,此时就出现多态。

引用变量的两种类型

创建子类对象,用父类类型接收,运行时使用子类,编译时使用父类,形参可以设置为父类来接收子类的信息,指针依然只想子类

多态的好处:我们不用针对每一个具体对象都去写相应的方法,直接通过父类对象辨别具体对象去引用,找到重载的方法输出即可。

类型转换:

向上转型:编译类型>声明类型,小转大,自动转。 编译看左,运行看右。

如:Animal a = new Cat();

向下转型:编译类型<声明类型,大转小,强转。可以使用子类特有方法。编译看左,运行看右。

比如:Cat c = (Cat)new Animal;

instanceof

使程序的最终状态,只有在执行过程中才被决定,而非编译过程就决定

用于判别一个实例是不是属于某个对象(c instanceof Cat:c是不是属于cat对象)

 

接口

声明:interface(把class改成in。。。)

类与类之间只能单继承,类与接口可以多实现,接口与接口可以多继承

方法

1、抽象方法:格式 public abstract 返回值类型 方法名(参数列表)

注意事项

      1)、继承该接口类之后必须全部重写所有的抽象方法

      2)、如果有一个没有被重写,那么该实现类就必须是抽象类

2、默认方法: 格式 public default 返回值类型 方法名(参数列表){方法体}

注意事项

      1)、重写该方法,实现类的对象可以直接使用对象调用该方法

3、静态方法:格式 public static 返回值类型 方法名(参数列表){方法体}

注意事项

      1)、静态方法不可被子类对象调用

      2)、调用的格式:接口类名.方法名  

4、私有方法:

  A.普通私有方法: 格式 private 返回值类型 方法名(参数列表){}

  注意事项:该类方法的存在是为了解决本类多个默认方法中有代码重复,从而从重复代码抽取的一个普通方法,减少程序代码量

  A.私有静态方法: 格式 private static 返回值类型 方法名(参数列表){}

  注意事项:该类方法的存在是为了解决本类多个静态方法中有代码重复,从而从重复代码抽取的一个普通方法,嫌少程序代码量

 

异常

在不抛出异常的情况下,程序执行完 try 里面的代码块之后,该方法并不会立即结束,而是继续试图去寻找该方法有没有 finally 的代码块, 如果没有 finally 代码块,整个方法在执行完 try 代码块后返回相应的值来结束整个方法; 如果有 finally 代码块,此时程序执行到 try 代码块里的 return 语句之时并不会立即执行 return,而是先去执行 finally 代码块里的代码, 若 finally 代码块里没有 return 或没有能够终止程序的代码,程序将在执行完 finally 代码块代码之后再返回 try 代码块执行 return 语句来结束整个方法; 若 finally 代码块里有 return 或含有能够终止程序的代码,方法将在执行完 finally 之后被结束,不再跳回 try 代码块执行 return。 在抛出异常的情况下,原理也是和上面的一样的,你把上面说到的 try 换成 catch 去理解就 OK 了

image-20210506143838327

 

声明异常

抛出异常!

 

try-catch-finally

throws Exception

io流

分类

数据流:(以内存为视角)

操作:(都是抽象类)

image-20210510135712994

image-20210510135817651

image-20210510140031267

 

 

 

 

 

类:File(仅对路径操作)

构建方法:

File(String pathname)

方法功能
boolean exists()判断文件或目录是否存在
boolean isFile()判断是否是文件
boolean isDirectory()判断是否是目录
String getPath()返回此对象表示的文件的相对路径名
String getAbsolutePath()返回此对象表示的文件的绝对路径名
String getName()返回此对象表示的文件或目录的名称
boolean delete()删除此对象指定的文件或目录
boolean createNewFile()创建名称的空文件,不创建文件夹
mkdir()和mkdirs创建目录(单级和多级)
long length()返回文件的长度,单位为字节,如果文件不存在,则返回OL

 

image-20210511105352727

 

 

 

线程

api文档

实现方法:

企业级使用方法三

方法一(继承Thread类):

例子:

方法二(实现Runnable接口):

例子:

方法三( lambda )

 

 

方法

返回值方法解释
static ThreadcurrentThread()返回对当前正在执行的线程对象的引用。
StringgetName()返回此线程的名称。
voidjoin()优先执行,等待运行结束
static voidsleep(long millis)暂停
intgetPriority()返回优先级
voidsetName(String name)设置名称
voidsetPriority(int newPriority)设置优先级
voidstart()启动线程
   

多线程必定伴随着不稳定与不安全,所以需要同步来解决

同步方法:

同步代码快:

同步是一种高开销的操作,因此应该尽量减少同步的内容。

通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。

线程状态

image-20210520184816383

锁(lock)

线程池

此处略,自学中

测试(单元测试)

此处略,自学中

 

集合

img

集合框架

Collection 接口的接口 对象的集合(单列集合) ├——-List 接口:元素按进入先后有序保存,可重复 │—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全 │—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全 │—————-└ Vector 接口实现类 数组, 同步, 线程安全 │ ———————-└ Stack 是Vector类的实现类 └——-Set 接口: 仅接收一次,不可重复,并做内部排序 ├—————-└HashSet 使用hash表(数组)存储元素 │————————└ LinkedHashSet 链表维护元素的插入次序 └ —————-TreeSet 底层实现为二叉树,元素排好序

Map 接口 键值对的集合 (双列集合) ├———Hashtable 接口实现类, 同步, 线程安全 ├———HashMap 接口实现类 ,没有同步, 线程不安全- │—————–├ LinkedHashMap 双向链表和哈希表实现 │—————–└ WeakHashMap ├ ——–TreeMap 红黑树对所有的key进行排序 └———IdentifyHashMap image-20210329095540441

 

方法:image-20210329100030868

image-20210329143500902

 

ArrayList

LinkedList

方法同上

addFist:首部添加

addLast:尾部添加

getFist:返回首个

getLast:返回最后一个

removeFist:删除第一个

removeLast:删除最后一个

HashMap

迭代器(Iterator)

 

java对xml的增删改查(dom4j)

博客园:https://www.cnblogs.com/cwsya/articles/dom4j.html

笔记:https://biji.cwsya.com/dom4j.html