目录
Java API概述
基本数据类型包装类
基本数据类型对象的Java包装类
包装类的主要用途
包装类常用属性方法
构造方法
比较方法
转换方法
Object类
概述
● API(Application Programming Interface)应用程序编程接口
官方定义:Java API是对java预先定义的类或接口功能和函数功能的说明文档,目的是提供给开发人员进行使用帮助说明.
理解: Java 对底层的代码包装成了很多类便于开发使用,比如我们经常用的 String类,Array类,Object类等等,javaAPI会对这些Java包装类进行解释说明,我们可以根据API学习该类的组成结构(成员变量,成员方法等),还有继承关系及其功能.
●java 是面向对象语言,但苦于我们使用的基本数据类型不是对象,这也就意味着我们无法想使用一个对象一样使用这些数据类型,在编程过程中有诸多不便,因此,就java将他们包装成类,这样我们就可以new 其对象,访问其成员变量,使用其成员方法.
int m = 10;
/**
* 这里定义一个int变量,但我们只能使用,不能进行相关的处理
* 如果想要把这个int变量变成字符串我们可以使用int的包装类Integer中的toString()方法
*/
Integer n = 10; //n的类型为Integer,所以可以使用 . 调用这个对象的toString()
String s = n.toString();
基本数据类型 | 基本数据类型包装类 |
---|---|
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
●作为和基本数据类型对象的类存在
●包含每种数据类型的相关属性(成员变量) ,以及一些操作方法
● 以下方法以java.lang.Integer为例
public static final int MAX_VALUE 最大的int型数(231-1)
public static final int MIN_VALUE 最小的int型数(-231)
Integer(int a); Integer(String a);
static int compareTo(Integer a); boolean equals(Object); int max(int a,int b); int min(int a,int b);
Integer源码
//Integer继承了Number类,实现了Comparable接口,意味着Integer可以进行比较
public final class Integer extends Number implements Comparable {
@Native public static final int MIN_VALUE = 0x80000000; //Integer最大值
@Native public static final int MAX_VALUE = 0x7fffffff; //Integer最小值
//有参构造1
public Integer(int value) {
this.value = value;
}
//有参构造2
public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}
//toString()方法
public String toString() {
return toString(value); //此方法里是核心代码,在源码中实现的
}
//重写Object中的equals()
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
//compareTo()
public int compareTo(Integer anotherInteger) {
return compare(this.value, anotherInteger.value);//此方法在核心代码中实现
}
//常用的求最大值
public static int max(int a, int b) {
return Math.max(a, b);//调用Math类中的max()
}
//求最小值
public static int min(int a, int b) {
return Math.min(a, b);
}
}
static toBinaryString(int i); static String toHexString(int i); static String toOctalString(int i); int intValue(); static int parseInt(String s); String toString(); static Integer valueOf(int i) static Integer valueOf(String s)
Object类是所有Java类的祖先(根基类)。每个类都使用Object作为超类(父类)。所有对象(包括数组)都实现这个类的方法。
● 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类 public class Person { ... } 等价于: public class Person extends Object { ... }
在API文档中Object类提供了11种方法,在JavaSE现阶段最常用的俩种方法toString()和equals()
toString方法
API描述
public String toString()
返回对象的字符串表示形式。一般来说, toString
方法返回一个“textually代表”这个对象的字符串。结果应该是一个简明扼要的表达,容易让人阅读。建议所有子类覆盖此方法。
该toString
类方法Object
返回一个由其中的对象是一个实例,该符号字符的类的名称的字符串
@` ”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
结果
对象的字符串表示形式。
在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象类的toString()方法 可以根据需要在用户自定义类型中重写toString()方法,Java开发工具IEDA可以在类中根据需要选择类中的属性,快速生成toString().
注:如果类中不重写toString(),则在输出此类的对象时,会调用Object类中的toString(),输出的是对象地址
equals方法
API描述
public boolean equals(Object obj)
指示一些其他对象是否等于此。
equals
方法在非空对象引用上实现等价关系:
自反性 :对于任何非空的参考值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
,没有设置中使用的信息equals
比较上的对象被修改。
对于任何非空的参考值x
, x.equals(null)
应该返回false
。
该equals
类方法Object
实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空的参考值x
和y
,当且仅当x
和y
引用相同的对象( x == y
具有值true
)时,该方法返回true
。
请注意,无论何时覆盖该方法,通常需要覆盖hashCode
方法,以便维护hashCode
方法的通用合同,该方法规定相等的对象必须具有相等的哈希码。
参数
obj
- 与之比较的参考对象。
结果
true
如果此对象与obj参数相同; false
否则。
equals和==的区别
俩者都是用来比较的,
==可以用来比较基本数据类型和引用数据类型,比较引用类型时,是比较俩个对象地址,所以结果均为true(除非比较的是同一个对象);
equals(Object obj)只能用来比较引用数据类型,Object类中提供的equals(Object obj)还是用==实现的,这样的话只能比较对象地址,我们一般的需求是比较其值是否相同,所以要根据需要进行重写.Java中的很多类比如经常用的String类已经重写了equals(Object obj),所以我们可以直接用。
这是Object equals方法源码,使用==实现。