`
roway
  • 浏览: 50709 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第十四:枚举及其他的新特性

 
阅读更多

//定义一个枚举类
public enum Week {
	MON,TUE,WED,THU,FRI,SAT,SUN
}

//遍历枚举类中的常量
public class EnumList {
	public static void main(String[] args) {
		Week[] days = Week.values();// 把一个enum转换成一个enum类型的数组
		for (Week d : days) {
			System.out.println(d);
		}
	}

}

//枚举类型的使用举例
public class EnumTest {
	public static void main(String[] args) {
		EnumTest et=new EnumTest();
		et.work(Week.SUN);
	}

	public void work(Week day) {
		if(day.equals(Week.SAT)){
			System.out.println("购物!");
		}else if(day.equals(Week.SUN)){
			System.out.println("祈祷!");
		}else{
			System.out.println("工作!");
		}
	}
}

//这个例子与EnumTest例子的一些区别(在常量前加与不加Week的区别)
public class EnumInSwitchTest {
	public static void main(String[] args) {
		EnumInSwitchTest e = new EnumInSwitchTest();
		e.work(Week.FRI);
	}

	public void work(Week day) {
		// bity,char,int,枚举类型,对象类型
		switch (day) {
		case MON:
		case THU:
		case WED:
		case TUE:
		case FRI:
			System.out.println("工作!");
			break;
		case SAT:
			System.out.println("购物!");
			break;
		case SUN:
			System.out.println("祈祷!");
			break;
		default:
			System.out.println("非法的日期!");
		}
	}
}


一.

当您使用“enum”定义枚举类型时,实质上您定义出來的类型继承自java.lang.Enum类型,

而每个枚举的成员其实就是您定义的枚举类型的一個实例(Instance),他们都被预设为final,
所以您无法改变他们,他们也是static成員,所以您可以通过类型名称直接使用他们,

当然最重要的,它們都是公开的(public)。

//枚举使用
public class EnumTest {
	public static void doOp(OpConstant opContant) {
		switch (opContant) {
		case TURN_LEFT:
			System.out.println("向左转");
			break;
		case TURN_RIGHT:
			System.out.println("向右转");
			break;
		case SHOOT:
			System.out.println("射击");
			break;
		default:
			System.out.println("错误");
		}
	}

	public static void main(String[] args) {
		doOp(OpConstant.SHOOT);
	}
}

enum OpConstant {
	TURN_LEFT, TURN_RIGHT, SHOOT //每一元素是一个OpContant类型的实例
}


二.

静态导入:

要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。
使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,
使用这些静态成员无需再给出他们的类名

不过,过度使用这个特性也会一定程度上降低代码的可读性

package com.test.common;

public class MyCommon {
	public static final String NAME="hello world";
	public static int add(int a,int b){
		return a+b;
	}
}

//静态导入的举例

import static com.test.common.MyCommon.*;

public class StaticImport {
	public static void main(String[] args) {
		System.out.println(NAME);
		System.out.println(add(1,2));
	}
}


三.

可变参数:

可变参数使程序员可以声明一个接受可变数目参数的方法。

注意,可变参数必须是方法声明中的最后一个参数

//可变参数的使用举例
public class TestVarargs {
	private static int sum(String str,int...nums){
		System.out.println(str);
		int sum=0;
		for(int num:nums){
			sum+=num;
		}
		return sum;
	}
	public static void main(String[] args) {
		System.out.println(sum("abc",1,2));
		System.out.println(sum("abc",1,2,3));
		System.out.println(sum("abc",1,2,3,4));
	}
}


补充知识:

Enumeration接口

java.util.Enumeration接口作用与Iterator接口类似,
但只提供了遍历Vector和Hashtable(及子类Properties)
类型集合元素的功能,且不支持集合元素的移除操作

分享到:
评论

相关推荐

    第十四章枚举

    四、枚举的高级特性 1. 值的关联:在某些语言中,枚举成员可以有附加的数据结构,比如 C# 的枚举可以包含方法或属性。 2. 枚举的继承:在支持面向对象的语言中,枚举可以派生自其他枚举或类,从而实现枚举的复用和...

    Java开发实战从入门到精通视频教程下载第14章 枚举.zip

    本视频教程第14章将深入讲解Java中的枚举类型,帮助开发者从入门到精通,理解并掌握这一重要特性。枚举在实际开发中广泛应用于表示固定的、有限的状态集合或选项,如颜色、星期等。 首先,枚举类是Java中的单例类,...

    深入理解C++11:C++11新特性解析与应用

    第3章讲解了具有广泛可用性、能与其他已有的或者新增的特性结合起来使用的、具有普适性的一些新特性;第4章讲解了C++11新标准对原有一些语言特性的改进,这些特性不仅能让C++变得更强大,还能提升程序员编写代码的...

    C语言初学者入门讲座 第十四讲 枚举与位运算(2)

    在C语言中,位运算和枚举类型是高级编程的基础内容。位运算允许程序员直接对整数类型的位进行操作,而枚举类型则是一种用户定义的数据类型,它包含了命名的整数常量。本文将深入探讨C语言中的枚举类型、位运算以及...

    java第七章高级类特性.rar

    以上只是“第七章高级类特性”中可能涵盖的一些关键点,具体的学习内容还会涉及到这些特性的实际应用和示例,以及如何结合其他Java特性来解决实际问题。掌握这些高级类特性将极大地提高你作为Java开发者的技能和效率...

    Java开发详解.zip

    031404_【第14章:枚举】_枚举的其他应用笔记.pdf 031501_【第15章:Java反射机制】_认识Class类笔记.pdf 031502_【第15章:Java反射机制】_Class类的使用笔记.pdf 031503_【第15章:Java反射机制】_反射应用——...

    think in java4 中文版(真正的第四版)

    14. **第十四章:IO流新特性** - 介绍了NIO(New Input/Output)库,包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。 15. **第十五章:并发升级** - 更新了Java并发编程的内容,包括并发工具类和并发...

    ACCP6.0 S1 C#语言 和 数据库技术基础 第14章(共17章)

    这个压缩包很可能包含了第14章的学习资料,如课件(PPT)、练习题及答案,这对于自我学习或复习是非常有价值的资源。通过深入学习这些知识点,初学者能够掌握C#编程的基础,并了解如何利用数据库技术存储和管理数据...

    Windows2000活动目录开发人员参考库第4卷ADSI参考手册

    第14章 非自动化接口 14.1 IdirectoryObject接口 14.1.1 IDirectoryObject::CreateDSObject 方法 14.1.2 IDirectoryObject::DeleteDSObject 方法 14.1.3 IDirectoryObject::GetObjectAttributes 方法 14.1.4...

    The Swift 中文完整翻译版

    第14章:类型转换 讲解了如何在Swift的类型系统中转换和检查类型。 第15章:类型嵌套 介绍了在Swift中如何将类型嵌套在其他类型内部使用。 第16章:扩展 演示了如何扩展类型来增加新的功能。 整个文档中包含的...

    core java 课件 oracle 公司制作

    第十四章:网络编程 讲解Java的Socket编程,包括TCP和UDP协议的使用,以及客户端和服务器端的实现。 总之,《核心Java》课件是Java初学者和进阶者的宝贵资源,通过系统的课程学习,开发者可以扎实掌握Java编程的...

    Thinking in Java 第四版 第2章到第17章答案

    13. **第十四章:图形用户界面** - 使用Swing库创建GUI,包括组件、布局管理器、事件处理等。 15. **第十五章:网络编程** - Java提供了Socket和ServerSocket类进行网络通信,以及URL和URLConnection类用于访问网络...

    疯狂Java讲义源码(第五部分)

    《疯狂Java讲义》是Java编程领域的一本经典教材,其源码分为多个部分,这里我们聚焦于第五部分,该部分涵盖了第14至16章的源代码。这三章涉及了Java高级特性和一些核心框架的使用,对于深入理解和掌握Java编程技术至...

    C++ PPT课件。。。。

    第一章 C++概述,第二章 数据类型、运算符与表达式,第三章 简单的输入输出,第四章 C++...第十章 构造函数和析构函数,第十一章 继承和派生类,第十二章 类的其它特性,第十三章 运算符重载,第十四章 输入/输出流类库

    JAVA程序设计PPT

    14. **第十四章:IO与NIO** - 比较传统的IO与New IO(NIO)模型,讲解NIO的非阻塞I/O特性。 15. **第十五章:网络编程** - 讲解Socket编程,TCP和UDP协议,以及HTTP协议在Java中的实现。 16. **第十六章:Java EE...

Global site tag (gtag.js) - Google Analytics