Java学习—类型

一、基本类型 primitive(原始 简单)
byte short int long float double char boolean
二、引用类型 reference
String、数组、类等

  • 包装类型
    Byte、Short、Integer、Long、Float、Double、Character、Boolean
    对基本类型进行封装,包装类型对应的是类,相应地有对象和方法
  • 特殊值
    null
    NullPointerException 空指针异常:当引用类型取值为null时,想进一步使用它(调用方法和字段),会抛出错误
    判断是否是null:
    if (xx != null)

三、类型转换

  • 为什么要类型转换
    声明变量之后,必须赋予变量和声明类型一致的数据类型
    1、基本类型间


    基本类型转换
  • 顺箭头:隐式转换(java自动转换)
byte a = 10;
int b = a;
  • 逆箭头:强制转换
    在要转换的变量前加括号声明新类型
int c = 20;
byte d = (byte) c

注意:强制转换有可能损失精度
2、包装类型和基本类型间


包装类型和基本类型之间的转换

3、引用类型之间

  • 为什么要转?

(1)向上转型
a.使用父类型统一处理子类型。例如Animal是Cat类和Dog类的父类型,如果一个静态方法想同时对Cat类和Dog类处理,就可以传入父类型

static void test(Animal a){
};
test(new Cat());
test(new Dog());

b.数组类型可以使用父类型统一

Animal[] cats = new Animal[] {new Cat(), new Dog()};

(2)向下转型
将转换的父类型转换回来

  • 隐式转换【向上转型】:待转换的对象和目标类型之间,要符合“是一个”的关系
    注意:转换之后,对象还是对象,只是用父类型来表示它


    关系举例
// 猫类型转换为动物类型和Object类型
Animal a = new Cat()
Object b = new Cat()
  • 强制转换【向下转型】:与基本类型的强制转换一样,加括号声明
    注意:强制转换需要满足转换对象和目标类型之间符合“是一个”关系,举例如下
// 隐式转换
Animal a = new Cat();
Object b = new Cat();

// 强制转换
Cat c = (Cat) a; //将Animal类强制转换为cat类,因为a代表的对象本来就是cat,转换合法
Dog d = (Dog) d; //不合法,a代表的对象是cat
Cat e = (Cat) b; //合法。b是cat对象
Animal g = (Animal)b;合法,b是cat对象,和Animal符合“是一个”关系

4、不属于以上三种

你可能感兴趣的:(Java学习—类型)