java笔记 五

java笔记 五

Java 不能隐式执行向下转型

        double d = 1.1;//1.1 字面量属于 double 类型
//        float f0 = 1.1;报错, Java 不能隐式执行向下转型,因为这会使得精度降低。
        float f = 1.1f;//1.1f 字面量才是 float 类型。
        short s1 = 1;
//        s1 = s1 + 1;报错
        s1 = (short) (s1 + 1);
        s1 += 1;//+= 或者 ++ 运算符会执行隐式类型转换。相当于s1 = (short) (s1 + 1);

switch与String

Java 7 开始,可以在 switch 条件判断语句中使用 String 对象,内部实现在 switch 中使用字符串的 hash code。。switch 不支持 long、float、double。

  • 不可变类:https://javabetter.cn/basic-extra-meal/immutable.html#_02%E3%80%81%E5%B8%B8%E8%A7%81%E7%9A%84%E4%B8%8D%E5%8F%AF%E5%8F%98%E7%B1%BB
final
  • final 修饰的成员变量必须有一个默认值
  • private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。
  • final 和 static 一起修饰的成员变量叫做常量,常量名必须全部大写。
static
  • 静态变量属于一个类,所以不要通过对象引用来访问,而应该直接通过类名来访问
  • 如果 main 方法不是静态的,就意味着 Java 虚拟机在执行的时候需要先创建一个对象才能调用 main 方法,而 main 方法作为程序的入口,创建一个额外的对象显得非常多余。
静态代码块

优于main()函数执行。

静态内部类

外部类不能声明为 static。静态内部类仅可以访问外部类的所有静态变量,包括私有静态变量。

public class Singleton {
    private Singleton() {}

    private static class SingletonHolder {
        public static final Singleton instance = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}
代码执行顺序

静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。

存在继承的情况下,初始化顺序为:

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量、普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)
Object 通用方法

tips:

  • 任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
  • equals()实现 1.2.3.4
  • toString(),默认返回 ToStringExample@4554617c 这种形式,其中 @ 后面的数值为散列码的无符号十六进制表示。
  • clone() 是 Object 的 protected 方法。一个类不显式去重写 clone(),其它类就不能直接去调用该类实例的 clone() 方法。
  • Cloneable 接口规定,如果一个类没有实现 Cloneable 接口又调用了 clone() 方法,就会抛出 CloneNotSupportedException。
    clone() 的替代方案:拷贝构造函数或者拷贝工厂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值