问一个简单的语法

时间:2021-02-24 11:20:25
private static final String ASC02_END_FLG_ERR = "-1";

private final String ASC02_END_FLG_ERR = "-1";
在Class之间到底有什么不同呢?

8 个解决方案

#1


你在静态的方法中使用ASC02_END_FLG_ERR 的参数时只能private static final String ASC02_END_FLG_ERR = "-1";定义,而private final String ASC02_END_FLG_ERR = "-1"; 定义是不能在静态发法中调用的,其他的好像就没啥关系了

#2


你问的静态属性和非静态属性的区别。
类在调用静态属性的时候会自动加载类,所以类不需要实例化就可以直接调用。
非静态必须实例化类以后才可以调用。
静态属性一般是public的,你定义成private有什么意义吗?

#3


我也是看别人的代码
感觉没有必要定成静态的
但是java不是很精通,所以不敢确定

#4


一个是静态的,一个是非静态的,了解一下static吧

#5


引用 3 楼 yudi010 的回复:
我也是看别人的代码
感觉没有必要定成静态的
但是java不是很精通,所以不敢确定


不是没有必要定义成静态的,而是强烈建议将类所有的final属性都定义成static的。既然是常量,要多份还有什么意义呢,定义成static的,在普通方法和静态方法都可以调用,而且所有对象调用的都是同一个。既然都不能更改,要多份同样的备份毫无意义。

#6


这2个区别就是static ,那么你在使用static的时候,其他的类可以直接调用这个方法,而没有static则不能调用。

#7


引用 5 楼 rumlee 的回复:
引用 3 楼 yudi010 的回复:
 我也是看别人的代码
 感觉没有必要定成静态的
 但是java不是很精通,所以不敢确定


 不是没有必要定义成静态的,而是强烈建议将类所有的final属性都定义成static的。既然是常量,要多份还有什么意义呢,定义成static的,在普通方法和静态方法都可以调用,而且所有对象调用的都是同一个。既然都不能更改,要多份同样的备份毫无意义。


问题是static要消耗跟多的内存空间吧
既然是内部类调用,而且类里面的方法也不是静态方法,那么,使用非静态的常量是不是比使用静态的变量省内存而且还能够达到同样的目的呢?
这就是我想知道问题所在

#8


前者是类常量,后者是类变量,其本质区别就是static属性在类装载时就可以使用了,而类变量必须得通过new运算符实例化出来才能使用,其实就是static有无的问题,所有包含static关键字的类、属性、方法在未调用时就已经装配好了、在任何地方都是可见的

#1


你在静态的方法中使用ASC02_END_FLG_ERR 的参数时只能private static final String ASC02_END_FLG_ERR = "-1";定义,而private final String ASC02_END_FLG_ERR = "-1"; 定义是不能在静态发法中调用的,其他的好像就没啥关系了

#2


你问的静态属性和非静态属性的区别。
类在调用静态属性的时候会自动加载类,所以类不需要实例化就可以直接调用。
非静态必须实例化类以后才可以调用。
静态属性一般是public的,你定义成private有什么意义吗?

#3


我也是看别人的代码
感觉没有必要定成静态的
但是java不是很精通,所以不敢确定

#4


一个是静态的,一个是非静态的,了解一下static吧

#5


引用 3 楼 yudi010 的回复:
我也是看别人的代码
感觉没有必要定成静态的
但是java不是很精通,所以不敢确定


不是没有必要定义成静态的,而是强烈建议将类所有的final属性都定义成static的。既然是常量,要多份还有什么意义呢,定义成static的,在普通方法和静态方法都可以调用,而且所有对象调用的都是同一个。既然都不能更改,要多份同样的备份毫无意义。

#6


这2个区别就是static ,那么你在使用static的时候,其他的类可以直接调用这个方法,而没有static则不能调用。

#7


引用 5 楼 rumlee 的回复:
引用 3 楼 yudi010 的回复:
 我也是看别人的代码
 感觉没有必要定成静态的
 但是java不是很精通,所以不敢确定


 不是没有必要定义成静态的,而是强烈建议将类所有的final属性都定义成static的。既然是常量,要多份还有什么意义呢,定义成static的,在普通方法和静态方法都可以调用,而且所有对象调用的都是同一个。既然都不能更改,要多份同样的备份毫无意义。


问题是static要消耗跟多的内存空间吧
既然是内部类调用,而且类里面的方法也不是静态方法,那么,使用非静态的常量是不是比使用静态的变量省内存而且还能够达到同样的目的呢?
这就是我想知道问题所在

#8


前者是类常量,后者是类变量,其本质区别就是static属性在类装载时就可以使用了,而类变量必须得通过new运算符实例化出来才能使用,其实就是static有无的问题,所有包含static关键字的类、属性、方法在未调用时就已经装配好了、在任何地方都是可见的