Java学习系列(九)

news/2024/12/29 6:33:19/

1.枚举(enum)

Java 枚举是一个特殊的类,一般表示一组常量。

如:一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。

enum Color 
{ RED, GREEN, BLUE; 
} 

 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

以上枚举类 Color 颜色常量有 RED, GREEN, BLUE,分别表示红色,绿色,蓝色。

enum Color 
{ RED, GREEN, BLUE; 
} public class Test 
{ // 执行输出结果public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } 
}

枚举类也可以声明在内部类中:

public class Test 
{ enum Color { RED, GREEN, BLUE; } // 执行输出结果public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); } 
}

enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Serializable 和 java.lang.Comparable 两个接口。

values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 类中:

  • values() 返回枚举类中所有的值。
  • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
  • valueOf()方法返回指定字符串值的枚举常量。
enum Color 
{ RED, GREEN, BLUE; 
} public class Test 
{ public static void main(String[] args) { // 调用 values() Color[] arr = Color.values(); // 迭代枚举for (Color col : arr) { // 查看索引System.out.println(col + " at index " + col.ordinal()); } // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException System.out.println(Color.valueOf("RED")); // System.out.println(Color.valueOf("WHITE")); } 
}

执行以上代码输出结果为:

RED at index 0
GREEN at index 1
BLUE at index 2
RED

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用

枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

 

enum Color 
{ RED, GREEN, BLUE; // 构造函数private Color() { System.out.println("Constructor called for : " + this.toString()); } public void colorInfo() { System.out.println("Universal Color"); } 
} public class Test 
{     // 输出public static void main(String[] args) { Color c1 = Color.RED; System.out.println(c1); c1.colorInfo(); } 
}

执行以上代码输出结果为:

Constructor called for : RED
Constructor called for : GREEN
Constructor called for : BLUE
RED
Universal Color

2. package(包)

包机制,用于区别类名的命名空间。

作用:

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用

  • 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突

  • 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

包语句的语法格式为:

package pkg1[.pkg2[.pkg3…]];

包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。

如果一个源文件中没有使用包声明,那么其中的类,函数,枚举,注释等将被放在一个无名的包(unnamed package)中。

在 Java 中,import 关键字用于导入其他类或包中定义的类型,以便在当前源文件中使用这些类型。

import 关键字用于引入其他包中的类、接口或静态成员,它允许你在代码中直接使用其他包中的类,而不需要完整地指定类的包名

在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。

可以使用 import语句来引入一个特定的类:

import com.runoob.MyClass;

也可以使用通配符 * 来引入整个包或包的子包:

import com.runoob.mypackage.*;

这可以导入 com.runoob.mypackage 包中的所有类,从而在当前源文件中使用该包中的任何类的方法、变量或常量。注意,使用通配符 * 导入整个包时,只会导入包中的类,而不会导入包中的子包

在导入类或包时,你需要提供类的完全限定名或包的完全限定名。完全限定名包括包名和类名的组合,以点号 . 分隔。

import java.util.ArrayList; // 引入 java.util 包中的 ArrayList 类
import java.util.*; // 引入 java.util 包中的所有类import com.example.MyClass; // 引入 com.example 包中的 MyClass 类
import com.example.*; // 引入 com.example 包中的所有类

注意类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。 


http://www.ppmy.cn/news/1278823.html

相关文章

Spring接口返回的类型是json格式,里面字段对应base64格式的excel文件

使用场景:需要对前端导入的excel文件中的内容进行验证,如期中有验证失败的信息需要转成excel反馈给前端,用户下载查看信息,并且前端需要获取json返回的状态,给用户提示失败或者成功,所以需要导出json的同时…

Linux笔记本电脑投屏到电视,用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上,可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先,在Linux系统的电脑里用chrome浏览器或edge浏览器打开网址webcast.airdroid.com。这个网址就是AirDroid Cast的网页版。你可以看到中间白色框框的…

HarmonyOS 点击物理返回键再按一次退出系统(eTS)

(1)首先,定义一个变量,用于计算用户两次按下返回键的时间差: //todo 定义全局变量State exitTime: number 0;(2)然后就是一个捕捉用户按下返回键的事件: //todo 定义全局变量State …

解锁Word新技能,实现下拉框选择功能

项目实施过程中,涉及到从word导入数据,以前常规的搞法是从excel做导入,下拉框实现也比较简单,用数据有效性设置即可,其实当时也考虑用excel来做,因为业务场景的关系,看起来没有word直观&#xf…

Guava的TypeToken在泛型编程中的应用

第1章:引言 在Java世界里,泛型是个相当棒的概念,能让代码更加灵活和类型安全。但是,泛型也带来了一些挑战,特别是当涉及到类型擦除时。这就是TypeToken大显身手的时候! 作为Java程序员的咱们,…

Java与前端:2023年的真实状况与焦虑解读

一、引言 在2023年,IT圈中流传着一些关于Java和前端的言论,这些言论引起了广泛的关注。有些人认为“Java已死、前端已凉”,而另一些人则持不同观点。那么,这些言论背后的真相是什么?它们是在贩卖焦虑吗?本…

基于jdk11和基于apache-httpclient的http请求工具类

1.基于apache-httpclient 需要引入依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.5</version></dependency> 工具类如下&#xff1a; package com.bw.e…

jvm 面试

1说一下 jvm 的主要组成部分&#xff1f;及其作用&#xff1f; 类加载器&#xff08;ClassLoader&#xff09;&#xff1a;负责将字节码文件加载到内存中&#xff0c;并生成对应的类对象。 执行引擎&#xff08;Execution Engine&#xff09;&#xff1a;负责执行字节码指令&am…