final和static final有何区别? 即使没有static,数据也是存储在静态存储区。加不加static有何区别呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 真假,我一直都以为final只是不能被改变,没想到还具有static的功能 大神,我是真心求教的啊。final是编译期常量,不是存在常量区吗? final 是不可变啊,static是静态啊。比如static String a = "aa";此时a可以改变,a="bb";但是你static final String a = "aa";你要是尝试a="bb";是不行的 楼上说了。final 是不可变啊, static修饰的变量是全局变量,在编译期就把内存分好了,可以被类里面的所有方法访问到。而final修饰的是一个常量,经常用final static 来修饰一个静态常量,则这个常量可以全局共享。final一旦修饰一个常量,则这个常量的值就不允许修改。final 不是编译常量,final static才是。 static修饰的变量是全局变量这话不对吧。static修饰的变量是类变量,可以直接用类名直接调用。而全局变量只要是定义在函数外的变量不应该都算是全局变量么?即便没有static修饰? 明白了,3楼说的对,但是我问的不是static和static final的区别,而是final和static final的区别。final 和static final的区别在于static表示这个常量只有一份。 对象还没构造的时候,final就已经被分好空间了,所以他是具有static属性的。在 java in think 中有提到这一点。 加上 static 的 final 常量可以理解为 静态常量 可以通过类名.属性名调用 并且所有实例化这个类的对象公用这一个常量 static意为“静态”,是和类相关的概念,即无论他所在的class被实例化了多少个,都只有一个,比如一个类A,里面有个比如static int i,就算你new A()多少次,i都只有一个,所以A.i,x.i,y.i都是同一个i(x,y为A的实例),并且即使所在class没有实例化,也可以通过class名访问,比如上面的A.i。而final可以理解为常量,一旦创建就不能改变的量。如果只有final,那么每次你创建一个实例,就会创建一个对应的变量,但只能是创建时初始化,创建完了你就改不了了。如果只有static,那么这个变量永远只有一个,但你还是可以改变他的值,根据这个就可以做计数器什么的,给每个实例分配编号之类的。如果是final static,说明你一旦创建就不能改变,并且只保留一个,根据这个特性所以很多公用常量可以这么写。 java高手进,如何判断从Oracle中取出的Blob字段的数据是图片格式的? 请问java怎么重载界面 请高手给我指点以下多线程的问题!这是我编写的一小程序,发现第一次运行的结果和第二次运行的结果不一样,为什么啊! 有BEA下载帐号的进 简单但有疑问的问题:overload是不是多态? 在jframe中怎样调用jsp页阿~~ 关于在Java应用程序中计划重复执行的任务 一个JAVA做的小程序 focuslost事件无法捕捉:( 急!请问北京哪里能买到SL275教材? 如何使用JFileChooser保存文件到硬盘 用Java处理数据量较大的文件
比如static String a = "aa";
此时a可以改变,a="bb";
但是你static final String a = "aa";
你要是尝试a="bb";是不行的
static修饰的变量是全局变量这话不对吧。static修饰的变量是类变量,可以直接用类名直接调用。而全局变量只要是定义在函数外的变量不应该都算是全局变量么?即便没有static修饰?
对象还没构造的时候,final就已经被分好空间了,所以他是具有static属性的。在 java in think 中有提到这一点。
如果只有final,那么每次你创建一个实例,就会创建一个对应的变量,但只能是创建时初始化,创建完了你就改不了了。
如果只有static,那么这个变量永远只有一个,但你还是可以改变他的值,根据这个就可以做计数器什么的,给每个实例分配编号之类的。
如果是final static,说明你一旦创建就不能改变,并且只保留一个,根据这个特性所以很多公用常量可以这么写。