首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java枚举被认为是原始类型还是引用类型?

在Java中,枚举(Enum)是一种特殊的类(class),它是引用类型(Reference Type)。

枚举类型是一种数据类型,它包含了一组有限的常量值。在Java中,枚举类型是继承自java.lang.Enum类的,因此它具有一些特殊的特性。

枚举类型的值是在编译时就已经确定的,每个枚举值都是一个对象实例,因此它们是引用类型。此外,枚举类型可以有方法和属性,可以实现接口,也可以被继承。

例如,以下是一个枚举类型的定义:

代码语言:java
复制
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

在这个例子中,Day是一个枚举类型,它有7个常量值,每个值都是Day类型的对象实例。因此,当我们使用枚举类型时,需要使用引用类型的语义,例如:

代码语言:java
复制
Day today = Day.MONDAY;

总之,枚举类型是Java中的一种特殊的引用类型,它包含了一组有限的常量值,每个值都是该类型的对象实例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

红宝书 📒 5.3 基本引用类型-原始包装类型

如下 let a = "ss" let b = a.substring(2) 答案是: ECMAScript 提供了三种特殊的引用类型 Boolean Number String。...每当用到某个原始值的方法或属性时,后台都会创建一个相应原始包装类型的对象。...思考 3 原始包装类的typeof会是什么? 其实这个问题多余问,都是引用类型了。执行typeof 一定是object类型。...Boolean(string) //true 因为Object构造函数作为一个工厂方法,可以根据传入的类型返回相应的原始包装类型(下面是用instanceof 检测具体的引用类型,因为typeof对于引用类型的检测都是...toLocalString():返回字符串 其他方法 之所以原始类型能使用方法,是因为原始包装类型 toFixed() 返回指定小数点位数的数值字符串 let num = 10 console.log(

23510

TypeScript 中的基础类型原始类型、对象类型、数组类型、元组类型枚举类型和联合类型

TypeScript 强大的类型系统使得开发者能够更轻松地编写可维护、可扩展的代码。本文将详细介绍 TypeScript 中的基础类型,包括原始类型、对象类型、数组类型、元组类型枚举类型和联合类型。...原始类型在 TypeScript 中,有以下几种原始类型:数字类型数字类型用于表示整数或浮点数。可以使用 number 关键字来声明数字变量。...null 类型用于表示空值或者对象引用为空。可以使用 void 和 null 关键字来声明对应的变量。...可以使用 enum 关键字来声明枚举类型。...总结本文详细介绍了 TypeScript 的基础类型,包括原始类型、对象类型、数组类型、元组类型枚举类型和联合类型等方面。

30030

Java枚举类型

Java枚举类型----每博一文案师父说:人活一世,每个人都有他的特别,每个人都值得温柔相待。...JDK 5.0 enum 定义枚举类在 Java 编程语言中,基于 JDK5.0 的前提下,您可以使用 enum 关键字定义枚举类型。...定义枚举类型特有的属性 // 注意: private final 修饰防止修改,这个根据需求设定就好,可以没有 private final String stringName;...定义枚举类型特有的属性 // 注意: private final 修饰防止修改,这个根据需求设定就好,可以没有 private final String stringName;...举例: 将指定一个星期的枚举类型为:// 静态常量,导入对于特定的包,对于静态常量可以省略类名,直接使用常量名的方式import static blogs.blog6.Day.SUNDAY;// 枚举类型也是可以权限修饰符修饰的

1.3K00

string 是值类型,还是引用类型(.net)

一. string 类型的用法比较像值类型 稍微有点.NET 编程知识的人都知道 string是引用类型。我为什么还有此一问?因为string的使用非常像值类型。...MessageBox.Show(str); private void Test(string str) {       str = str + "de"; } 运行上面的代码你会发现 str始终是abc,这就有点像值类型...因为值类型传递的是具体的值,所以传入的参数是形参,函数内部修改形参,不影响外部的变量。引用类型可不是这样,传递的是引用不是值。所以函数内部的修改,会影响到外部。...二.string类型是只读的引用类型,修改string对象会创建新的实例 到底string类型是值类型还是引用类型?答案当然是引用类型。...      MessageBox.Show(str.GetHashCode().ToString());   } 可以看出 第一个提示框和第二个提示框的显示的值是一样的,说明了string传递的是引用

1.6K10

java 引用类型

我刚接触java、对于引用的认识。就是 Student stu=new Student();stu就是那个引用,至于这个stu是个什么样的引用,就不太清楚了。...java 中对象的引用类型分为四种:强引用、弱引用、弱引用、虚引用引用(StrongReference) 就是我们平时最常用的,Student stu=new Student();这里的引用就是个强引用...它的作用是引用一个对象,但是并不阻止该对象回收。如果使用一个强引用的话,只要该引用存在,那么引用的对象是不能回收的。弱引用则没有这个问题。...hash表允许使用任何Java对象作为键来使用。当一个键值对放入到hash表中之后,hash表对象本身就有了对这些键和值对象的引用。...这种引用,讲真,我没用到过,顺道了解到的而已。据说在一些较为精准的场景下会进行使用。不过可能导致,对象回收的效率下降,据说…… 这就是java 引用的基本类型了。

90110

Java引用类型

前言 使用Java开发,我们不需要去管理对象的生命周期,因为JVM会帮我们回收垃圾,不过这就是安全的吗,显然不是,因为JVM 的堆区存在了很多未回收的对象实例,那么就有可能发生内存溢出,所以我们就有必要在对强引用...弱引用引用相对于软引用来说,它不会等到内存不足才回收,而是只要JVM进行垃圾回收,都会对它进行回收。...userWeakReference赋给了Object b,那么userWeakReference和b之间就关联了起来,所以弱引用就 无法JVM回收。...虚引用和其他的引用不一样,它随时都可能回收,虚引用需要和引用队列ReferenceQueue一起来使用。...总结 从上面的强引用,软引用,弱引用,虚引用可以得出,强引用是我们使用得最多的,它是不会被回收的,即使发生了OOM,软引用会在内存不足的情况下回收, 弱引用只要JVM进行垃圾回收,它都会被回收,虚引用则随时回收

59610

Java引用类型

Java当中的数据类型: 1.基本数据类型 2.引用数据类型: 类 String 数组 抽象类 接口 枚举 .........byte c = a + b;//右边为int,不能赋值给byte byte c = (byte)(a + b);//运行成功 System.out.println(c); // 编译报错 Test.java...MAXNUM=10; //MAXNUM=20;报错 System.out.println(MAXNUM); } } 常量的关键字是final,常量不能改变...,常量命名的时候尽量写成大写 常量只能初始化一次,且必须要初始化 类型转换 隐式类型转换: 把一个小类型自动转换为大类型 显示类型转换: 把一个大类型转换为一个小类型,需要强制类型转换 public...(隐性类型转换) System.out.println(b); } } 其实就是因为long是8个字节,int是4个字节,将long放到int中,就会报错(Java

56510

Java枚举类型使用

在编程中,常常遇到多种类型、多种状态的情况,对于这种可以事先预知的业务我们常常有两种表示方法: 使用DB管理,优点是方便在线维护,缺点是每次加载都要读取数据库,加载的性能取决于数据库的压力 。...使用枚举类型,优点是加载速度依赖于应用服务器,缺点是修改比较麻烦,每次加类型都需要发布代码。...对于Java枚举类型的使用,我们可以总结为以下几个方面:整型值,字符串字段和字符串的相关描述,下面我们就讨论如何方便的在这几个类型中相关转换,对于所有的类型转换可以总结如下: int --> Enum...String -->Enum Enum-->String Enum-->描述 int -->描述 String -->描述 下面我们对于上面的7种描述来做出对应的转换方法,首先定义一个枚举类型...public enum EnumDemo { fail, success, unknow; } 为了能够保证相关的value和值能够保存下来,我们需要对枚举类型改成如下

2.1K20

深入理解面向对象中的原始类型引用类型

什么是数据类型? 我们先前学过的数据类型可以划分成两类:原始类型引用类型原始类型的数据都是一些比较简单数据,比如字符串,数字等。引用类型的数据稍微复杂一点,比如对象。...但是当我们不再使用某个引用类型的变量时,最好还是解除变量对实例的引用,这样有利于垃圾回收机制及时的进行回收,从而释放内存。解除引用最简单的方式就是,将变量赋值为null。...,除了Function以外,其他的引用类型都不能正确的识别。...原始包装器类型也是引用类型,当字符串,数字或布尔值读取的时候,原始包装器类型会自动在后台创建。...总结 JavaScript没有类,但是它有类型,分为原始类型引用类型原始类型的值直接保存在变量中,引用类型的值并不是直接保存变量中,变量中保存的仅仅是引用类型的值所在的内存地址。

1.3K30

Java 引用类型简述

② 并且该finalize方法必须非空 GC 回收问题 对象因为Finalizer的引用而变成了一个临时的强引用,即使没有其他的强引用还是无法立即被回收; 对象至少经历两次GC才能回收,因为只有在...软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用引用的对象垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。...当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只引用关联的对象。一旦一个弱引用对象垃圾回收器回收,便会加入到一个注册引用队列中。...一旦一个弱引用对象垃圾回收器回收,便会加入到一个注册引用队列中。...( Phantom Reference ) PhantomReference 是所有“弱引用”中最弱的引用类型

70270

java枚举类型学习

用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举。参考:java编程思想。...究竟显示的修饰enum实例还是静态导入要看代码的复杂度,看看静态导入是不是会让代码难以理解。 2.2可以在enum中添加自己的方法 enum可以添加方法和构造器。...在一个接口内部创建实现该接口的枚举,以此将元素进行分组,可以达到将枚举元素分类的目的。举例来说,假设想用enum表示不同的食物,同时还希望每个enum元素仍然保持Food类型。...然而当你需要与一大堆类型打交道时,接口就不如enum好用。例如,你想创建一个枚举枚举。那么可以创建一个新的enum,然后用其实例包装Food中的每一个enum类。...package com.test.java.tenum; /** * 枚举枚举 * Created by Administrator on 2016/3/30. */ public enum

1.1K90

Java枚举类型的原理

().getSuperclass().getSuperclass());   //打印该枚举类型的修饰符         System.out.println(Modifier.toString...那么,我们应该这么理解枚举类型的原理,首先enum Color继承了java.lang.Enum这个抽象类,但enum Color还是一个抽象类,所以它可以有抽象方法和非抽象方法。...要是你不明白上面打印的内容,我再提供一个普通的类给你看看,还是类似的效果哦。...使用Java普通类模拟枚举 import java.util.HashMap;   import java.util.Map;   /**  * 模拟星期中的表示的天,每个星期天都表示一个对象...//使用普通JAVA类模拟枚举的应用         WeekDate weekDate = WeekDate.MON;       //获得一个枚举对象 //调用枚举中提供的方法

1.4K80

java学习引用类型之虚引用

引用(Phantom Reference)是Java中最弱的一种引用类型,它在Java.lang.ref包中定义。...与弱引用和软引用不同,虚引用主要用于跟踪对象垃圾回收器回收的活动,并不能通过虚引用获取到对象的实例。虚引用的特点如下:获取对象:无法通过虚引用直接获取到引用的对象实例。...当对象垃圾回收器回收时,会将该虚引用添加到关联的引用队列中,通过监视该引用队列可以得知对象已经回收。...下面是一个简单的示例代码,演示了如何使用虚引用引用队列来追踪对象的销毁过程:import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue...通过将对象与虚引用关联,并设置引用队列,可以在对象回收时得到通知,进而采取相应的措施。防止对象复活:在某些场景下,我们可能希望确保一个对象垃圾回收后不会再次使用。

32930

java学习引用类型之软引用

Java的软引用(Soft Reference)是一种引用类型,它在内存管理中起到一种重要的作用。它与其他引用类型(如强引用和弱引用)相比,具有一定的特点和用途。...软引用的主要作用是在内存不足时,允许垃圾回收器回收引用指向的对象,以释放内存空间。这使得软引用常用于以下场景:缓存:软引用常被用于实现缓存机制。...在内存充足的情况下,可以快速地获取软引用所指向的对象,而在内存不足时,垃圾回收器会自动清理这些引用引用的对象,从而释放内存。图片加载:在Android开发中,软引用广泛应用于图片加载中。...因此,在使用软引用时,需要根据具体需求和场景进行合理的管理和控制。总结来说,软引用Java中常用于缓存、图片加载以及资源管理等场景。它能够在内存不足时自动释放对象,提高内存利用率。...下面是一个示例代码,演示了在内存不足时,软引用对象垃圾回收器自动回收的情况:import java.lang.ref.SoftReference;public class MemoryExample

24210

java学习引用类型之强引用

Java中,强引用(Strong Reference)是最常见、默认的引用类型。它是一种正常的对象引用,如果一个对象具有强引用与之关联,那么即使内存紧张,垃圾回收器也不会回收该对象。...强引用可以通过变量 str 直接访问对象,而且只要 str 存在,垃圾回收器就不会回收引用的字符串对象。强引用的特点包括:强引用可以直接访问对象。强引用不会在内存充足的情况下垃圾回收器回收。...强引用可以避免对象提前回收,但也可能导致内存泄漏问题。需要注意的是,当一个对象不再被引用时,即没有任何强引用指向它时,它将成为垃圾回收的候选对象。...强引用Java中最常用的引用类型,大多数情况下,我们使用的都是强引用。...强引用类型只有显式地设置o为null,或超出对象的生命周期范围(如非全局变量),则gc认为该对象不存在引用,这时就可以回收这个对象。

10620

java学习引用类型之弱引用

Java中,弱引用是一种比软引用更弱的引用类型。弱引用对象的生命周期更短暂,当垃圾回收器进行垃圾回收时,如果一个对象只引用引用,那么该对象会被回收。...Java提供了java.lang.ref.WeakReference类来创建弱引用对象。...弱引用和软引用Java中两种不同的引用类型,它们之间有以下几个区别:生命周期:弱引用的生命周期更短暂。当垃圾回收器进行垃圾回收时,如果一个对象只引用引用,那么该对象会被回收。...请注意,无论是弱引用还是引用,它们都可以通过java.lang.ref.WeakReference和java.lang.ref.SoftReference类来创建。...在实际使用中,需要根据具体需求选择合适的引用类型来管理对象的生命周期和内存使用。

25930
领券