欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVASE基础

程序员文章站 2024-03-23 14:54:40
...

JAVASE基础

final 关键字用法

  • 一,修饰类

    • 不能有子类
    • final类中的所有方法无法覆盖重写
  • 二,修饰方法

    • 不能覆盖重写
    • abstract 和 final 不能同时使用
  • 三,修饰局部变量

    • final使用局部变量,终生不能更改
    • 对于基本类型来说,不可变说的是数值不可变
    • 对于应用类型来说,不可变说的是变量中的地址不可改变(但是地址里的内容是可以变的)
  • 四,修饰成员变量

    • 用final之后必须手动赋值
    • 要么直接赋值,要么通过构造方法赋值
    • 必须保证所有构造方法都对final变量进行赋值

四种权限修饰符

public protected (defult) private
同一个类(我自己) YES YES YES YES
同一个包(我邻居) YES YES YES NO
不同包子类(我儿子) YES YES NO NO
不同包非子类(陌生人) YES NO NO NO

//(defult)是直接不写

内部类

  • 成员内部类

    • 就是嵌套类
    • 注意:内用外随意,外用内需要内部类对象
  • 内部类方法访问外部类的重名成员变量

    • 外部类名.this.外部类成员变量
  • 局部内部类

    • 只有当前所述方法才能调用局部内部类
  • 注意,定义一个类时权限修饰符规则

    • 1,外部类:public / private
    • 2,成员内部类:public / protected / (default)/ protected
    • 3,局部内部类:什么都不能写
  • 局部内部类如果要访问所在方法的局部变量

    • 那么这个变量必须是【有效final】的,不能变
    • (是为了解决生命周期问题,因为变量生命周期短于内部类,只要变量是不变的,那么内部类就可以直接复制一份来用,但如果变了的话就不行了)
  • 匿名内部类(最重要)

    • 接口名称 对象名 = new 接口名称(){

    ​ //覆盖重写所有的方法

    };

    • 相当于省去了实现接口的过程,不用实现一个具体名字的类 直接new完大括号里定义类即可

    • 注意大括号后边的分号别丢

    • 匿名对象和匿名内部类不是一回事

equals 和 == 的区别

  • ==判断符串是否相等

    • 对基本类型比较的是数值
    • 对引用类型(new出来的判断的是地址值是否相等)
  • equals判断串相等

    • 只比较内容是否相等
  • equals使用时推荐常量写前面

    "abc".equals(str1);
    
    • 防止变量值为空,会报错,空指针异常
  • 注:equalsIgnorceCase是忽略大小写比较字符串

Object类

toString()方法

  • 直接打印名字,其实就是调用toString
  • 需要重写打印类属性

equals()方法

  • Object类中的equals方法还是用等号比较的,即依然是基本类型比较值,引用类型比较地址

  • 所以String中的equals是重写过的

  • 要比较值的话需要重写equals方法

  • 更新认知------equals与==的区别在前文更新

相关标签: JAVA学习 java