final变量与final常量的区别

alex2099 2008-04-19 04:36:00
final一般用于修饰常量 那加了final关键字的变量有代表这什么呢
static final 修饰常量又代表这什么意思呢
static final 常量中的static仅仅是指静态吗
希望高人指点
...全文
1036 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoqiao21 2008-04-27
  • 打赏
  • 举报
回复
楼主的意思是 空白final?
landyshouguo 2008-04-27
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 little06 的回复:]
final int a; //变量
a = 1; 只能进行一次赋值

final int a=1;直接指定
[/Quote]
DionyVulcan 2008-04-25
  • 打赏
  • 举报
回复
我回帖支持下,因为看前面回的挺有价值的。
CTBOK 2008-04-25
  • 打赏
  • 举报
回复
我也回帖支持下,大概懂了
不过是否真的十分懂,其实我觉得也不是,我自己的总结

1、JAVA中没有CONST,CONST只为保留字,但没用,所以:FINAL=CONST
2、FINAL了的东西不能被继承或在任何时候改变,只能赋值一次
3、STATIC为全局变量关健字,final static代表全局常量,普通的static就代表类里面自己的全局变量
4、FINAL常量在类初始化的时候才会占用内存,而static在程序一运行的时候就占用内存
5、假设以下代码

package com.bean;

public class finalstatic {
public final static String sthello = "hello world";
public static String sthi = "hi world";
public final String hello = "hello world";
public String hi = "hi world";

public finalstatic() {
//构造函数里面没东东
}
}


我们先试试直接赋值


com.bean.finalstatic.sthello = "hello world"; //出错
com.bean.finalstatic.sthi = "hi world"; //正常
com.bean.finalstatic.hello = "hello world"; //出错
com.bean.finalstatic.hi = "hi world"; //出错

第一句出划,因为有final不能赋值
第二句正确,因为有static的是全局变量,并且没有final可以直接赋值,不用创建对像实例
第三、四两句,是因为没有static修饰,只能是在finalstatic myfinalstatic = new finalstatic ()之后能能用myfinalstatic.hi或finalstatic.hello赋值

从上面的代码,应该可以看得出来final和static的区别,当然了,static既然可以不new对像实例就赋值,当然也可以取值了,例如:


System.out.print(com.bean.finalstatic.sthi);


gshywx 2008-04-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caoyinghui1986 的回复:]
引用 2 楼 TTOS3302041 的回复:
哥们,你理解错了,final加在变量前,变量就被定义为常量了,表示该变量的值使用时将不可被动态改变。
static则表示某个变量或常量为静态,保存在内存中

希望能对你有所帮助,如再有问题,欢迎给我邮件,乐意帮助同行解决问题,大家相互提高!
------------------------------------------------------
final一般用于修饰常量 那加了final关键字的变量有代表这什么呢
static f…
[/Quote]
huxinyu929 2008-04-24
  • 打赏
  • 举报
回复
这个不用程序员管。有垃圾回收
胡矣 2008-04-24
  • 打赏
  • 举报
回复
final 修饰的属性不可被改变.
所以被成为常量.
static 修饰的属性表示类属性,只和类相关。
kribo2008 2008-04-24
  • 打赏
  • 举报
回复
static 表示在内存中只有一份拷贝......
不懂编程 2008-04-24
  • 打赏
  • 举报
回复
只能学习了
kuria001 2008-04-24
  • 打赏
  • 举报
回复
都说完了......
heenyuan 2008-04-24
  • 打赏
  • 举报
回复
学习
fairyhawk 2008-04-24
  • 打赏
  • 举报
回复

final的用法:
final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
kekeemx 2008-04-24
  • 打赏
  • 举报
回复
都说完了......呵呵
cuijie_cn 2008-04-24
  • 打赏
  • 举报
回复
强人们都回答很全面了 :)
joejoe1991 2008-04-24
  • 打赏
  • 举报
回复
被final修饰的成员或者变量
在初始化以后,值就不能再改变!

aipb2008 2008-04-24
  • 打赏
  • 举报
回复
final 修饰表示的是 常量。但是这个常量的生命周期和他所在的类一起。

static final 修饰表示 静态常量,它还有个更容易理解的名字 : 全局常量

以为在java这样纯面向对象的语言中,什么都写在类里,所以没有像c里

const int i = 1;
int main(){
}
这样的写法,所以引入的static final恰好解决了这个问题,一个public static final修饰的常量,被所有对象共享。

…………………………………………
自己理解而已。
wyyl00 2008-04-23
  • 打赏
  • 举报
回复
final修饰的变量,初始化后就不可变
QUERY123123 2008-04-23
  • 打赏
  • 举报
回复
finally是代表总执行
final定义变量不可改变
定义类不能被实例化(定义抽象类不能被实现)
定义方法不能被重写
gshywx 2008-04-21
  • 打赏
  • 举报
回复
大家挑刺的好,不挑刺怎么学习呢?但是挑刺归挑刺,要态度端正,要一切围绕快乐学习为中心。。。。。。
machele 2008-04-21
  • 打赏
  • 举报
回复
study..
加载更多回复(39)

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧