精华内容
下载资源
问答
  • Java 常量都可以定义在哪里?

    千次阅读 2019-03-04 16:12:44
    1、常量提取出来有利于代码阅读,而且下次再做这种判断不用手写或复制,直接通过常量类就能得到,能够避免有的地方是username,有的地方是name来判断同一个逻辑含义相同变量问题。 不过我觉得提取出来并不会有利于...

    哈哈,很搞笑的问题吧!可是小编在实际开发中还真的遇到了一个相关的麻烦,敦促我把这个知识点梳理一下。大神可以飘过,小白还真是要了解一下的好。

    常量使用目的

    1、常量提取出来有利于代码阅读,而且下次再做这种判断不用手写或复制,直接通过常量类就能得到,能够避免有的地方是username,有的地方是name来判断同一个逻辑含义相同变量问题。
    不过我觉得提取出来并不会有利于代码性能提升,因为常量分配在内存的常量池中,所以内存不会出现多个相同常量字符串。总的来说提取常量主要是为了避免魔法数字和提高代码可读性。
    2、常量定义在 final 的 clas 中,防止被其它类继承和实例化。定义在 interface 中性质也是一样,static final属性。但是 interface 看起来就是会被实现的。

    项目场景

    小编在做一个三方的业务对接时,业务方要求变更配置好的static final常量。当小编改变定义的常量值之后,遇到这样一个问题,就是将文件上传到服务器上后,发现引用这个常量的代码并没有变成新的值。

    这是典型的java常量替换的应用,也是因为不够理解java常量替换的机制导致的问题。

    举个小例子:

    	@Test
    	public class Test {
    		String a = "a";
    		String b = "b";
    		String str1 = a + b;
    		String str2 = "a" + "b";
    	}
    

    以上代码 str2 会在编译时就确定下值来,因为是两个字符串常量的连接值,字符串常量本身就是一个宏变量,而 str2 则不行,因为编译时无法确定 a 与 b 的值,如果把 a 与 b 变量定义为 final 变量,则 str1 就可以在编译时确定值。

    修改办法:
    其实,只需要将引用该常量新值的 java 文件重新编译成为 class 文件,并上传到服务器上即可。

    原理:
    当final修饰一个变量时,必须为该变量显示指定初始值,那么这个变量在编译时就可以确定下来,那么这个final变量实质上就是一个“宏变量”,编译器会把程序中所有用到该变量的地方替换成该变量的值。

    而宏替换的过程是在java编译中执行的,也就是说 java 文件在编译时就直接将 final 变量替换为对应的值。当我们将final变量所在的 java 源文件编译成 class 文件后,上传到服务器上,但是引用这个 final 变量的 class 文件,依然是在引用旧的 final 变量时编译的,所以才需要将引用新的 final 变量的 class 文件上传到服务器上才可以。

    常量定义场景

    1、interface中定义常量:接口(Interface)的中变量默认为static final的

    public interface ConstantInterface {  
        String SUNDAY = "SUNDAY";  
        String MONDAY = "MONDAY";  
        String TUESDAY = "TUESDAY";  
        String WEDNESDAY = "WEDNESDAY";  
        String THURSDAY = "THURSDAY";  
        String FRIDAY = "FRIDAY";  
        String SATURDAY = "SATURDAY";  
    }
    

    2、普通类中定义常量:在普通类中使用 static final 修饰变量

    public class ConstantClassField {  
    	public static final String SUNDAY = "SUNDAY";  
    	public static final String MONDAY = "MONDAY";  
    	public static final String TUESDAY = "TUESDAY";  
    	public static final String WEDNESDAY = "WEDNESDAY";  
    	public static final String THURSDAY = "THURSDAY";  
    	public static final String FRIDAY = "FRIDAY";  
    	public static final String SATURDAY = "SATURDAY";  
    }
    

    3、也可以使用get方法:注意,这个类里可没有set方法!!

    public class ConstantClassFunction {  
    	private static final String SUNDAY = "SUNDAY";  
    	private static final String MONDAY = "MONDAY";  
    	private static final String TUESDAY = "TUESDAY";  
    	private static final String WEDNESDAY = "WEDNESDAY";  
    	private static final String THURSDAY = "THURSDAY";  
    	private static final String FRIDAY = "FRIDAY";  
    	private static final String SATURDAY = "SATURDAY";  
    	public static String getSunday() {  
    		return SUNDAY;  
    	}  
    	public static String getMonday() {  
    		return MONDAY;  
    	}  
    	public static String getTuesday() {  
    		return TUESDAY;  
    	}  
    	public static String getWednesday() {  
    		return WEDNESDAY;  
    	}  
    	public static String getThursday() {  
    		return THURSDAY;  
    	}  
    	public static String getFirday() {  
    		return FRIDAY;  
    	}  
    	public static String getSaturday() {  
    		return SATURDAY;  
    	}  
    }
    

    4、final class 定义常量:final类可以通过“类名.”的方式直接取值

    public final class ConstantClassField {  
    	public static final String SUNDAY = "SUNDAY";  
    	public static final String MONDAY = "MONDAY";  
    	public static final String TUESDAY = "TUESDAY";  
    	public static final String WEDNESDAY = "WEDNESDAY";  
    	public static final String THURSDAY = "THURSDAY";  
    	public static final String FRIDAY = "FRIDAY";  
    	public static final String SATURDAY = "SATURDAY";  
    }
    

    5、写在properties文件中:下面是读取 properties 文件的方法

    public static String getProperties(String str) {
    	try {
    		Properties prop = new Properties();
    		InputStream fis = PropertiesUtil.class.getClassLoader().getResourceAsStream("项目下properties的文件名");
    
    		return prop.getProperty(str).trim();
    	} catch (Exception e) {
    		e.printStackTrace();
    	} finally {
    		// 当通过Properties读取文件后,流应当自行关闭
    		prop.load(fis);
    		fis.close();
    	}
    	return null;
    }
    
    建议
    1. 如果是一般业务场景,小编推荐使用第4种 – final class定义,和其它方法比:简洁,表面意思更清楚,不用实现接口,唯一性,通用性也更好。
    2. 如果有的变量在部署的时候可能会根据环境的不同而改变,则建议把常量写到properties文件中。
      就比如我上面的业务场景,如果之前是把常量写在properties文件中,则不会存在上传编译文件的麻烦,直接修改properties文件中的属性即可。因为properties文件中的值是重新加载的,并不适用常量替换的机制。

    更多精彩,请关注我的"今日头条号":Java云笔记
    随时随地,让你拥有最新,最便捷的掌上云服务

    展开全文
  • Java开发规范之常量定义

    千次阅读 2020-03-27 18:06:50
    之前的文章已经介绍过命名规范(点击Java开发规范之命名篇(上)和Java开发规范之命名篇(下)访问),本文将进一步介绍常量定义规范,虽然之前的文章有提到常量规范但也只是限于命名,本篇将讨论常量定义和使用过程...

    开发团队在开发过程中,由于每个人的开发习惯,以及对于技术的理解深浅程度不一,往往一个项目在开发过程中,代码的质量,代码的风格都不尽相似,所以有一份适合团队的代码规范是非常有必要的,而一个团队的代码规范,包含了开发常见的风格习惯以及一些常见代码细节的写法规范等。

    本系列文章将整合 阿里巴巴《Java开发手册》和 谷歌《Java编程规范》,总结Java开发过程的编码规范,并通过具体编码案例给出编码规范的原因,如果总结内容存在问题还望指出。


    目录

    1.禁止魔法值

    2.长整性类型赋值数值后使用大写L

    3.常量需要根据功能放置在不同常量类

    4.常量的复用层次

    5.固定范围的变量使用enum类型


    之前的文章已经介绍过命名规范(点击 Java开发规范之命名篇(上)和 Java开发规范之命名篇(下)访问),本文将进一步介绍常量定义规范,虽然之前的文章有提到常量规范但也只是限于命名,本篇将讨论常量定义和使用过程的具体细则,包括定义格式,如何归类和复用范围等。

    1.禁止魔法值

    【Alibaba】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。

    【Google】未明确定义类似规范

    说明:魔法值是指带代码中直接使用的数值或者字符串,只有在这个数值记述的那部分代码中才能明确了解其含义,比如拼接字符串前缀。

    反例:

    补充:反例1和2出现了魔法值  “1”  和   “stop”,可以使用static final 定义常量或使用enum值

    2.长整性类型赋值数值后使用大写L

    【Alibaba】在long或者Long赋值时,数值后使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。

    【Google】未明确定义类似规范

    说明:小写的l无法区分写的是数字的1,还是Long型标识。

    反例:

    3.常量需要根据功能放置在不同常量类

    【Alibaba】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。

    【Google】未明确定义类似规范

    说明:大而全的常量类,杂乱无章,使用查找功能才能定位到修改的常量,不利于理解和维护。

    正例:【Alibaba】缓存相关常量放在类CacheConsts下;系统配置相关常量放在类ConfigConsts下。

    反例:【Alibaba】日期格式常量和字符串常量放置在同一个常量类中。

    4.常量的复用层次

    【Alibaba】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。

    • 1) 跨应用共享常量:放置在二方库中,通常是client.jar中的constant目录下。
    • 2) 应用内共享常量:放置在一方库中,通常是子模块中的constant目录下。
    • 3) 子工程内部共享常量:即在当前子工程的constant目录下。
    • 4) 包内共享常量:即在当前包下单独的constant目录下。
    • 5) 类内共享常量:直接在类内部private static final定义。

    【Google】未明确定义类似规范

    反例:【Alibaba】针对上述条例 2,易懂变量也要统一定义成应用内共享常量,两位工程师在两个类中分别定义了“YES”的变量: 类A中:public static final String YES = "yes"; 类B中:public static final String YES = "y"; A.YES.equals(B.YES),预期是true,但实际返回为false,导致线上问题。

    5.固定范围的变量使用enum类型

    【Alibaba】如果变量值仅在一个固定范围内变化用enum类型来定义。

    【Google】未明确定义类似规范

    说明:如果存在名称之外的延伸属性应使用enum类型。

    正例:

     

     

     

    展开全文
  • Java命名规范+常量定义方法

    千次阅读 2018-12-12 22:05:33
    但是由于Java面向对象编程的特性,每一名Java程序员都 可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的名称之前加上唯一的前缀。 由于互联网上的域...

    Java命名规范

    定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性。

    包的命名  (全部小写,由域名定义)

    Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都 可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。 由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。 
    例如:net.frontfree.javagroup


    类的命名 (单词首字母大写)

    根据约定,Java类名通常以大写字母开头,如果类名称由多个单词组成,则每个单词的首字母均应为大 写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来 代表对象的,所以在命名类时应尽量选择名词。    
    例如: Graphics


    方法的命名 (首字母小写,字母开头大写)

    方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。 
    例如:drawImage


    常量的命名 (全部大写 ,常加下划线)
    常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。 
    例如:MAX_VALUE


    参数的命名

    参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。

    Javadoc注释

    Java除了可以采用我们常见的注释方式之外,Java语言规范还定义了一种特殊的注释,也就是我们 所说的Javadoc注释,它是用来记录我们代码中的API的。Javadoc注释是一种多行注释,以/**开头,而以*/结束,注释可以包含一些 HTML标记符和专门的关键词。使用Javadoc 注释的好处是编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。 
    例如:

    /** 
    * This is an example of 
    * Javadoc 
    * @author darchon 
    * @version 0.1, 10/11/2002 
    */

    在每个程序的最开始部分,一般都用Javadoc注释对程序的总体描述以及版权信息,之后在主程序中 可以为每个类、接口、方法、字段添加 Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、字段所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟 随更加详细的描述段落。在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这 些段落将在生成文档中以特定方式显示。


    变量和常量命名


    变量的命名

    主要的的命名规范有以下三种:
    Camel 标记法:首字母是小写的,接下来的单词都以大写字母开头
    Pascal 标记法:首字母是大写的,接下来的单词都以大写字母开头
    匈牙利标记法:在以Pascal标记法的变量前附加小写序列说明该变量的类型

    在Java我们一般使用匈牙利标记法,基本结构为scope_typeVariableName,它 使用1-3字符前缀来表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字 母小写,这样保证了对变量名能够进行正确的断句。例如,定义一个整形变量,用来记录文档数量:intDocCount,其中int表明数据类型,后面为表 意的英文名,每个单词首字母大写。这样,在一个变量名就可以反映出变量类型和变量所存储的值的意义两方面内容,这使得代码语句可读性强、更加容易理解。 byte、int、char、long、float、 double、boolean和short。

    数据类型/前缀(附)
    byte b
    char c
    short sh
    int i
    long l
    char c
    string s
    float f
    double d
    hashtable h
    [] arr
    List lst
    Vector v
    StringBuffer sb
    Boolean b
    Byte bt
    Map map
    Object ob

    对于在多个函数内都要使用的全局变量,在前面再增加“g_”。例如一个全局的字符串变量:g_strUserInfo。

    在变量命名时要注意以下几点:

    · 选择有意义的名字,注意每个单词首字母要大写。

    · 在一段函数中不使用同一个变量表示前后意义不同的两个数值。

    · i、j、k等只作为小型循环的循环索引变量。

    · 避免用Flag来命名状态变量。

    · 用Is来命名逻辑变量,如:blnFileIsFound。通过这种给布尔变量肯定形式的命名方式,使得其它开发人员能够更为清楚的理解布尔变量所代表的意义。

    · 如果需要的话,在变量最后附加计算限定词,如:curSalesSum。

    · 命名不相包含,curSales和curSalesSum。

    · static final 变量(常量)的名字应该都大写,并且指出完整含义。

    · 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。

    · 通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用 strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。常 用的量词后缀有:First(一组变量中的第一个)、Last(一组变量中的最后一个)、Next(一组变量中的下一个变量)、Prev(一组变量中的上 一个)、Cur(一组变量中的当前变量)。

    · 为每个变量选择最佳的数据类型,这样即能减少对内存的需求量,加快代码的执行速度,又会降低出错的可能性。用于变量的数据类型可能会影响该变量进行计算所产生的结果。在这种情况下,编译器不会产生运行期错误,它只是迫使该值符合数据类型的要求。这类问题极难查找。

    · 尽量缩小变量的作用域。如果变量的作用域大于它应有的范围,变量可继续存在,并且在不再需要该变量后的很长时间内仍然占用资源。它们的主要问题是,任何类 中的任何方法都能对它们进行修改,并且很难跟踪究竟是何处进行修改的。占用资源是作用域涉及的一个重要问题。对变量来说,尽量缩小作用域将会对应用程序的 可靠性产生巨大的影响。

    关于常量的命名方法,在JAVA代码中,无论什么时候,均提倡应用常量取代数字、固定字符串。也就是 说,程序中除0,1以外,尽量不应该出现其他数字。常量可以集中在程序开始部分定义或者更宽的作用域内,名字应该都使用大写字母,并且指出该常量完整含 义。如果一个常量名称由多个单词组成,则应该用下划线“_”来分割这些单词如:NUM_DAYS_IN_WEEK、MAX_VALUE。

     

    JAVA中定义常量方法

     

     

    一、常量定义的基本注意事项。
      在Java语言中,主要是利用final关键字(在Java类中灵活使用Static关键字)来定义常量。当常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个常量:final double PI=3.1315。在定义这个常量时,需要注意如下内容:


      一是常量在定义的时候,就需要对常量进行初始化。也就是说,必须要在常量声明时对其进行初始化。都跟局部变量或者成员变量不同。当在常量定义的 时候初始化过后,在应用程序中就无法再次对这个常量进行赋值。如果强行赋值的话,数据库会跳出错误信息,并拒绝接受这一个新的值。(接口中定义的常量的访问方法)


      二是final关键字使用的范围。这个final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。如数组就是一 个对象引用。为此可以使用final关键字来定义一个常量的数组。这就是Java语言中一个很大的特色。一旦一个数组对象被final关键字设置为常量数 组之后,它只能够恒定的指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组(有序数组的插入方法可使用的二分查找算法)中的值。


      三是需要注意常量的命名规则。不同的语言,在定义变量或者常量的时候,都有自己一套编码规则。这主要是为了提高代码的共享程度与提高代码的易读 性。在Java语言中,定义常量的时候,也有自己的一套规则。如在给常量取名的时候,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采 用大写字符,主要是跟变量进行区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。但是,为了在编写代码时能够一目了然的判断变量与常量,最好 还是能够将常量设置为大写字符。另外,在常量中,往往通过下划线来分隔不同的字符。而不想对象名或者类名那样,通过首字符大写的方式来进行分隔。这些规则 虽然不是强制性的规则,但是为了提高代码友好性,方便开发团队中的其他成员阅读,这些规则还是需要遵守的。没有规矩,不成方圆。


      总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来进行连接多个单词。在定义final的数据不论是常量、对象引用还是数组,在主函数中都不可以改变。否则的话,会被编辑器拒绝并提示错误信息。


      二、Final关键字与static关键字同时使用。


      由于Javal是面向对象的语言,所以在定义常量的时候还有与其它编程语言不同的地方。如一段程序代码从编辑到最后执行,即使需要经过两个过程,分别为代码的装载与对象的建立。不同的过程对于常量的影响是不同的。现在假设有如下的代码:


      Private static Random rd1=new Random(); //实例化一个随机数生成对象。


      Private final int int1=rd1.nestInt(10); //生成随机数并赋值给常量int1


      Private static final int int2=rd1.nestInt(10); //生成随机数并赋值给常量int2


      这上面的语句的大致含义是,通过Java语言提供的随机数类对象,生成随机数。并把生成的随机数赋值给常量int1与int2。细心的读者会发 现,虽然同样是赋值语句,但是以上两个语句中有一个细小的差别,即在第二条语句中多了一个关键字static。关于关键字的用途,笔者在以前的文章中也有 谈到过。这个是一个静态的概念。即当利用这个关键字来修饰一个变量的时候,在创建对象之前就会为这个变量在内存中创建一个存储空间。以后创建对对象如果需 要用到这个静态变量,那么就会共享这一个变量的存储空间。也就是说,在创建对象的时候,如果用到这个变量,那么系统不会为其再分配一个存储空间,而只是将 这个内存存储空间的地址赋值给他。如此做的好处就是可以让多个对象采用相同的初始变量。当需要改变多个对象中变量值的时候,只需要改变一次即可。从这个特 性上来说,其跟常量的作用比较类似。不过其并不能够取代常量的作用。

    展开全文
  • Java定义常量的几种方法

    千次阅读 2019-05-02 14:52:43
    Class定义常量方法(推荐方法) //final修饰符 public final class Constants { //私有构造方法 private Constants() {} public static final int ConstantA = 100; public static final int ConstantB = 100...

     

    Class定义常量方法(推荐方法)

    //final修饰符
    public final class Constants {
        //私有构造方法
        private Constants() {}
    
        public static final int ConstantA = 100;
        public static final int ConstantB = 100;
        ......
    }
    

    采用“类.常量名”方法进行调用。需要私有化构造方法,避免创建该类的实例。同时不需让其他类继承该类。

    如果多处需要访问工具类中定义的常量,可以通过静态导入(static import)机制,避免用类名来修饰常量名。

    Interface定义常量方法

    public interface Constants {
        int ConstantA = 100;
        int ConstantB = 100;
        ......
    }
    

    在interface中声明的字段,虚拟机在编译时自动加上public static final修饰符。使用方法一般是“接口.常量名”。也可以通过实现该接口,直接访问常量名,即常量接口模式。

    常量接口:即接口中不包含任何方法,只包含静态的final域,每个域都导出一个常量。使用这些常量的类实现这个接口,以避免用类名来修饰常量名。

    常量接口模式是对接口的不良使用。具体参考如下:

    The constant interface pattern is a poor use of interfaces. That a class uses some constants internally is an implementation detail. Implementing a constant interface causes this implementation detail to leak into the class's exported API. It is of no consequence to the users of a class that the class implements a constant interface. In fact, it may even confuse them. Worse, it represents a commitment: if in a future release the class is modified so that it no longer needs to use the constants, it still must implement the interface to ensure binary compatibility. If a nonfinal class implements a constant interface, all of its subclasses will have their namespaces polluted by the constants in the interface.

    There are several constant interfaces in the java platform libraries, such as java.io.ObjectStreamConstants. These interfaces should be regarded as anomalies and should not be emulated.

    区别

    上述两种方法对比,interface中定义常量方法生成的class文件比第一种方法的class文件更小, 且代码更简洁, 效率更高.

    但是在java中会产生问题,主要是java的动态性,java中一些字段的引用可以在运行期动态进行。某些场景下,部分内容改变可只进行部分编译。具体例子参考文档Java Interface 是常量存放的最佳地点吗?

    该文推荐使用Class定义常量,但采用private修饰符,通过get方法获取常量。这种方案可以保证java的动态性。

    public class A{
        private static final String name = "bright";
        public static String getName(){
            return name;
        }

     以上摘自:https://www.cnblogs.com/wanqieddy/p/9051568.html

    Interface不是存放常量的最佳地点,因为当程序运行时,当你修改Interface里面的常量值时,Java不能够动态扫描到改变的值,所以程序必须重新编译才能获得预想效果。

    详细参考:https://www.ibm.com/developerworks/cn/java/l-java-interface/index.html

    展开全文
  • 如何在Java定义常量

    2019-12-04 11:50:30
    对于Java中的常量这一主题,似乎存在许多混淆。有些人使用整数或字符串来定义常量,而另一些人则使用枚举。. 我还遇到了在它们自己的接口中定义常量–其中使用常量的类必须实现接口。此策略通常称为接口常量设计...
  • 接口当中也可以定义“成员变量”,但是必须使用public static final 三个关键字进行修饰。 从效果上来看,这其实就是接口的【常量】 格式: public static final 数据类型 常量名称 = 数据值; 备注: 一旦使用final...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...
  • Java、类、方法、属性、常量的命名规则

    万次阅读 多人点赞 2016-10-08 16:47:31
    1:包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名。比如www.baidu.com 对于包名:每个字母都需要小写。比如:com.baidu.test;该包下的Test类的全名是...
  • 常量定义 1、【强制】 不允许任何魔法值 ( 即未经预先定义的常量 ) 直接出现在代码中。 反例: String key = "Id#taobao_" + tradeId; cache.put(key, value); // 缓存 get 时,由于在代码复制...
  • Java编程中如何定义全局常量

    万次阅读 2018-09-12 23:30:43
    Class定义常量方法(推荐方法) //final修饰符 public final class Constants { //私有构造方法 private Constants() {} public static final int ConstantA = 100; public static final int ConstantB = 100...
  • java项目中常量到底该怎么定义

    万次阅读 2016-10-13 17:46:33
    背景:由于最近要接手一个老的系统,在看代码逻辑的过程中,看到程序中有很多魔法数字,所以着手把系统中的常量单独提取出来,然后定义常量类中。本来这样就可以完工了,可是我有俩疑问: 1,为什么要将常亮提取...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,...JDK:Java Development Kit 的简称,java 开发工具,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...
  • java 编码规范 2常量定义

    千次阅读 2018-10-31 19:25:13
    【强制】不允许任何魔法值(即未经定义常量)直接出现在代码中。反例:String key = "Id#taobao_" + tradeId;   cache.put(key, value);   【强制】long 或者 Long 初始赋值时,使用大写的 L...
  • Java常量类的几种实现方式

    千次阅读 2020-11-27 17:52:05
    实现常量的三种方式接口常量直接在接口中定义常量接口中定义静态内部类常量类枚举类枚举类列举常量在类里面创建枚举类 接口常量 直接在接口中定义常量 public interface Constants { /** * 中心 */ public ...
  • 常量定义 1. 【强制】不允许任何魔法值 ( 即未经预先定义的常量 ) 直接出现在代码中。 反例: String key = " Id # taobao _" + tradeId; cache . put(key , value); 2. 【强制】 在 long 或者 Long ...
  • java项目中常量规范定义的思考

    千次阅读 2018-09-02 23:38:31
    最近在看老大在项目中写的代码,发现在系统常量定义上,与我之前在开发项目的定义有些不一样,引发了我对系统变量如何规范定义和每一种定义有什么优点?这两个问题的好奇。 为什么需要定义常量? 提取常量主要是...
  • Java名都有小写单词组成,类名首字母大写;... 由于Java面向对象的特性,每名Java开发人员都可以编写属于自己的Java Package,为了保障每个Java Package命名的唯一性,在最新的Java编程规范中,要求开发人员在...
  • java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上说法都有问题,笔者尝试着来区分...
  • 《Effective Java》第19条:接口只用于定义类型 当类实现接口时,接口就充当可以引用这个类的实例的类型(type)。因此,类实现了接口,就表明客户端可以对这个类的实例实施某些动作(接口中定义的方法)。为了任何...
  • 最近在看一本书 Java与模式,里面提了一句不建议使用常量接口,甚至举了个java源码的反例, 蛋疼的是没有说为什么? 查了网上一圈发现他们也是知道怎么做而不知道为什么这么做。 然后我只能找谷歌了,翻译后...
  • java常量池概念 详解及用途

    千次阅读 2015-06-03 12:44:13
     Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如: ...
  • 二、阿里java编码规范(一)常量定义常量定义1.【强制】不允许任何魔法值(即未经定义的常量)直接出现在代码中。反例:String key="Id#taobao_"+tradeId;cache.put(key,value);2.【强制】long或者L...
  • Java中声明常量为什么用static修饰

    千次阅读 2015-07-31 17:27:08
    在做Android开发的时候,只要查看一些Android源码,不难发现,其中,声明常量都是如下格式: ...之前是这么考虑问题的:定义一个类A,其中包含了用静态变量修饰的常量CONSTANT_A与直接用final修饰的常量CONSTANT_B pub
  • 1.题目 用Java编写一个小程序:要求从键盘输入圆的半径,求出圆的周长、面积。 2.源代码 import java.util.Scanner; public class Circle { ...//定義常量PI,注意3.14后的f System.out.prin...
  • Java常量池(静态常量池与运行时常量池)

    万次阅读 多人点赞 2018-03-02 11:12:50
    Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。 1)所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分...
  • JAVA四种引用常量

    千次阅读 2014-05-04 09:33:51
    java.lang.ref里还提供了ReferenceQueue。如果在创建SoftReference对象的时候,使用了一个ReferenceQueue对象作为参数提供给SoftReference的构造方法,如: ReferenceQueue  queue  =  new ...
  • Java常量池理解与总结

    万次阅读 2018-03-13 13:28:56
    Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着是用于存放...
  • Java内存管理以及常量

    千次阅读 2018-02-24 19:12:27
    Java内存管理以及常量Java的内存管理就是对象的分配和释放问题。在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾回收器(Garbage Collection,GC)完成的,程序员不需要通过调用函数来释放内存,但它...
  • 史上最全面Java面试汇总(面试题+答案)

    万次阅读 多人点赞 2018-07-06 14:09:25
    JAVA面试精选【Java基础第一部分】 JAVA面试精选【Java基础第二部分】 JAVA面试精选【Java基础第三部分】 JAVA面试精选【Java算法与编程一】 JAVA面试精选【Java算法与编程二】 Java高级工程师—面试(1) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 219,926
精华内容 87,970
关键字:

java常量定义包名

java 订阅