java基础

本文详细介绍了Java中的final关键字在类、方法和变量上的应用,包括final类不可被继承、final变量的不可变性以及String类的特性。同时,探讨了类加载的过程,包括静态和非静态初始化的顺序。此外,还讨论了面向对象编程的核心概念,如封装、继承和多态。文中特别提到了equals和==的区别,以及重写equals时需注意的事项。
摘要由CSDN通过智能技术生成

final

  • 修饰类

当用final修饰一个类时,表明这个类不能被继承。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

  • 修饰方法
  • 修饰变量
    对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

String

  • 是final修饰的类,不可以被继承
  • char数组用final修饰,不会只想一个新的char数组。
  • 没有提供方法修改char数组中的内容
  • StringBuilder 是线程不安全的
  • StringBuffer是线程安全的

类加载

创建类对象时,从上往下执行非静态初始化语句、初始化块、最后是构造函数

类加载:从上往下执行静态初始化语句、初始化块、最后是构造函数

类加载优先于创建类对象

main在类里时先类加载,在执行main方法;main在类外时,按语句顺序执行。

面向对象编程

  • 封装

    解耦:降低对象交互

    提高安全性,隐藏内部实现

    减少重复代码

  • 继承

    重用父类代码,可以直接调用,可以添加自己的逻辑

  • 多态

    父类引用指向子类对象;降低代码量

理解方法调用

接口和抽象类

抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

一个类只能继承一个抽象类,而一个类却可以实现多个接口。

equals和==

==比较的是地址

equals内部是用==来实现的,object类中仍然是比较地址,String中重写了equals方法,如果地址相同返回true,否则,遍历比较值。

重写equals要重写hashCode

Object类中,二者具有相同表现

equals比较时为false地址不一样,则hashCode一定不一样;

hashCode一样时,地址相同,equals为true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值