Java 基础方法

1. == 与 equals()

== 对不同数据类型的作用不同:

  • 基本数据类型:比较值。
  • 引用数据类型:比较对象的内存地址。

补充:Java 只有值传递,引用类型变量保存的是对象的地址,本质上也是保存值。

equals() 只能用于比较两对象是否相等,根据是否重写分为两种情况:

  • 类重写 equals() 方法:比较两对象属性的值。
  • 类未重写 equals() 方法:等同于 ==
    // Object Class
	public boolean equals(Object obj) {
         return (this == obj);
    }

2. hashCode() 与 equals()

hashCode() 的作用是获取哈希码(int 整数),作用是确定对象在哈希表中的索引位置,实现通过 key 快速获取 value 的功能。

两者的关系:hashCode()相等,equals()不一定相等(哈希碰撞);equals()相等,hashCode()一定相等

为什么重写 equals() 时必须重写 hashCode() 方法?

hashCode() 由于性能比 equals() 好,主要作用就是 HashMap 等场景中减少 equals() 使用次数,在这些场景下默认两个相等对象 hashCode() 一定相等。

3. 重写与重载

  • 重写:发生在运行时期,是子类对父类的允许访问的方法的实现过程进行重新编写。具有以下特点:

    • 方法名、参数列表必须相同,子类方法返回值类型应比父类方法返回值类型相等或更小,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。

    • 如果父类方法访问修饰符为 private、final、static 则子类就不能重写该方法,但是被 static 修饰的方法能够被再次声明。

    • 构造方法无法被重写。

  • 重载:发生在编译时期,同一个类中(或父类和子类之间),方法名相同,参数列表不同,方法返回值类型和访问修饰符可以不同。

补充:若父类方法返回值类型为 void 或基本类型,则子类重写方法不能修改,否则返回该引用类型或其子类。

4. 构造函数

构造函数拥有以下性质:

  • 作用:完成对象的初始化工作。
  • 默认声明:Java 默认声明无参构造函数,如果添加了构造方法,则 Java 不会添加默认构造方法。
  • 特点
    • 名字与类名相同
    • 没有返回值,但不能用 void 声明构造函数。
    • 生成类的对象时自动执行,无需调用。
    • 构造方法不能被 override(重写),但是可以 overload(重载)。

5. 值传递

方法的参数可分为形参实参:形参用于声明方法时接收实参,无确定值;实参用于方法调用时传递,有确定值。

程序设计语言将实参传递给方法有两种方式:

  • 值传递:方法接收的是实参值的拷贝,会创建副本。
  • 引用传递:方法接收的是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。

注意:Java 只有值传递! 传递引用类型也是传递引用类型地址的拷贝。

    public static void main(String[] args) {
        String str1 = "aaa";
        String str2 = "bbb";
        swap(str1, str2);
        System.out.println("str1:" + str1 + ", str2:" + str2);
    }

    private static void swap(String str1, String str2) {
        String temp = str1;
        str1 = str2;
        str2 = temp;
    }
// str1:aaa, str2:bbb
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值