Object类
java.lang.Object类1. Object 类是所有java类的根父类2. 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类3. Object类中的功能(方法与属性)具有通用性
属性: 无
方法: equals() toString() getClass().....
包装类
什么是包装类?为什么需要包装类? 这是大家要了解的
对于java中的基本数据类型我们如果想要把当当做类来使用怎么办呢? 如果想要对这些基本数据类型直接调用一些方法来操作的话 怎么做呢?
由以上就产生了Wrapper包装类(这在python中叫装饰器)
包装类作用:
java提供了8种基本数据类型的对应的包装类, 使得基本数据类型的变量有了类的特征
掌握:基本数据类型
1: 是针对八种基本数据类型定义的相应的引用数据类型---包装类(封装类)2: 有了类的特征就可以调用类的方法3: 我们希望java的基本数据类型也有java面向对象的特殊所以定义了 包装类 把基本数据类型的特殊都封装在对应的类中
基本数据---->Wrapper
基本数据类型转化为包装类:调用包装类的构造器
//基本数据转化为Wrapper : 直接调用包装类的构造器即可
public voidtestOne() {int num1 = 10;
Integer integer= newInteger(num1);
System.out.println("基本数据转化为包装类的结果:" +integer);
Float f= new Float(3.5);
System.out.println(f);
}
Wrapper ---> 基本数据
Wrapper 转化为基本数据类型: 调用Wrapper包装类的 XXValue()方法
//Wrapper 转化为 基本数据 : 直接调用XXValue() 方法
public voidWrapperToBasic() {
Integer integer= new Integer(34);int num =integer.intValue();
System.out.println("Wrapper--->基本数据:"+num);
Float f= new Float(4.6f);float fl =f.floatValue();
System.out.println("Float ----> 基本数据类型:"+fl);
}
基本数据,Wrapper----> String
基本数据和包装类转化为String : 调用String重载的valueOf()方法
//基本数据,Wrapper ---> String : 基本数据和包装类转化为String 直接调用String的valueOf()方法
public voidbasicWrapperToString() {//方法一直接转化
int num = 10;
System.out.println("这是num" + num); //直接加减//方法二调用String的valueOf()
int num1 = 20;
String strNum1=String.valueOf(num1);
System.out.println("基本数据转化为String:"+strNum1);
Integer integer= new Integer(35);
String strInteger=String.valueOf(integer);
}
String ---> 基本数据类型,Wrapper
String 转化为基本数据类型和包装类 需要调用包装类的parseXX()方法
//String ---> 基本数据,Wrapper : 调用包装类的paseXX
public voidStringToBsicsWrapper() {
String str= "123"; //必须是转化的对应类型的字符, 转为int那么久必须是字符串类型的int
Integer integerStr =Integer.parseInt(str);
System.out.println(integerStr);
}
错误的
public voidStringToBsicsWrapper() {
String str= "老王";
Integer integerStr= Integer.parseInt(str); //这样是错误的 因为你要转化为int那么String就要是字符串类型的int "123"
System.out.println(integerStr);
}
装箱子:
//装箱子: 转化为String//需要先把对应的信息转化为包装类 有了类的特征就可以调用类的方法了
public voidpack(){int num = 30;
Integer integer= newInteger(num);
String str=integer.toString();
System.out.println("pack:"+str);}
转化
方法
演示
基本数据转为Wrapper
直接调用Wrapper的构造器
Integer in= new Integer(30);
Wrapper--->基本数据类型
调用包装类的XXXValue()方法
Integer integer = new Integer(34);
int num = integer.intValue();
基本数据,Wrapper--->String
调用String的valueOf()方法
int num1 = 20;
String strNum1 = String.valueOf(num1);
String----->基本数据,Wrapper
调用包装类的paseXX()方法
String str = "123"; Integer integerStr = Integer.parseInt(str);
习题:
如下两个题目输出结果相同吗?各是什么:
1:
Object o1 = true ? new Integer(1) : new Double(2.0);
System.out.println(o1);//
2:
public voidtest() {
Object o2;if (true)
o2= new Integer(1);elseo2= new Double(2.0);
System.out.println(o2);// }
3:
public voidmethod1() {
Integer i= new Integer(1);
Integer j= new Integer(1);
System.out.println(i == j);
Integer m = 1;
Integer n= 1;
System.out.println(m == n);
Integer x = 128;
Integer y= 128;
System.out.println(x == y);
}
解答:
习题1: 答案是:1.0 因为 //因为在编译的时候int 和dubbo会自动对类型提升为dubbo的 所以结果是1.0
习题2: 答案:1 因为没有进行对比只是赋值
习题3: a: //false == 比引用地址 是否同一个对象 不是的
b://true
c://false 因为Internet会把使用频繁的数字存到自己的地址值中 方便我们来调用避免重复调用,-128 ---- 127 这个范围内的 都是调用integer中的保存的都是同一个地址值 超过这个范围就不是同一个自地址值就是新建的了
3:知识点:
Integer内部定义了IntegerCache的结构 IntegerCache中定义了Integer[],
保存了从-128 ---127范围的整数,如果我们使用自动装箱的方式给Inte赋值的范围在-128 -- 127 的范围内时候就可以直接使用数组中的元素 不用去new了
.