「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。
Object类是java默认提供的一个类,除了这个类,其他所有的类都是存在有继承关系的。
那么默认会继承Object父类
所以在开发之中Object类是参数的最高统一类型
所有子类构造实例化都要调用父类中的无参构造方法
-
包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是
-
包装类型是引用的传递;基本类型是值的传递
-
声明方式不同:
基本数据类型不需要new关键字;
包装类型需要new在堆内存中进行new来分配内存空间
-
存储位置不同:
基本数据类型直接将值保存在值栈中;
包装类型是吧对象放在堆中,然后通过对象的引用来调用他们
-
初始值不同:
int的初始值为0、Boolean初始值为false
包装类初始值为null
-
使用方式不同:
基本数据类型直接赋值使用就行;
包装类型是在集合如coolectionMap时使用
interface IMessage100{
}
class MessageImpl100 implements IMessage100{
public String toSting(){//Object类的方法
return "www.aka.vom";
}
}
public class Test18 {
public static void main(String[] args) {
// //利用Object接收数组对象,都行向上转型
// Object obj = new int[]{1,2,3};
// //向下转型,需要强制类型
// int data[] = (int[]) obj;
// for (int x = 0; x < data.length ; x++) {
// System.out.println(data[x]);
// }
IMessage100 msg = new MessageImpl100();//子类向父接口转型
Object obj = msg; //接口向Object转型
System.out.println(obj);
IMessage100 temp = (IMessage100) obj;
}
}
//包装类:指的就是将基本数据类型封装在一个类中
class MyInt{//MyInt实际上是int数据类型的一个包装类,利用MyInt可实现基本数据类型变为对象的需求
private int num;
public MyInt(int num){
this.num = num;
}
public int intValue(){
return this.num;
}
}
public class Test19 {
public static void main(String[] args) {
//子类对象自动变为Object父类对象
Object obj = new MyInt(10);
MyInt temp = (MyInt)obj; //取出内容需向下转型
System.out.println(temp.intValue() * 2); //取出里面的基本数据类型操作
}
}
public class Test20 {
public static void main(String[] args) {
//手工装箱拆箱方法jdk1.5之后提供自动方法进行数学类计算
Integer num = new Integer(10);//装箱
int x = num.intValue(); //拆箱
System.out.println(x * 2);
//自动装箱
Integer y = 10;
System.out.println(++y * 2);
System.out.println("-*******************************");
String str = "123"; //字符串
int num1 = Integer.parseInt(str); //字符串变为基本类型
System.out.println(num1 * 2);
}
}
//字符串变为基本类型 System.out.println(num1 * 2); } }