1. 循环语句

(1)注意

大部分循环控制语句与C语言C++语言相同,但JAVA中多出一个foreach语句

(2)块作用域

(复合语句)中的变量定义只在块中生效(在for语句小括号中的定义同样适用)
image.png

(3)Switch语句

注意:case后可以使用枚举变量中的数值
(枚举类型的使用)

(4)break

带标签的break语句(注意在需要跳出的循环最前边加入填出标志,只可以跳出不可以跳入)
image.png
image.png

(5)for each循环

  1. - **增强for循环只能用于collection集合与数组**
  2. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1579264856356-562cf545-8405-4214-b8ca-d90e64f6c25a.png#align=left&display=inline&height=82&margin=%5Bobject%20Object%5D&name=image.png&originHeight=82&originWidth=382&size=5202&status=done&style=none&width=382)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1579264874844-15168b7a-4daa-4121-a44d-27f9daf131eb.png#align=left&display=inline&height=21&margin=%5Bobject%20Object%5D&name=image.png&originHeight=21&originWidth=114&size=540&status=done&style=none&width=114)

(6)ToString方法(字符串显示数组)

  1. ![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1579265224861-495b0787-6885-44ef-894a-ccf9582f5b08.png#align=left&display=inline&height=108&margin=%5Bobject%20Object%5D&name=image.png&originHeight=108&originWidth=289&size=5630&status=done&style=none&width=289)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1579265231827-37d0b5f3-d910-4468-87dc-724b527c1e21.png#align=left&display=inline&height=31&margin=%5Bobject%20Object%5D&name=image.png&originHeight=31&originWidth=161&size=793&status=done&style=none&width=161)

2. 数组

(1)数组初始化及匿名数组

简化的不使用new的数组初始化
image.png
匿名数组(数组重定义,上一数组失效)
image.png

(2)数组拷贝(输出正确123456)

固定拷贝
image.png
指定拷贝(从第A个到第B个)
image.png
image.png

(3)数组排序

Arrays.sort()方法
image.png
image.png

(4)随机数产生

random方法
image.png
image.png

(5)数组填充

fill方法(输出一堆2)
image.png

(6)二维数组

定义方法与一维数组类似(但是可以不同的层包含不同数量的一维值个数)
image.png
快速输出
image.png
image.png
深度快速字符化输出(非常好用)
image.png

(7)二维数组深度理解

JAVA指针与数组关系
image.png

(8)数组函数

1)toArray方法拷贝数组

  1. int[] a = new int[5];
  2. int[] b = new int[5];
  3. a.toArray(b); //完全的拷贝,可以应用于列表

3. 泛型数组列表

(1)动态数组

java允许在运行时确定数组的大小
image.png

(2)ArrayList对象列表(其中a是person类型的对象)

1)对象的填充与修改
image.png
如果已经知道了填充列表的元素数量,则在填充之前调用ensureCapacity方法,或者直接填入参数
image.png
显然这个更香
image.png
查看Array List列表中元素书数量:size = 1;
image.png
填充之后确定了列表不再变化调用函数trimToSize
image.png
2)对象的访问与修改
使用set方法修改列表对象
image.png
使用get方法获取列表对象
image.png
使用add向中部添加元素(大型数组的代价可能有点大)
image.png
使用remove方法删除元素
image.png

(3)对象包装器(装箱+拆箱)

1)基础:所有基本类型都有一个与之对应的类,
2)特点:一旦构造了包装器,就不允许更改其中的值,且其类型是final,不能定义子类(效率低于数组)
3)使用:(虽与动态数组相似,但是上文的数组中不允许有基本类型出现,这里需要将基本类型转换成对象)
image.png

  1. Integer //整形
  2. Long //长整型
  3. Float //浮点数
  4. Double //双浮点数
  5. Short //短整型
  6. Byte //字节
  7. Character //字符型
  8. Void //空类型
  9. Boolean //bool类型

4)自动装箱:(就是一个自动转化,两者等价)
image.png
5)自动拆箱:(也是自动转化,两者等价)
image.png
6)包装器强制类型转换
将字符串转换为整型(Integer.parseInt(字符串,进制数(或者为空) ) )
image.png
7)任意数量参数的传递
使用强力万能符…(真的只是三个点,这是替代了一大串代码)
image.png
image.png
image.png

4. 泛型

(1)泛型的概念

  1. - **泛型就是一种不确定的类型(类似于重载),使用集合时可以确定某一种数据类型来创建(常用 E e 或者 T t 来表示),集合中的泛型还包含Object类(即用户自定义的所有类)**<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580570578599-f18980d5-2492-492f-8994-ab5796807551.png#align=left&display=inline&height=322&margin=%5Bobject%20Object%5D&name=image.png&originHeight=322&originWidth=652&size=216804&status=done&style=none&width=652)
  2. - **不使用泛型的后果:可能会抛出异常**<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580571815453-4366c36e-d284-4f64-91e8-ed5b0648d34b.png#align=left&display=inline&height=411&margin=%5Bobject%20Object%5D&name=image.png&originHeight=411&originWidth=377&size=23810&status=done&style=none&width=377)![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580571829591-c9cdec55-fe38-4696-87db-a034591b9671.png#align=left&display=inline&height=135&margin=%5Bobject%20Object%5D&name=image.png&originHeight=135&originWidth=64&size=1248&status=done&style=none&width=64)
  3. - 使用泛型的好处<br />1)避免了类型转换的麻烦,储存的是什么类型,取出就是什么类型<br />2)把运行期异常(代码运行之后会抛出的异常)提升到了编译期(写代码的时候)

(2)泛型的使用方法

  1. - **泛型在类中的使用**<br />**定义泛型类**<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580573015824-96c91d88-b648-4e8f-b873-5d3e5ccd9d67.png#align=left&display=inline&height=330&margin=%5Bobject%20Object%5D&name=image.png&originHeight=330&originWidth=457&size=16254&status=done&style=none&width=457)<br />**使用确定的输入类型的泛型类(超级厉害)(这其中还涉及了自动装箱和拆箱)**<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580573140496-d20cc698-d2f1-4bf1-8038-302888eaadd6.png#align=left&display=inline&height=104&margin=%5Bobject%20Object%5D&name=image.png&originHeight=104&originWidth=463&size=7121&status=done&style=none&width=463)
  2. - **泛型在方法中的使用**<br />**基本使用方法(这里不需要说明数据类型,直接传递就行了,****静态方法同样适用****)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580573650324-b91830bd-02fa-44e2-a4eb-6041025f662b.png#align=left&display=inline&height=235&margin=%5Bobject%20Object%5D&name=image.png&originHeight=235&originWidth=435&size=11905&status=done&style=none&width=435)**
  3. - **泛型在接口中的使用<br />****第一种:定义接口的实现类,实现接口,指定接口的泛型(scanner方法继承了itetor(迭代器)方法)**![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580574888959-da94d769-fca6-4e8a-8c7f-466df179d196.png#align=left&display=inline&height=440&margin=%5Bobject%20Object%5D&name=image.png&originHeight=440&originWidth=473&size=22689&status=done&style=none&width=473)<br />**第二种:接口使用什么泛型,实现类就使用什么泛型,即定义了一个含有泛型的类,创建对象时确定泛型的类型**<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580575471033-f0ad82fc-f59f-4b23-84af-015bf950d2ef.png#align=left&display=inline&height=440&margin=%5Bobject%20Object%5D&name=image.png&originHeight=440&originWidth=476&size=27241&status=done&style=none&width=476)

(3)泛型通配符

  1. - **简介**:泛型通配符“?”表示任意的数据类型(向方法中传递任意类型的集合)
  2. - **使用**:不能创建对象使用,只能作为方法参数使用<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580625378748-4d43351c-6145-4427-9f29-bfd69f10dd5b.png#align=left&display=inline&height=510&margin=%5Bobject%20Object%5D&name=image.png&originHeight=510&originWidth=476&size=23873&status=done&style=none&width=476)
  3. - 受限的泛型通配符<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580625782697-a6b03f4b-b97e-4d82-9f75-84d04ec90efa.png#align=left&display=inline&height=146&margin=%5Bobject%20Object%5D&name=image.png&originHeight=146&originWidth=549&size=11449&status=done&style=none&width=549)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/710889/1580625845069-2b7e1ad1-60b3-48d6-8cbe-c4bbad164264.png#align=left&display=inline&height=138&margin=%5Bobject%20Object%5D&name=image.png&originHeight=138&originWidth=557&size=10482&status=done&style=none&width=557)