‘壹’ java的枚举值能不能用==比较
一般在Java代码里面,涉及到比较2个值的问题,除了是简单的一般数据类型意外,字符串除外,我们都是使用==来判断是否相等的,但是对于字符串和对象以及封装类型的数据都是使用equals方法,来判断2个值是否相等。所以,当我看到别人的代码中,枚举类型变量,直接使用==,来判断是不是相等,很是诧异。然后就有了下面的调查和测试。
先看测试代码:
[java]view plain
/**
*测试枚举比较,使用equal和==
*/
(){
GameEnums1=GameEnum.BIG;
GameEnums2=GameEnum.BIG;
GameEnumss1=GameEnum.SMALL;
System.out.println("s1==s2:"+(s1==s2));
System.out.println("s1.equals(s2):"+(s1.equals(s2)));
System.out.println("s1==ss1:"+(s1==ss1));
System.out.println("s1.equals(ss1):"+(s1.equals(ss1)));
}
再看使用的枚举代码:[java]view plain
/**
*Createdbylxkon2017/2/23
*/
publicenumGameEnum{
BIG,
SMALL,
FATTER
}
最后是代码执行的结果图:‘贰’ java5中的枚举与字符串数组的区别
随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。在其它程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。也就是说,事先考虑到某一变量可能取的值,尽量用自然语言中含义清楚的单词来表示它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称枚举类型
‘叁’ Java中枚举类型怎么赋值
publicenumPath{
PATH1("/home/acer/logs1"),
PATH2("/home/acer/logs2"),
PATH3("/home/acer/logs3"),
PATH4("/home/acer/logs4");
privateStringpath;
Path(Stringpath){
this.path=path;
}
publicStringgetPath(){
returnpath;
}
//测试方法
publicstaticvoidmain(String[]args){
System.out.println(Path.PATH1.getPath());
System.out.println(Path.PATH2.getPath());
System.out.println(Path.PATH3.getPath());
System.out.println(Path.PATH4.getPath());
}
}
‘肆’ java中的枚举应该怎样深刻理解
枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
3.Enum默认实现了java.lang.Comparable接口。
4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。
‘伍’ java中能将字符串赋给枚举类型吗怎样用switch代替if-else
if可以放到switch里面用,也能放外面。如:if(true){switch(abc){case:"1":test="1"; 在这里可以加if判断代码。break;}}
‘陆’ java枚举型的值都是字符串吗
可以是整型,顺便给你我总结的枚举。
1.枚举对象里面的值都必须是唯一的,enum 中不能删除添加元素。
2.元素是公有静态的public static,构造方法只能为private。
2.可以通过 Enum 类名直接引用该常量,如Unit.u1
3.允许程序员为eunm 实例编写方法,如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例,否则编译器会报错。
4.可以创建一个enum 类,把它看做一个普通的类(可以有抽象方法)。可以添加其他方法,覆盖它本身的方法。
5.values() 方法是编译器插入到enum 定义中的static 方法,所以,当你将enum 实例向上转型为父类Enum 是,values() 就不可访问了。
6.所有enum都继承java.lang.Enum类。
7.所有枚举类都提供一个静态的values()方法(返回该枚举类所有对象组成的数组),便于遍历所有枚举对象。
for (Unit u: Unit.values()) {
System.out.println(u); }
‘柒’ java枚举的几种用法
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,
有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
Java代码
public enum Color {
RED, GREEN, BLANK, YELLOW
}
用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
Java代码
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
Java代码
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
Java代码
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
Java代码
public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//接口方法
@Override
public String getInfo() {
return this.name;
}
//接口方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
用法六:使用接口组织枚举
Java代码
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
private static void testImplementsInterface() {
for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
System.out.print(dessertEnum + " ");
}
System.out.println();
//我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。
for (CoffeeEnum coffee : CoffeeEnum.values()) {
System.out.print(coffee + " ");
}
System.out.println();
//搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。
//还有就是个“多态”的功能吧,
Food food = Food.DessertEnum.CAKE;
System.out.println(food);
food = CoffeeEnum.BLACK_COFFEE;
System.out.println(food);
}
‘捌’ java 如何将String 转换成 枚举
你Student类设计肯定有问题,你类里应该有 性别成员变量并且提供set/get方法,然后你可以在你Student类里添加一个枚举。如:
public class Student {
private String sex;
public void setSex(String sex) {
...
}
public String getSex() {
}
public enum Sex {
...
}
}
‘玖’ java如何用方法toString()将枚举类型转换为字符串类型
枚举类
public enum Vegetable
{
Apple=1,
Banana=2,
Orange=3
}
String Banana=Vegetable.Banana.ToString();