• Java Class10


    Java Class10

    内部类

    首先整理类下的几大成员

    属性:

    方法:

    构造器:

    初始化块:

    内部类:

    public class A {
        private int age;//属性
        
        public void method(int age){//方法
            this.age=age;
        }
        
        public A(){//构造器
            System.out.println(age+10);
        }
        
        {
            System.out.println(age+100);//初始化块
        }
        
        class A1{//内部类
            
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    匿名内部类

    匿名内部类就是没名内部类,就是说他行使了内部类的功能,但是没有名字来命名。

    public class B {
        public static void main(String[] args) {
            new IA(){//匿名内部类
    
                @Override
                public void go() {
    
                }
            };
        }
    }
    
    interface IA{
        public void go();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    比如我想在B中实现IA下的go方法,但是接口下的方法不能直接调用需要实例化,而且现在我们没有继承关系不能直接实现方法,所以用匿名内部类的方法就是最简单方便的。在这里插入图片描述

    public class B {
        public static void main(String[] args) {
            new B().plan(new IA() {
                @Override
                public void go() {
                    System.out.println("2");
                }
    
                @Override
                public void to() {
                    System.out.println("1");
                }
            },"北京").to();
        }
    
        IA plan(IA ia,String name){
            ia.go();
            return new IA(){
    
                @Override
                public void go() {
                    System.out.println("3");
                }
    
                @Override
                public void to() {
                    System.out.println("4");
                }
            };
        }
    }
    
    interface IA{
        void go();
        void to();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    在这里插入图片描述
    输出2,4

    equals

    一般我们会把=,==,equals方法进行比较

    =

    意为赋值,把等号右边的内容赋给左边
    在基本类型时,是将值赋给左边
    在引用类型时,是将地址赋给左边

    ==

    相等,判断等号两边是否相等
    在基本类型时,比较值是否相等
    在引用类型时,比较地址是否相等

    equals()

    用于比较两个引用类型的值是否相等

    具体解释请看=,==和equals用法与区别

    equals和hashCode也经常一起讨论
    他们共同用来标识对象,两个方法协同工作用来判断两个对象是否相等在这里插入图片描述
    具体请看:重写equals为什么要重写hashcode

    String,StringBuffer,StringBuilder

    String就是字符串对象

    String s1="abc";
    
    • 1
    String s2="a"+"b"+"c";
    
    • 1

    在这s2生成字符串的过程与s1并不一样,s2是引号一次就开一次堆,每次开堆过程会占用内存并影响运算速度

    而StringBuffer和StringBuilder就是可以一次开辟多个空间,避免多次开堆影响效率的问题

    public class C {
        public static void main(String[] args) {
            String s="OK";//定义字符串s
            s="OK1";//修改字符串的值
            String s2="OK";//定义字符串s2
            String s3="我"+"很"+"帅"+"!";//定义字符串s3
    
            StringBuffer sb=new StringBuffer("我");//实例化StringBuffer对象
            sb.append("很");//向StringBuffer中添加元素
            sb.append("帅1234567891234567");//向StringBuffer中继续添加元素
            System.out.println(sb.capacity());//打印此时StringBuffer的空间
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    包装类型

    在这里插入图片描述

    public class Demo {
        Integer i=1;//自动装箱
        int j=i;//自动拆箱
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Linux下安装python 2.7
    AIDL的使用
    DVWA之SQL注入
    第3章 列表简介
    PHPStorm PHP-CS-Fixer
    京东如何批量制作全店透明图?
    关于 Vue-iClient-MapboxGL 的使用注意事项
    Redis之淘汰策略
    易点易动固定资产管理系统:定制流程与用量控制的高效管理利器
    Mysql 45讲学习笔记(七)行锁
  • 原文地址:https://blog.csdn.net/qq_45325217/article/details/127768499