01_HashSet集合
* ArrayList集合:
* 有序(存取顺序一致), 可重复.
* HashSet集合:
* 无序(存取顺序不一致), 唯一.
ArrayList<String> list2 = new ArrayList<>();
for(String str : list) {
if(!list2.contains(str)) {
// 说明list2集合中没有这个元素 , 添加
list2.add(str);
}
}
System.out.println(list2);
HashSet<String> set = new HashSet<>();
set.addAll(list);
// 清空list集合
list.clear();
list.addAll(set);
System.out.println(list);
02_枚举
枚举是一种新的类型,允许用常量来表示特点的数据片段
作用:其实就是用来表示一些固定的值
需求:定义一个方法,传入一个性别,如果是男,输出男孩好威猛,如果是女,输出女孩好美丽,如果是妖,输出来自泰国吧,如果是其他的,就显示输错
public enum Direction {
UP,
DOWN,
LEFT,
RIGHT
}
03_包
* 概述:
* 其实就是文件夹, 用来区分重名文件的.
* 格式:
* package 包名1.包名2.包名3...;
* 包的命名规则:
* 包名全部小写, 多级包之间用.隔开, 包名一般是公司的域名反写.
04_Object类
Object类是Java程序中所有类的父类(直接的或间接的继承),也是所有类库中类的父类,用户定义的所有类在默认情况下都是Object类的子类。无论用户是否显示声明Object类作为自己定义的类的父类,这是系统自动完成的。因此,通常把Object类称为通用超类。即所有的类都是从Object类派生出来的。下面列出几个主要方法,这些方法对于每一个类的对象都是适用的。
- public boolean equals(Object obj)用来比较两个对象是否相同,相同时返回true;否则返回false。
- public final Class getClass()获取当前对象所属类的信息,返回的是Class对象。
- protected void finalige()回收当前对象,完成清理工作(回收内存)。
- public String toString()返回对象本身的相关信息,返回值是字符串。
- Object clone()创建一个与调用对象一样的对象(克隆)
- final void wait()等待另一个线程的执行。
Object类中的成员恰好都是方法,其中有7个public类型的,两个protected类型的。用户自定义的所有类都将继承这些方法。Object类中的7个public类型的方法分别是:
- toString()方法:返回描述当前对象的文本化String数据。
- equals()方法:用来比较两个对象是否相同,相同时返回true;否则返回false。
- getClass()方法:用于返回一个Class类型的对象,以识别出当前对象的类。
- hashCode()方法:用于计算一个对象的散列编码值并把结果作为int类型值返回。
- notify()方法:是用于多线程程序中当前对象的处理。
- notifyAll()方法:是用于多线程程序中当前对象的处理。
- wait()方法:是用于多线程程序中当前对象的处理。
两个protected类型的方法是:
- clone()方法:用于对象的克隆。
- finalize()方法:用于销毁对象时的清理工作。
toString()方法
Object类的toString()方法返回描述当前对象的文本化String数据。默认情况下,对该对象的表示形式是:类名后面跟一个“@”和该对象Hash码的十六进制表示。当然,也可以在自己的类中重写该方法。toString()方法会在使用“+”号把一个对象与String类型的变量连接的时候自动调用。
05_instance of 关键字
* 使用格式:
* 对象名 instanceof 数据类型
* 解析:
* 判断前边的 对象(名) 是否是 后边的数据类型.
* 案例:
* 已知猫类和狗类他们都有吃饭的方法, 不同的是猫吃鱼, 狗吃肉.
* 猫独有自己的抓老鼠方法: catchMouse();
* 狗独有自己的看门方法: lookHome();
* 在测试类中定义一个方法method(Animal an),
* 如果传入的是猫类对象, 就调用其: 吃饭, 抓老鼠的方法
* 如果传入的狗类对象, 就调用其: 吃饭, 看门的方法
// 非静态方法: 编译看左边,运行看右边
// 静态方法: 编译看左边,运行看左边
// 成员变量; 编译看左边,运行看左边
public static void method(Animal an) {
an.eat();
if(an instanceof Cat) {
((Cat) an).catchMouse();
}
if(an instanceof Dog) {
((Dog) an).lookHome();
}
}
06_并发修改异常
* 并发修改异常:
* 在遍历集合的同时, 又往集合中添加(或删除)元素, 就有可能发生并发修改异常.
* 解决方案:
* 方案一: 可以通过列表迭代器解决, 但是必须调用列表迭代器的添加(或删除)方法.
1.通过集合获取对应的列表迭代器对象 ListIterator<String> listIterator = list.listIterator();
2.通过列表迭代器方法hasNext()方法判断有没有下一个元素
3.有就获取下一个元素 next();
* 方案二: 使用 CopyOnWriterArrayList集合. (它的用法和ArrayList基本类似, 它本身已经处理了并发修改异常),
这个集合要求掌握, 后边做坦克大战的时候要用到.
07_Collections工具类
* Collections工具类中的方法:
* sort(); //排序(默认是升序排列)
* reverse(); //反转
* shuffle(); //随机置换(洗牌)
* max(); //求最大值
* min(); //求最小值
08_内存的划分:
* 栈:
* 概述:
* 存的是局部变量, 以及所有代码的执行.
* 用完就立马释放(方法执行完立马弹栈).
* 执行特点:
* 先进(压栈)后出(弹栈).
* 举例: 手枪的子弹夹.
* 堆:
* 概述:
* 存是的 所有new出来的东西.
* 方法区:
* 方法区, 常量池, 静态区, 代码区(存的是字节码文件)
* 本地方法区:
* 寄存器: