今日复习day03

//了解成员内部类
//创建对象,要先new出外部对象,在new出内部对象
///外部类名.内部类名 对象=new 外部类(....)内部类(....)
Out.Inner in=new Out().new Inner();
in.test();

public class Out {
    private int age=99;
    public static String a;

    //内部类
    public class Inner{
        private String name;
        public static String schoolName;///JDK16才支持
        private int age=88;
        public void test(){//成员方法
            System.out.println(age);
            System.out.println(a);
            int age=66;
            System.out.println(age);//66
            System.out.println(this.age);//88
            //拿到外部类的对象:通过外部类名.this来直接访问age
            System.out.println(Out.this.age);//99


        }
//静态内部类
//外部类名.内部类名 对象名=new 外部类.内部类(。。。)
Out.Inner in=new Out.Inner();
/1.把这个匿名内部类编译成子类,创建出子类对象出来
        //父类 变量名=new 父类)(){、
        //重写方法
        //}

//认识枚举

public enum A {
    //注意:枚举类的第一行必须罗列枚举对象的名字
    X,Y,Z;
    private  String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public enum B {
 //   A a=new A();
    //因为有抽象方法,所以不能创建对象,可以通过内部类来解决
    X(){
        @Override
     public void  go(){

        }
 }

        // 1.枚举的第一行都是常量对象
               A a=A.X;
                System.out.println(a);
        //2.枚举类的构造器是私有的(写不写都一样),因此,枚举对外不能创建对象
        //A a=new A();
        //3.枚举类都是最终类,不可以被继承
        //4。枚举类中,从第二行开始,可以定义各种成员
        //5.




        //枚举类提供一个一些额外的API
        A[] as=A.values();//拿到全部的对象
        A a3=A.valueOf("Z");//根据枚举的常量名得到对象
        System.out.println(a3.name());//Z
        System.out.println(a3.ordinal());//索引
        B y=B.Y;

   认识泛型

//认识泛型
//定义类,接口,方法,同时声明了一个或者多个类型变量(如:<E>),称为泛型类,泛型接口类,泛型方法,
//提供了在编译阶段所能约束的数据类型,可以约束数据类型,就不需要强制转换了
ArrayList list=new ArrayList();
list.add("java1");

    

//掌握泛型类的使用
//泛型类
//修饰符  class 类名<类型变量,类型变量。。。。>{
// }
public class Myclass2<E,T> {
    public void put(E a,T t){

    }
}
//泛型接口
public interface Date<E> {
   void  add(E a);
   ArrayList<E> getbyname(String name);

}
//泛型方法的使用
//修饰符 <类型变量,类型变量> 返回值类型 方法名 (形参列表)
//?通配符:在使用泛型的时候表示一切类型   ?extends cars(上线):是catrs的子类   ?super cars(下线):是cars的父类及以上
public static void go(ArrayList<? extends Car> cars){

}
/泛型方法
    //这个T表示任何类型
    public static <T> T test(T t){
        return  t;
    }
}

    //泛型的注意事项
    // 1.泛型擦除:泛型的工作是在编译阶段,一但编译成class文件,泛型就消除了
//2.泛型不支持基本   数据类型,只支持对象类型(引用数据类型)
//基本数据类型:byte,char,,short,int ,float,double,long,boolean
//对象数据类型:String,Integer(整形),Float,Boolean,Character(字符型),Array(数组),Enum,Class,Interface,Void
//ArrayList<int>  a=new ArrayList<int>();
//掌握object类提供的对象克隆的方法
//浅克隆:复制的只是内容的地址
  User u1=new User(1,"shangshan","12345",new double[]{22,33,11,223}) ;
  User u2= (User) u1.clone();
  //浅克隆
    //用super去调用父类Object中的clone方法
  //  return super.clone();
    //深克隆
    User u2=(User)super.clone();
    //u2记住的是新的u2拷贝的数组对象,u2就是一个新的地址
    u2.scores=u2.scores.clone();
    return u2;
}
  //掌握object的常用方法
  String s1=null;
  String s2="heima";
  //有安全问题:s1不能是null
//  System.out.println(s1.equals(s2));
  //不会出现null异常,
  System.out.println(Objects.equals(s1, s2));//更安全

//判断对象是否为null,是的话返回true,不是返回false
  System.out.println(Objects.isNull(s1));
  System.out.println(Objects.isNull(s2));

  //判断对像是否不为null.是的话返回true,不是返回false
  System.out.println(Objects.nonNull(s1));
  System.out.println(Objects.nonNull(s1));
//包装类:将基本数据类型包装成引用型数据类型(对象)
//Integer s=new Integer(12);过时的方法
Integer  s1=Integer.valueOf(12);
//自动装箱:可以吧基本数据类型转换成对象
Integer  s2=12;
//自动拆箱:可以自动把包装类型的对象转换成对应的基本数据类
int s3=s2;
//泛型和集合都不支持使用基本数据类型,只能使用引用数据类型
//ArrayList<int> ai=new ArrayList<int>();
ArrayList<Integer>  a3=new ArrayList<>();
a3.add(32);//自动装箱
a3.add(34);
int f=a3.get(1);//自动拆箱
//包装类的其他操作
//1.将基本数据类型转换成字符串
Integer a5=23;
String o=Integer.toString(a5);//"23"
 //2.将字符串类型的数值转换成对应的基本数据类型
 String h="234";
// int h1=Integer.parseInt(h);
 int h1=Integer.valueOf(h);
   //清楚stringBuilder用法
   StringBuilder a=new  StringBuilder();
   StringBuilder s=new StringBuilder("heima");

   //1。拼接内容是
   s.append(23);
   s.append("afl");
   s.append(true);
   //支持链式编程
   s.append(666).append(true).append("shafjk");
   System.out.println(s);
   //2.反转内容
   s.reverse();

   System.out.println(s);
   //3.返回字符串的长度
   System.out.println(s.length());
//4.把stringBuilder对象转换成string类型
   String s1=s.toString();
   System.out.println(s1);
//Stringjoiner的使用
//Stringjoiner(间隔符,起始符,终止符)
//作用:简洁,高效
StringJoiner s=new StringJoiner(",","[","]");
s.add("aa");
s.add("223");
s.add("true");
System.out.println(s);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值