1. 循环语句
(1)注意
大部分循环控制语句与C语言C++语言相同,但JAVA中多出一个foreach语句
(2)块作用域
(复合语句)中的变量定义只在块中生效(在for语句小括号中的定义同样适用)
(3)Switch语句
注意:case后可以使用枚举变量中的数值
(枚举类型的使用)
(4)break
带标签的break语句(注意在需要跳出的循环最前边加入填出标志,只可以跳出不可以跳入)

(5)for each循环
- **增强for循环只能用于collection集合与数组**<br /> 
(6)ToString方法(字符串显示数组)
<br /> 
2. 数组
(1)数组初始化及匿名数组
简化的不使用new的数组初始化
匿名数组(数组重定义,上一数组失效)
(2)数组拷贝(输出正确123456)
(3)数组排序
(4)随机数产生
(5)数组填充
(6)二维数组
定义方法与一维数组类似(但是可以不同的层包含不同数量的一维值个数)
快速输出

深度快速字符化输出(非常好用)
(7)二维数组深度理解
(8)数组函数
1)toArray方法拷贝数组
int[] a = new int[5];int[] b = new int[5];a.toArray(b); //完全的拷贝,可以应用于列表
3. 泛型数组列表
(1)动态数组
(2)ArrayList对象列表(其中a是person类型的对象)
1)对象的填充与修改
如果已经知道了填充列表的元素数量,则在填充之前调用ensureCapacity方法,或者直接填入参数
显然这个更香
查看Array List列表中元素书数量:size = 1;
填充之后确定了列表不再变化调用函数trimToSize
2)对象的访问与修改
使用set方法修改列表对象
使用get方法获取列表对象
使用add向中部添加元素(大型数组的代价可能有点大)
使用remove方法删除元素
(3)对象包装器(装箱+拆箱)
1)基础:所有基本类型都有一个与之对应的类,
2)特点:一旦构造了包装器,就不允许更改其中的值,且其类型是final,不能定义子类(效率低于数组)
3)使用:(虽与动态数组相似,但是上文的数组中不允许有基本类型出现,这里需要将基本类型转换成对象)
Integer //整形Long //长整型Float //浮点数Double //双浮点数Short //短整型Byte //字节Character //字符型Void //空类型Boolean //bool类型
4)自动装箱:(就是一个自动转化,两者等价)
5)自动拆箱:(也是自动转化,两者等价)
6)包装器强制类型转换
将字符串转换为整型(Integer.parseInt(字符串,进制数(或者为空) ) )
7)任意数量参数的传递
使用强力万能符…(真的只是三个点,这是替代了一大串代码)


4. 泛型
(1)泛型的概念
- **泛型就是一种不确定的类型(类似于重载),使用集合时可以确定某一种数据类型来创建(常用 E e 或者 T t 来表示),集合中的泛型还包含Object类(即用户自定义的所有类)**<br />- **不使用泛型的后果:可能会抛出异常**<br />- 使用泛型的好处<br />1)避免了类型转换的麻烦,储存的是什么类型,取出就是什么类型<br />2)把运行期异常(代码运行之后会抛出的异常)提升到了编译期(写代码的时候)
(2)泛型的使用方法
- **泛型在类中的使用**<br />**定义泛型类**<br /><br />**使用确定的输入类型的泛型类(超级厉害)(这其中还涉及了自动装箱和拆箱)**<br />- **泛型在方法中的使用**<br />**基本使用方法(这里不需要说明数据类型,直接传递就行了,****静态方法同样适用****)<br />**- **泛型在接口中的使用<br />****第一种:定义接口的实现类,实现接口,指定接口的泛型(scanner方法继承了itetor(迭代器)方法)**<br />**第二种:接口使用什么泛型,实现类就使用什么泛型,即定义了一个含有泛型的类,创建对象时确定泛型的类型**<br />
(3)泛型通配符
- **简介**:泛型通配符“?”表示任意的数据类型(向方法中传递任意类型的集合)- **使用**:不能创建对象使用,只能作为方法参数使用<br />- 受限的泛型通配符<br /><br />




