avatar

JavaSe备忘录04-封装数据类型

引用数据类型(封装数据类型)

面向对象设计的数据类型;可看成类的方式存在,不能扩展,绝种的,没有子类。

  • 整形: Byte ,Short, Integger,Long
  • 浮点型:Float,Double
  • 字符型: Character
  • 布尔型:Boolean

小结:两个特殊:int—> Integer  char —> character, 其他的都是将首字母大写。

比较:

  • 数组比较,基础数据类型比较如果值相等返回的都是 ture,和数据无关。
1
2
3
4
5
6
7
8
// 看见字符型 ---> ascii -->看出数字
int xi =5;
float b=5.0f;
double c =10d/2;
System.out.println(a==b); //true
System.out.println(a==c); //true
System.out.println(b==c); //true
System.out.println('0'==48); //true
  • 引用数据类型和基础数据类型值比较相同的都是 true,比较都是==。
  • 如果两个引用数据类型比较,那么就不用==而是 equals。
  • 如果是同类型的引用数据类型比较,还是值比较都用 equals,== 就是内存地址比较。
1
2
3
4
5
6
7
8
9
10
Integer aa = 10;
int bb = 10;
Float cc = 10.0f;
System.out.println(aa==bb); //true
System.out.println(bb==cc); //true
System.out.println(aa.equals(cc)); //false
Float dd = 10.0f;
System.out.println(cc==dd)); //false 内存地址比较
System.out.println(cc.equals(dd)); //true 值比较
System,out.println(cc.equals(a)); //false equals:同类型为true,不同类型为false.

基础数据类型跟封装数据类型的区别:

  • 基础数据类型它是一种数据结构而已,它定义都是在堆内存中的。
  • 封装数据类型它是一个类,它有方法和属性,供封装数据调用和转换,提供很多方法可以转换成对应的基础数据类型。
  • 封装数据类型的原理还是基础数据类型,只不过它是一个常量类型的基础数据类型,通过它的结构函数可以发现它是一个常量。

==和 equals

equals:一定是封装类型比较,类和类的比较。

封装数据类型比较:不用==而是 equals

在开发过程中,一般都是用封装数据类型,基础数据类型只是在一些计算和返回的适合用的到。
全局变量:方法以外,类以内的变量都是全局变量。
在全局变量下:基础数据类型的默认值

  • 整型:byte, short, int, long. 默认值是 0
  • 浮点型:float, double 默认是 0.0
  • char 默认值\u0000
  • boolean 默认值 false

封装数据类型:默认值 null.因为是类。
eg: Integer a = null; // 空引用,在堆中没有开辟空间。

  • 判断一个数据类型是否为空
  • 其二,基础数据类型,不能应用于泛型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Integer a = 10;
Integer b = 10;
Float c = 10f;
System.out.println(a==b);//true
// Integer==Integer && 10==10
System.out.println(a.equals(b));//true
// 10 ==10
System.out.println(a.equals(c));//false
/**源码:
public boolean equals(Object obj){
if(obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
**/

小结:封装数据类型

  • 同类型比较时,如果数据类型不一致都是 false,反之 true。
  • 如果同类型比较可以用==,它和 eqauls 是一个意思。
  • 在开发工程中,封装数据类型的比较都用 eqauls 而不是==。
  • 在开发中,时刻谨记,如果两个数字都相同,返回还是 false,那么就一定检测数据类型是否一致了。如果一致一定是 true,否则 false。
  • String 类型:**== 内存地址比较;eqauls  值比较。**

拆装箱

封装数据类型和基础数据类型之间可以相互转换。
应用:值注入;数据类型转换等。

文章作者: luochenxi
文章链接: https://luochenxi.github.io/2017/01/02/yuque/JavaSe%E5%A4%87%E5%BF%98%E5%BD%9504-%E5%B0%81%E8%A3%85%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kirio

评论