Java入门必知哪些基础常用知识点?

2026-05-28 02:151阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计811个文字,预计阅读时间需要4分钟。

Java入门必知哪些基础常用知识点?

本章相对零散,主要汇总了一些编程时常遇到的一些小知识。以下是一些重要的点:

1. hashCode() 和 equals():这块基础知识不再赘述,如果自己编写时,需要注意以下几点(建议使用IDEA自动生成):

- 重写hashCode()时,要保证如果equals()相等,则hashCode()也相等。- 如果hashCode()相等,equals()不一定相等。- hashCode()的返回值最好是一个整数。- 如果不重写hashCode(),那么equals()的比较逻辑将取决于Object类中的equals()方法,它只比较两个对象的引用是否相等。

这章比较零散,主要是汇总一些编程时常用的一些少见但又比较重要的知识点。

一、hashCode()和equals()

这块的基础知识就不再重述了,如果是自己编写时需要注意以下几点(建议用idea自动生成工具生成),一个简单的示例如下:

public class Groundhog2 extends Groundhog {
public Groundhog2(int n) { super(n); }
public int hashCode() { return number; }
public boolean equals(Object o) {
return o instanceof Groundhog2 &&
(number == ((Groundhog2)o).number);
}
}
  • 正确的equqls()方法需满足下列5个条件:
  • 自反性,对任意x, x.equals(x)一定返回true;
  • 对称性,对任意x,y,如果x.equals(y)返回true,那么y.equals(x)一定返回true;
  • 传递性,对任意x,y,z,如果有x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)一定返回true;
  • 一致性,对任意x,y,如果有对象中用于等价比较的信息没有改变,那么无论调用x.equals(y)多少次,返回的结果应该保持一致,那么一直是true,要么一直是false;
  • 对任何不是null的x, x.equals(null)一定返回false;
    • 正确的hashCode()方法需满足以下条件:
  • 无论何时,同一个对象调用hashCode()都应该产生同样的值,所以hashCode()不应该依赖对象内可变的数据;
  • 无论何时,也不应该使hashCode()依赖于具有唯一性的对象信息,尤其是使用this的值;
  • 好的hashCode()应该产生分布均匀的散列码,一个通用的做法是按下列方式计算的,如果f为:
    • boolean c = f ? 0: 1
    • byte,char,short,int——c = (int)f
    • long—— c = (int)(f ^ (f>>>32))
    • float—— c = Float.floatToIntBits(f)
    • double—— c = Double.doubleToLongBits(f)
    • Object其equals()调用这个域的equals()数组—— c = f.hashCode()
    • 数组—— 对每个元素应用上述规则

    二、String格式化输出

    一般主要用于日志打印上,几个例子如下

    public class SimpleFormat {
    public static void main(String[] args) {
    int x = 5;
    double y = 5.332542;
    System.out.println("Row 1: [" + x + " " + y + "]");
    System.out.format("Row 1: [%d %f]\n", x, y);
    System.out.printf("Row 1: [%d %f]\n", x, y);
    }
    } /* Output:这里的format和printf都可以应用格式化输出格式。
    Row 1: [5 5.332542]
    Row 1: [5 5.332542]
    Row 1: [5 5.332542]
    *///:~



    Java入门必知哪些基础常用知识点?

    本文共计811个文字,预计阅读时间需要4分钟。

    Java入门必知哪些基础常用知识点?

    本章相对零散,主要汇总了一些编程时常遇到的一些小知识。以下是一些重要的点:

    1. hashCode() 和 equals():这块基础知识不再赘述,如果自己编写时,需要注意以下几点(建议使用IDEA自动生成):

    - 重写hashCode()时,要保证如果equals()相等,则hashCode()也相等。- 如果hashCode()相等,equals()不一定相等。- hashCode()的返回值最好是一个整数。- 如果不重写hashCode(),那么equals()的比较逻辑将取决于Object类中的equals()方法,它只比较两个对象的引用是否相等。

    这章比较零散,主要是汇总一些编程时常用的一些少见但又比较重要的知识点。

    一、hashCode()和equals()

    这块的基础知识就不再重述了,如果是自己编写时需要注意以下几点(建议用idea自动生成工具生成),一个简单的示例如下:

    public class Groundhog2 extends Groundhog {
    public Groundhog2(int n) { super(n); }
    public int hashCode() { return number; }
    public boolean equals(Object o) {
    return o instanceof Groundhog2 &&
    (number == ((Groundhog2)o).number);
    }
    }
    • 正确的equqls()方法需满足下列5个条件:
  • 自反性,对任意x, x.equals(x)一定返回true;
  • 对称性,对任意x,y,如果x.equals(y)返回true,那么y.equals(x)一定返回true;
  • 传递性,对任意x,y,z,如果有x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)一定返回true;
  • 一致性,对任意x,y,如果有对象中用于等价比较的信息没有改变,那么无论调用x.equals(y)多少次,返回的结果应该保持一致,那么一直是true,要么一直是false;
  • 对任何不是null的x, x.equals(null)一定返回false;
    • 正确的hashCode()方法需满足以下条件:
  • 无论何时,同一个对象调用hashCode()都应该产生同样的值,所以hashCode()不应该依赖对象内可变的数据;
  • 无论何时,也不应该使hashCode()依赖于具有唯一性的对象信息,尤其是使用this的值;
  • 好的hashCode()应该产生分布均匀的散列码,一个通用的做法是按下列方式计算的,如果f为:
    • boolean c = f ? 0: 1
    • byte,char,short,int——c = (int)f
    • long—— c = (int)(f ^ (f>>>32))
    • float—— c = Float.floatToIntBits(f)
    • double—— c = Double.doubleToLongBits(f)
    • Object其equals()调用这个域的equals()数组—— c = f.hashCode()
    • 数组—— 对每个元素应用上述规则

    二、String格式化输出

    一般主要用于日志打印上,几个例子如下

    public class SimpleFormat {
    public static void main(String[] args) {
    int x = 5;
    double y = 5.332542;
    System.out.println("Row 1: [" + x + " " + y + "]");
    System.out.format("Row 1: [%d %f]\n", x, y);
    System.out.printf("Row 1: [%d %f]\n", x, y);
    }
    } /* Output:这里的format和printf都可以应用格式化输出格式。
    Row 1: [5 5.332542]
    Row 1: [5 5.332542]
    Row 1: [5 5.332542]
    *///:~



    Java入门必知哪些基础常用知识点?