Java入门7---内部类

内部类

内部类就是定义在一个类里面的类,里面的类可以理解成寄生,外部类可以理解成宿主。
在这里插入图片描述
在这里插入图片描述

静态内部类(了解)

static修饰,属于外部类本身。

//外部类
public class Outer {
    
    
    //学习静态成员内部表
    public static class Inner{
    
    
        private String name;
        private int age;

        public Inner() {
    
    
        }

        public Inner(String name, int age) {
    
    
            this.name = name;
            this.age = age;
        }

        public String getName() {
    
    
            return name;
        }

        public void setName(String name) {
    
    
            this.name = name;
        }

        public int getAge() {
    
    
            return age;
        }

        public void setAge(int age) {
    
    
            this.age = age;
        }
    }

}
public class Tets {
    
    
    public static void main(String[] args) {
    
    
        Outer.Inner a=new Outer.Inner("k",18);
    }
}

静态内部类可以直接访问外部类的静态变量,但不能访问外部类的实例对象。

成员内部类(了解)

无static修饰,属于外部类的对象

public class Outer {
    
    

    public class Inner{
    
    
        private String name;
        private int age;
        
    }
}
public class Test {
    
    
    public static void main(String[] args) {
    
    
        Outer.Inner in=new Outer().new Inner();
    }
}

成员内部类可以直接访问外部类的静态成员。
成员内部类的实例丰富可以直接访问外部类的实例成员。

Demo

public class Demo {
    
    
    private int heartbeat=150;
    public class heart{
    
    
        private int heartbeat=110;
        public void show(){
    
    
            int heartbeat=78;
            System.out.println(heartbeat);//78
            System.out.println(this.heartbeat);//110
            System.out.println(Demo.this.heartbeat);//150
        }
    }
}

局部内部类(鸡肋语法,了解)

局部内部类放在方法,代码块,构造器等执行体中。
局部内部类的类文件名为:外部类$N内部类.class。

匿名内部类(重点)

本质上是一个没有名字的局部内部类,定义在方法,代码块中等。
作用:方便创建子类对象,最终目的为了简化代码编写。
在这里插入图片描述

public class Test {
    
    
    public static void main(String[] args) {
    
    
        Animal a=new Animal() {
    
    
            @Override
            public void run() {
    
    
                System.out.println("run");
            }
        };
        a.run();
    }
}


abstract class Animal{
    
    
    public abstract void run();
}

特点:
匿名内部类是一个没有名字的内部类;
匿名内部类写出来就会产生一个匿名内部类的对象;
匿名内部类的对象类型相当于是当前new的类型的子类类型。

Demo在这里插入图片描述

常用API

ToString

在这里插入图片描述
开发中直接输出对象的地址其实是毫无意义的,更多是希望看到对象的内容数据而不是对象的地址信息。

ToString存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息。

equals

在这里插入图片描述
一般使用Objects.equals,当某个值为null时,Object.equals会报错,但是Objects不会,Objects.equals(s1,s2)。

StringBuilder

在这里插入图片描述

public class StringbuliderDemo {
    
    
    public static void main(String[] args) {
    
    
        StringBuilder s=new StringBuilder();
        s.append("s");
        s.append(1);
        s.append(2.2);
        s.append('c');
        
        //支持链式编程
        s.append("s").append(1).append(2.2).append('c');
		s.reverse().append("ss");
		//StringBuilder只是拼接字符串的手段,最终的结果还是要恢复成字符串
		String res=s.toSrting();
    }
}

在这里插入图片描述

Math

在这里插入图片描述

System

在这里插入图片描述
currentTimeMills()返回从1970-1-1 00:00:00走到此刻的总的毫秒值。

arraycopy:
在这里插入图片描述

BigDecimal

用于解决浮点型运算精度失真的问题。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46002001/article/details/124919253