Java - 语言基础

闷骚的程序员

Object 类的方法及用途

公有方法:

  • equals

    用于对象间的比较。一般用于判断两个对象的内容是否相同。

  • getClass

    返回类对象。

  • hashCode

    返回对象的 hash code。一般在 HashSet、HashMap 和 HashTable 里会被调用到。

    一些约定:

    • 如果对象的 equals 方法做比较所用到的信息没有被修改,那对它多次调用 hashCode 方法返回的值应该相同。
    • 如果两个对象调用 equals 方法返回 true,那么它们的 hashCode 方法应该返回相同的值。
    • 如果两个对象调用 equals 方法返回 false,它们的 hashCode 方法不是必须返回不相同的值。但给不同对象返回不同 hash code 能提升散列表的性能。
  • notify

    唤醒一个正在等待此对象的线程。

  • notifyAll

    唤醒所有正在等待此对象的线程。

  • toString

    返回该对象的字符串表示。

  • wait

    让当前线程进入等待状态,直到另一个线程调用了该对象的 notify 或 notifyAll 方法。

保护方法:

  • clone

    创建并返回该对象的拷贝。

  • finalize

    垃圾收集器认为不存在该对象的引用后调用。

运算规则

如果对基本数据类型执行算术运行或按位运算,大家会发现,只要类型比 int 小(即 char、byte 或 short),那么在运算前,这些值都会自动转换成 int,这样一来,最终生成的结果就是 int 类型。如果想把结果赋值给较小的类型,就必须使用类型转换(既然把结果赋给了较小的类型,就可能出现信息丢失)。通常,表达式中出现的最大的数值决定了表达式最终的数据类型。如果将一个 float 值与一个 double 值相乘,结果就是 double,如果将一个 int 和一个 long 值相加,则结果为 long。

类型转换

float to int

四舍五入

i = Math.round(f);

示例结果:

floatint
2.02
2.222
2.683
-2.0-2
-2.22-2
-2.68-3

相当于 (int) Math.floor(f + 0.5f)

Math.round(float) returns a int, Math.round(double) returns a long. see http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#round(double)

截取整数部分

i = (int) f;

示例结果:

floatint
2.02
2.222
2.682
-2.0-2
-2.22-2
-2.68-2

向下取整

i = (int) Math.floor(f)

示例结果:

floatint
2.02
2.222
2.682
-2.0-2
-2.22-3
-2.68-3

向上取整

i = (int) Math.ceil(f)

示例结果:

floatint
2.02
2.223
2.683
-2.0-2
-2.22-2
-2.68-2

如何排除依赖包里的某一个类

用 Maven 管理依赖时,可以用 <exclude> 排除 jar 包维度的间接依赖,但是如果想要排除某一个类,如何处理?

有一种方法是在项目里写一个同名类,如果不想要它,就把它写成空类,如果想修改它的行为,就重写这个类。

参考

文档信息

Search

    Table of Contents