一、Object类
Object类是Java中所有类的父类,其他类都默认继承了Object类,因此其他类的对象都可以使用Object进行接收。
1、Object类中的方法:
通过源码,我们可以看到 Object类中的方法如下:
在这些方法中,比较常用的方法有 clone()、equals()、getClass()、toString()。
2、获取对象信息
Object类默认提供的toString()方法只能够得到一个对象的地址,因此在实际使用中常需要在子类中覆写。
String是信息输出的重要数据类型,只要遇见了String并且执行了 “+” ,那么就默认使用 toString() 方法转化后连接。
3、对象比较
String类对象的比较使用的是equals()方法,实际上String类的equals()方法就是覆写了Object类中的equals()方法。
class Person{
private String name ;
private int age ;
public Person(String name, int age) {
this.age = age ;
this.name = name ;
}
@Override
重点理解equals底层如何实现的
public boolean equals(Object obj) {
if (obj == null) {
return false ;
}
if(this == obj) {
return true ;
}
// 判断是否为Person类对象
if (!(obj instanceof Person)) {
return false ;
}
Person person = (Person) obj ; // 向下转型,比较属性值
return this.name.equals(person.name) && this.age==person.age ;
}
}
4、接受引用数据类型
Object是所有类的父类,可以接收所有引用数据类型,包括类、数组、接口等。
二、包装类:
1、什么是包装类
数据类型分为引用数据类型和基本数据类型,Object可以接收所有的引用数据类型,那么基本数据类型如何处理呢?这里就用到了包装类。所谓包装类就是将基本数据类型封装到类中。
//定义简单包装类
class IntDemo {
private int num ;
public IntDemo(int num) {
this.num = num ;
}
public int intValue() {
return this.num ;
}
}
这里的IntDemo实际上就是基本数据类型int的包装类,通过对包装类的实例化,将基本数据类型变成了一个对象,这样就可以使用Object来接收,实现参数统一。
public static void main(String[] args) {
// 子类对象向上转型
Object obj = new IntDemo(100) ;
IntDemo tmp = (IntDemo) obj ; // 向下转型
System.out.println(tmp.intValue()); // 取出基本数据类型
}
在java中,提供了8种基本数据类型的包装类,可以在开发中直接使用。
包装类又分为两种类型:
对象型(Object的直接子类):包括Boolean(boolean)、Character(char)。
数值型(Number的直接子类):包括Byte、Double、Short、Long、Integer(int)、Float。
2、装箱与拆箱
装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱。
拆箱:将包装类中包装的基本数据类型取出。利用Number类中提供的六种方法。
下面通过代码手动实现装箱与拆箱:
//定义int类型的包装类
class myInteger{
private int num;
public myInteger(int num){
this.num = num;
}
public int getNumValue(){
return this.num;
}
}
public class Demo {
public static void main(String[] args) {
//装箱
myInteger my = new myInteger(100);
System.out.println(my.getNumValue());
//拆箱
int j = my.getNumValue();
System.out.println(j);
}
}
在JDK1.5之后,提供了自动拆装箱的机制,因此可以直接利用包装类的对象进行数学运算。
注意:对相同包装类对象之间值得比较,推荐使用equal()方法。
3、通过包装类实现字符串与基本数据类型转换
- 通常各种数据的输入,都通过字符串类型接收,我们来看如何将字符串转为基本数据类型。
(1)String 转 int 类型 (Integer类)
public static int parseInt(String s) throws NumberFormatException
(2)String 转 double 类型(Double类)
public static double parseDouble(String s) throws NumberFormatException
(3)String 转 boolean(Boolean类)
public static boolean parseBoolean(String s)
注意:如果字符串在转为 int 或者 double 时含有非数字,那么就会出现NumberFormatException异常。而字符串转为boolean时不受影响。
- 将基本数据类型转为字符串
(1)任何数据类型使用“+”连接空白字符串就变为了字符串类型。
(2)使用String类中提供的valueOf()方法,此方法不产生垃圾。
public class Test {
public static void main(String[] args) {
//字符串转int、double
String str = "123456";
int tmp1 = Integer.parseInt(str);
double tmp2 = Double.parseDouble(str);
System.out.println(tmp1);
System.out.println(tmp2);
//int、double转字符串
String s1 = String.valueOf(tmp1);
String s2 = String.valueOf(tmp2);
System.out.println(s1);
System.out.println(s2);
}
}
三、总结:
1、Objec类作为Java中所有类的父类,可以接收所有对象,轻松实现类型参数统一。
2、字符串是重要的输入和输出常用类型,通过包装类可以实现基本数据类型与字符串之间的互相转换。