Day 12:枚举值、枚举类
jdk1.5新特性之-----枚举
问题:某些方法所接收的数据必须是在固定范围之内的,
解决方案: 这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用。
class Gender{
String value;
public static final Gender man = new Gender("男");
public static final Gender woman = new Gender("女");
private Gender(String value) {
this.value = value;
}
}
class Person{
private String name;
private Gender sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex = sex;
}
}
public class Demo1 {
public static void main(String[] args) {
Person p = new Person();
p.setName("李英");
p.setSex(Gender.woman);
System.out.println("名字:"+ p.getName()+" 性别:"+ p.getSex().value);
}
}
枚举方法修改结果
enum Gender{
man("男"),woman("女");
String value;
private Gender(String value){
this.value = value;
}
}
class Person{
private String name;
private Gender sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gender getSex() {
return sex;
}
public void setSex(Gender sex) {
this.sex = sex;
}
}
public class Demo6 {
public static void main(String[] args) {
Person p = new Person();
p.setName("狗娃");
p.setSex(Gender.woman);
System.out.println("名字:"+ p.getName()+" 性别:"+ p.getSex().value);
}
}
jdk1.5对以上问题提出了新的解决方案: 就是使用枚举类解决
枚举:一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,可以直接使用枚举予以解决。
比如: 方向 , 性别 、 季节 、 星期......
枚举类的定义格式:
enum 类名{
//枚举值
}
枚举要注意的细节:
1. 枚举类也是一个特殊的类。
2. 枚举值默认的修饰符是public static final。
3. 枚举值就是是枚举值所属的类的类型, 然后枚举值是指向了本类的对象的。
4. 枚举类的构造方法默认的修饰符是private的。
5. 枚举类可以定义自己的成员变量与成员函数。
6. 枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
7. 枚举类可以存在抽象 的方法,但是枚举值必须要实现抽象 的方法。
8. 枚举值必须要位置枚举类 的第一个语句。
//自定义一个枚举类
enum Sex{
//枚举值
man("男"){ @Override
public void run() {
System.out.println("这是个男的");
} },woman("女"){ @Override
public void run() {
System.out.println("这是个女的");
}
};
// public static final Sex man = new Sex();
String value; //成员 变量 //构造函数
private Sex(String value){
this.value = value;
} //成员函数
public void getValue(){
System.out.println("value :"+ value);
} public abstract void run();//抽象方法必须在枚举值中实现,因为枚举值是Sex类的对象 } public class Demo2 { public static void main(String[] args) {
Sex sex = Sex.man; //获取到了枚举类的对象
sex.value = "男";
sex.getValue();
sex.run();
}
}
switch适用的数据类型: byte \ char \short \ int \ String\枚举类型
注意:
case语句后面跟的枚举值,只需要单写枚举值即可,不需要再声明该 枚举值是属于哪个枚举类的。
enum Season{
spring,summer,autumn,winter;
}
enum Person2{
student,worker;
}
public class Demo3 {
public static void main(String[] args) {
Season season = Season.summer;
switch(season){
case spring:
System.out.println("春天...");
break;
case summer:
System.out.println("夏天...");
break;
case autumn:
System.out.println("秋天...");
break;
case winter:
System.out.println("冬天...");
break;
}
}
}
IO流(Input Output) :
IO技术主要的作用是解决设备与设备之间 的数据传输问题。 比如: 硬盘--->内存 内存的数据---->硬盘上 把键盘的数据------->内存中
IO技术的应用场景:
导出报表 , 上传大头照 、 下载 、 解释xml文件 ...
数据保存到硬盘上,该数据就可以做到永久性的保存。 数据一般是以文件的形式保存到硬盘上
sun使用了一个File类描述了文件或者文件夹的。
File类可以描述一个文件或者一个文件夹。
File类的构造方法:
File(String pathname) 指定文件或者文件夹的路径创建一个File文件。
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child)
目录分隔符: 在windows机器上 的目录分隔符是 \ ,在linux机器上的目录分隔符是/ .
注意: 在windows上面\ 与 / 都可以使用作为目录分隔符。 而且,如果写/ 的时候只需要写一个即可。
import java.io.File;
public class Demo1 {
public static void main(String[] args) {
//File file = new File("F:"+File.separator+"a.txt");
File file = new File("F:/a.txt");
/*
File parentFile = new File("F:\\");
File file = new File("F:\\","a.txt");
*/
System.out.println("存在吗? "+ file.exists()); // exists 判断该文件是否存在,存在返回true,否则返回false
System.out.println("目录分隔符:"+ File.separator);
}
}
Day 12:枚举值、枚举类的更多相关文章
- 当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出?
当实体类中entity/DTO/VO等类中,有枚举值,应该怎么输出? 问题: orderStatus 和 payStatus都是枚举类,并且枚举的个数达地10来个,我们不可能在模板页面(jsp/ftl ...
- C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素
/// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private stat ...
- .NET陷阱之六:从枚举值持久化带来大量空间消耗谈起
好长时间没有写博文了,今天继续. 这次跟大家分享的内容起因于对一个枚举值列表的序列化,下面简化后的代码即能重现.为了明确起见,我显式指定了枚举的基础类型. // 定义一个枚举类型. public en ...
- 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum Celebrity{ case DongXie,XiDu,Nandi,BeiGai } // 从左 ...
- AX2012 multiple enum values as query filter选择多个枚举值当过滤条件
classDeclaration { QueryBuildRange qbrLocationType; } datasource.init() { super(); qbrLocationType = ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- 利用DescriptionAttribute定义枚举值的描述信息 z
System.ComponentModel命名空间下有个名为DescriptionAttribute的类用于指定属性或事件的说明,我所调用的枚举值描述信息就是DescriptionAttribute类 ...
- C# 枚举操作扩展类
using System; using System.Linq; using System.ComponentModel; namespace Demo.Common { /// <summar ...
- 枚举|标志枚举+|(或)和&(与)运算|类型转换|值类型和引用类型|传参|异常|垃圾回收
枚举部分 enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它. 但是,还可以 ...
随机推荐
- hdu 3549 Flow Problem 最大流问题 (模板题)
Flow Problem Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- C语言整理复习——指针
指针是C的精华,不会指针就等于没学C.但指针又是C里最难理解的部分,所以特意写下这篇博客整理思路. 一.指针类型的声明 C的数据类型由整型.浮点型.字符型.布尔型.指针这几部分构成.前四种类型比较好理 ...
- vscode点击ctrl键报错Request textDocument/definition failed.
现象 用vscode写java代码的时候突然出现,修复问题点击Ctrl时,输出窗口就打日志,报错Request textDocument/definition failed. 我百度唯一的有用线索就是 ...
- k8s解析service地址方式
[root@k8s-master ~]# dig -t A kubernetes.default.svc.cluster.local. @10.96.0.10 ; <<>> D ...
- C# Chart 点击获取当前点击坐标和Series
C# Chart 点击获取当前点击坐标和Series https://blog.csdn.net/wumuzhizi/article/details/47168989 2015年07月31日 13:5 ...
- 【转】Windows中使用TortoiseGit提交项目到GitLab配置
转 原文地址 https://www.cnblogs.com/xiangwengao/p/4134492.html 下文来给各位介绍Windows中使用TortoiseGit提交项目到GitLa ...
- 学生选课数据库MySQL语句练习题45道
1. 查询Student表中的所有记录的Sname.Ssex和Class列. select Sname,Ssex,Class from Student;2. 查询教师所有的单位即不重复的Depart列 ...
- 四、Vue过渡与动画、过渡css类名、自定义指定、过滤器
一.过渡 动画 1.1简单的过渡动画使用 parent.vue [0]定义一个待显示的数据 [1]定义一个显示隐藏flag [2]使用动画过滤标签,name用来连接style样式:v-show用来控制 ...
- C# 关于AD域的操作 (首博)
前段时间(因为懒得找具体的时间了)公司说让系统可以进行对AD域的操作,包括创建用户.于是上网查资料,了解何为AD域.还不知道的这边请https://www.cnblogs.com/cnjavahome ...
- netty权威指南学习笔记一——NIO入门(3)NIO
经过前面的铺垫,在这一节我们进入NIO编程,NIO弥补了原来同步阻塞IO的不足,他提供了高速的.面向块的I/O,NIO中加入的Buffer缓冲区,体现了与原I/O的一个重要区别.在面向流的I/O中,可 ...