HashSet集合、枚举 、包、Object类、instance of 关键字、并发修改异常、Collections工具类、内存

版权声明:非经本人允许,禁止转载 https://blog.csdn.net/Kfie66/article/details/81941457

    

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类派生出来的。下面列出几个主要方法,这些方法对于每一个类的对象都是适用的。

  1. public boolean equals(Object obj)用来比较两个对象是否相同,相同时返回true;否则返回false。
  2. public final Class getClass()获取当前对象所属类的信息,返回的是Class对象。
  3. protected void finalige()回收当前对象,完成清理工作(回收内存)。
  4. public String toString()返回对象本身的相关信息,返回值是字符串。
  5. Object clone()创建一个与调用对象一样的对象(克隆)
  6. final void wait()等待另一个线程的执行。

     Object类中的成员恰好都是方法,其中有7个public类型的,两个protected类型的。用户自定义的所有类都将继承这些方法。Object类中的7个public类型的方法分别是:

  1. toString()方法:返回描述当前对象的文本化String数据。
  2. equals()方法:用来比较两个对象是否相同,相同时返回true;否则返回false。
  3. getClass()方法:用于返回一个Class类型的对象,以识别出当前对象的类。
  4. hashCode()方法:用于计算一个对象的散列编码值并把结果作为int类型值返回。
  5. notify()方法:是用于多线程程序中当前对象的处理。
  6. notifyAll()方法:是用于多线程程序中当前对象的处理。
  7. wait()方法:是用于多线程程序中当前对象的处理。

两个protected类型的方法是:

  1. clone()方法:用于对象的克隆。
  2. 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出来的东西.

     * 方法区:
         * 方法区, 常量池, 静态区, 代码区(存的是字节码文件)
     * 本地方法区:
     * 寄存器:

猜你喜欢

转载自blog.csdn.net/Kfie66/article/details/81941457
今日推荐