`
yanghongxia9
  • 浏览: 115027 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

具有公有地静态final数组域

    博客分类:
  • java
 
阅读更多
public static final String[] CODES={ "A","B", "C", "D", "E};  
初看这段代码有什么感想?因为CODES定义的是static final,"final"在java中定义为"不可变"(我想在其它语言中也是这样定义的),值得注意的是它只是说明指向该对象的指针不变,对于常量对象来说这点是成立的,但对于数组来说就不成立啦!因为上面只能保证CODES对象不变(意思是说final只能保证基本数据类型或原始数据类型不可变,比如:String,Double),但CODES引用的对象是可以改变的。  

解决方案1:定义一个私有数组,以及编写一个公有的非可变列表:  
private static final String[] CODES ={ "A","B", "C", "D", "E"};  
public static final List VALUES= Collections.unmodifiableList(Arrays.asList(CODES));   

解决方案2:要求在编译时(compile-time)类型检查,这样也就损失了性能  
private static final String[] CODES = { "A","B", "C", "D", "E"};  
public static final codes() {  
    return (CODES[])CODES.clone();  
}

解决方案3:死马当做活马医  
public static final String CODES_A = "A";  
public static final String CODES_B = "B";  
public static final String CODES_C = "C";  
public static final String CODES_D = "D";  
public static final String CODES_E = "E";
分享到:
评论

相关推荐

    JAVA类与对象及数组习题及答案.pdf

    数组是具有相同类型元素的集合。在Java中,数组是一个对象,可以通过下标来访问其元素。数组一旦创建,其大小就固定不变。 在Java中,final关键字可以用来修饰类、方法和变量。当final关键字用于类时,表示这个类不...

    JAVA类与对象及数组习题.pdf

    `定义了一个公有的静态方法`fun`,没有返回值。 Java中的`static`关键字用于定义类的静态成员,这些成员属于类本身,而不属于任何特定的对象。例如,`static int m = 12;`声明了一个静态变量`m`。 Java支持继承的...

    考试酷java 第四章.pdf

    7. **定义常量**:公有double型常量PI应定义为`public final static double PI=3.14;`,这符合Java中常量的定义规范。 8. **构造方法与默认构造方法**:如果一个类定义了自己的构造方法,那么它仍然可以使用默认...

    java命名规范

    如果变量是公有的(public)或者静态常量(static final),通常使用全大写字母并用下划线分隔单词,如`public static final int _STOPPED = 0`,以增加可读性。 4. **静态最终变量(Static Final Variables)命名*...

    java期末考试知识点总结.doc

    1. **Static域**:静态域是类级别的,对于所有对象共享同一个副本。 2. **Static方法**:静态方法是类级别的,可以直接通过类名调用,不需要实例化对象。 #### 十、Final关键字 1. **Final类**:不可被继承的类。 ...

    java面向对象.doc

    以上内容涵盖了Java面向对象编程的关键知识点,包括封装、继承、多态,以及类与对象、String的比较、this关键字、单态模式、对象数组和final关键字的使用。理解并熟练掌握这些概念,对于Java开发者来说至关重要,...

    java全集.pdf JAVA全集

    - 通过私有变量和公有方法来隐藏类的内部细节。 **7.2 继承(Inheritance)** - **Java继承特点**:Java不支持多重继承,但可以通过实现多个接口来模拟多重继承的效果。 - **父类(SuperClass)和子类(SubClass)...

    Java程序设计技术-期末复习.ppt

    - (3) Java接口中的成员默认为`public static final`,但不是静态的,因此不会引起名字冲突。 - (4) Java允许方法嵌套定义,但嵌套方法只能在内部类或匿名类中使用。 - (5) 静态方法不能直接访问非静态成员,因为...

    Java笔记,本人学习java的心血笔记

    属性可以是公有的(public)、私有的(private)或受保护的(protected)。 ##### 2.4.2 this关键字 `this`关键字代表当前对象的引用,用于访问本类中的属性和方法。 ##### 2.5 包 包是Java中组织类的一种方式,用于...

    Effective-Java读书笔记

    1. **枚举代替常量类**:书中强调了使用枚举类型而非一组静态final字段来表示一组相关的值。枚举提供更好的类型安全,防止非法值的创建,并且可以添加方法和实现接口。 2. **避免使用原始类型数组**:推荐使用泛型...

    Core java经典试题

    JavaBean的主要特点是具有公有的getter和setter方法,以及一个无参构造器。 #### 十二、static静态关键字 1. **静态属性**:属于类而不是对象,所有对象共享同一个静态属性。 2. **静态方法**:可以直接通过类名...

    JAVA复习提纲(用于Java复习考试)

    Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、健壮性和安全性。在Java的学习和复习过程中,以下是一些关键的知识点: 1. **基础概念**: - `java`命令:Java程序的执行入口,通常以...

    2012秋季Java程序设计期末考试试卷-A卷-(含答案).doc

    - 错误的说法是`静态成员方法可以调用实例成员方法`,因为静态方法不能直接访问非静态成员。 13. **访问权限**: - 子类不能继承父类的私有(`private`)成员,无论父类是否在同一包内。 - 同包中的子类可以访问...

    java常见的面试点

    - **Arrays类**: 提供了多个静态方法来处理数组。 - `Arrays.sort(array)`: 对数组进行排序。 - `Arrays.binarySearch(array, key)`: 在有序数组中查找指定元素的位置。 - `Arrays.toString(array)`: 将数组转换...

    Android项目编码规范

    - **规则**:非公有非静态字段以`m`开头,静态域以`s`开头,常量全大写并用下划线分隔。 示例: ```java public class MyClass { public static final int SOME_CONSTANT = 42; private static MyClass ...

    JAVA题库1单项选择题.pdf

    题库中出现的`static`, `public`, `new`, `protected`, `final`, `void`, `class`等是Java的关键字,分别用于定义静态成员、访问修饰、对象创建、继承访问控制、常量定义、方法或类无返回值以及类的定义。...

    自己总结java学习笔记

    4. **常量声明**:常量使用`final`和`static`修饰,如`final static double PI = 3.14159;`。 5. **数值数据类型**:Java提供了各种数值类型,包括`byte`, `short`, `int`, `long`(整数),`float`, `double`...

Global site tag (gtag.js) - Google Analytics