JavaSE(内部类、泛型、枚举、API(Object))

目录

内部类

      成员内部类(了解)

      静态内部类(了解)

      局部内部类(了解)

      匿名内部类(重点)

枚举

泛型

      定义格式:

      泛型的统配、上下限:

      注意事项

API(Object)

      Object

      Objects(工具类):做一些检查。


内部类

      成员内部类(了解)

              定义格式:如下

              调用格式:如下

public class Outer {
    // 外部类变量
   private int heart=100;
   public class Inner {
        // 内部类变量
       private int heartbeat=150;
        // 内部类方法
       public void  show(){
           int heart=10;
           System.out.println (heart);//10
           // 调用内部类当前变量-- this.变量名
           System.out.println (this.heartbeat );//150
           // 调用外部类变量 ---外部类名.this.变量名
           System.out.println (Outer.this.heart );//100
       }
    }

    public static void main(String[] args) {
       // 创建内部类对象,先new外部类对象,在通过外部类对象变量名new内部类名
       Outer. Inner inner = new Outer ( ).new Inner ( );
       // 调用内部类方法
       inner.show ();
    }
}

      静态内部类(了解)

              定义格式:

public class Outer {
    public static int a=12;
    String name1="dhakhd";
    /**
     * 静态内部类
     */
    public static class  Inner{
        // 代码....
    }
}

              调用格式:外部类.内部类 对象名=new 外部类.内部类

      局部内部类(了解)

              定义格式:    鸡肋语法,无用。

         调用格式:在方法中调用

      匿名内部类(重点)

              定义格式:

public interface Swimming {
    void swim();
    // 接口可以作为方法的一个参数
}
class Test{
    public static void main(String[] args) {
        //这是匿名内部类对象,而不是接口对象,接口是不能创建对象的。
        Swimming s = new Swimming ( ) {
            // 重写方法
            @Override
            public void swim() {
                System.out.println ("狗刨式游泳");
            }
        };
        // 调用方法
        s.swim ( );
    }
}

             使用场景:作为方法上的参数传递。

枚举

       概念:他是一个特殊的类,它里面第一行代码只能定义常量。

       格式:

public enum Sex {
    // 第一行只能定义常量。
    //    int a;//因为他不是常量,定义在第一行会报错
    MAN,WOMEN;
    int a;//正常
}

       特点:

              第一行只能是常量。构造器私有。

              默认继承Enum,里面有两个静态方法:如下。

                     values()---返回枚举的所有对象。

                     valueOf(String name)----根据名字获取对应得对象。

       使用场景:

              1、switch中可以搭配枚举使用,例如

public enum Sex {
    MAN,WOMEN;
}
class Test{
    public static void main(String[] args) {
        Scanner sc = new Scanner ( System.in);
            System.out.println ("请输入您的选择:" );
            String type = sc.next ( );
            Sex value = Sex.valueOf (type);
            switch (value){
                case MAN -> System.out.println ("我是男的" );
                case WOMEN -> System.out.println ("我是女的" );
            }
    }
}

               2、做信息标记

泛型

       本质:创建对象的时候,把具体的类型传递给类,增强代码的通用性

      定义格式:

              泛型类:public calss 类名<E,T,K>{…}

              泛型接口:public interface 接口名<E,T,K>{…}

              泛型方法:public <T>返回值类型 方法名(参数){..}

      泛型的统配、上下限:

              针对泛型类或者接口

              ArrayList<?>---- 可以存放所有的类型

              上限----> ? extends 父类,父类或者对应他的子类使用。

            下限----> ? super 子类,子类或者继承的父类使用。

      注意事项

              泛型擦除:在编写中可以编写泛型,编译后会把泛型给抹掉

              泛型只能时引用数据类型。

API(Object)

      Object

              toString()

                     本来的作用:返回对象的地址值

                     重写之后的作用:返回对象的具体内容

              equals()

                     原先作用:比较两个对象的地址值

                     重写之后的作用:比较两个对象的具体内容

              clone:复制一个新的内容一样的对象。

                     浅克隆:复制一个一模一样的对象。

                     深克隆:基本数据类型复制具体的值、字符串复制具体的地址、其他引用数据类型就先创建新的对象,再复制到新的对象中。

      Objects(工具类):做一些检查。

              方法:

                     equals(o1,o2)---先判空,在对内容进行判断

                     isNull(obj)-----判断对象是否为空

                     nonNull(obj)----判断对象是否不为空

                                  

                           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值