0
点赞
收藏
分享

微信扫一扫

Java基础之引用数据类型

【基本内容】

     通常,在Java中数据类型分为基本数据类型和引用数据类型,基本数据类型直接存储值副本在栈内存中,引用数据类型则只是把它的内存地址即引用存储在栈内存中,其内容即实例化后的对象则存储在堆内存中,这是两者的本质区别。引用数据类型和基本数据类型的主要区别如下表:

 Java基础之引用数据类型_Java

     引用数据类型及其面向对象的特性是Java编程语言的核心,构成了Java面向对象编程的基础。在Java中引用数据类型大致可以分为类、接口、数组、枚举四种,其中类是引用数据类型的基础,和其实例化后的对象,一起构成了Java面向对象的两大核心概念。下表是四种引用数据类型的简要说明:

 Java基础之引用数据类型_引用数据类型_02

     Java中最常见的引用数据类型就是String类,此外还有集合框架相关的接口和类等等;前面提到的八种基本数据类型在Java中都有对应的包装类,分别是Byte、Short、Integer、Long、Float、Double、Character、Boolean。

【注意事项】

1.枚举类的特殊性:枚举类在Java应用开发中被广泛使用,但是它的本质很容易被同学们忽略,所以这里特别再说明一下。枚举本质上是使用enum关键字定义的一种特性的类,它具有以下特征:

 Java基础之引用数据类型_属性值_03

      下面的代码展示了枚举类中定义抽象方法的逻辑,大家参考一下:

enum Color {
    RED{
        public String getColor(){
            return "red";
        }
    },
    GREEN{
        public String getColor(){
            return "green";
        }
    },
    BLUE{
        public String getColor(){
            return "blue";
        }
    };
    
    public abstract String getColor();
 }

2.注解的本质:在Java中,Java注解很容易被理解为一种特殊的类, 理由有以下几点:a.它可以像类那样被单独定义;b.使用时虽然依附在不同的类、属性和方法上,但是同一个注解,在不同的类、属性和方法上的属性值是不同的,这很像类和对象的关系,说明它有多个实例;c.它可以通过反射获取到具体的注解属性值,并且还有class属性。那注解能不能作为一种特殊类并归属为一种引用数据类型呢?实际上注解被设计出现的目的是作为一种元数据机制,用于提供关于代码的附件信息,以此增强代码的功能性和可维护性;注解属性值是作为宿主类元数据的一部分存储在宿主类class文件中, 在运行时虽然可以通过反射获取,但这时获取的并不是注解的实例对象,也不涉及内存分配,获取的只是作为宿主类元数据一部分的注解属性值的静态数据,所以注解至少不能作为一种引用数据类型,但可以理解为其实现是以一种特殊的类为载体的。

3.泛型是不是数据类型:泛型本质上是类型参数化,也是一种占位符元数据,没有实际的定义,也不对应具体的类型,在编译期会被替换为具体的类型,在运行期也不再存在,因而不是一种数据类型:但是泛型的不确定性和参数化,增强了编码的灵活性和可复用性,同时还能避免类型强制转换带来的异常。

                                                                   关注码农爱刷题,看更多文章!

 Java基础之引用数据类型_Java_04

举报

相关推荐

0 条评论