找回密码
 立即注册
搜索
查看: 719|回复: 9

请教在java程序里,static是什么意思? final又是什么意思?两者关系?

[复制链接]

16

主题

217

回帖

332

积分

中级会员

积分
332
发表于 2002-11-28 02:15:22 | 显示全部楼层 |阅读模式
请教在java程序里,static是什么意思? final又是什么意思?两者关系?

例如,public static final int A=100;

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2002-11-28 09:19:15 | 显示全部楼层
static是说这个方法或者变量是静态的,长驻内存的,可以直接访问,而不必实例化的(实例化就是new一个类,也就是在内存中开一个区域)。
final是指最终的意思,也就是这个方法或者变量是固定的,不再变动的,绝大多数用来修饰常量的。

2者没有联系,可以同时用,也可以单独使用一个,也可以2个都不用。
回复

使用道具 举报

16

主题

217

回帖

332

积分

中级会员

积分
332
 楼主| 发表于 2002-11-29 00:11:50 | 显示全部楼层
谢谢厨师指点:P
回复

使用道具 举报

3

主题

586

回帖

790

积分

高级会员

积分
790
发表于 2002-11-29 03:44:03 | 显示全部楼层
Thanks.
回复

使用道具 举报

16

主题

217

回帖

332

积分

中级会员

积分
332
 楼主| 发表于 2002-11-29 07:13:19 | 显示全部楼层
还是有点不懂,全程变量跟定义为static的变量有什么不同?
回复

使用道具 举报

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2002-11-29 09:22:14 | 显示全部楼层
最初由 Ken 发布
[B]还是有点不懂,全程变量跟定义为static的变量有什么不同? [/B]


java内没有全程变量这个概念,只有static变量这个概念
回复

使用道具 举报

16

主题

217

回帖

332

积分

中级会员

积分
332
 楼主| 发表于 2002-11-29 10:30:11 | 显示全部楼层
全程变量,我指的是global variable, java内没有这个概念吗?举个例子:

public class Tree {
    public Node root;
    public int ct;
   
    private int sum=0;

    public Tree() {
        ct=0;
        root=null;
    }
   
    public City find(String v){
        ...
    }
     
     ......
}

在这里, ct就是我说的global variable, 我可以把它定义为

public static int ct;

我觉得没什么不同,

而且何谓“静态“呢?
请不吝赐教,谢谢!!!
回复

使用道具 举报

327

主题

3264

回帖

3641

积分

荣誉版主

积分
3641
发表于 2002-11-29 12:51:33 | 显示全部楼层
实际学习工作中,遇到的问题,书中肯定是查不到的,那么大家一起来帮忙想想办法,而关于你所说的问题,我相信基本的java书中肯定都有描述,与其等待大家不一定正确的答案,还不如去找书看,去翻翻书吧。
回复

使用道具 举报

16

主题

217

回帖

332

积分

中级会员

积分
332
 楼主| 发表于 2002-11-30 01:27:03 | 显示全部楼层
对于厨师和一天的详尽解答表示万分感激,本人目前身处国外,而且半路出家学编程,身边只有英文的相关书籍,有些东西不太好理解(英语水平问题:)),幸亏有海浩提供了这块宝地,还有大家的热心帮忙,再一次表示感谢,不嫌弃的话,大家交个朋友吧。
回复

使用道具 举报

225

主题

1530

回帖

2367

积分

论坛元老

积分
2367
发表于 2002-11-30 16:49:41 | 显示全部楼层
java中对象放在动态的heap中,对象的reference(感觉就是指针)放在stack中,static可以不通过实例直接用class名调用,java中没有全局概念,但是可以通过访问控制符,如:public,protected,private控制,static好像还不能通过构造函数来初始化。。。final我的理解是因为java中在对对象的应用中是通过reference的副本进行应用的,这样可能会修改原始heap中的同一对象,对变量的操作中就没有这个现象了,,所以用final可以防止这一点。。。


呵呵~~关于final和static的关系,我举个例子:
//多运行几遍,观察i和j值差异,可看到不同之处
class Test{
   final int i =(int)(Math.random()*20);
   static final int j=(int)(Math.random()*20);
  
   public void prn(String id){
      System.out.println(
            id + ":" +"  i="+i +" , j= "+j);}

   public static void main(String [] args){

    Test test1=new Test ();
     test1.prn("TEST1");
     System.out.println("Creating a new TEST");
  
     Test  test2=new Test();
     test1.prn("TEST1");
     test2.prn("TEST2");
    }
}
   

  
呵呵~~~我也是新手,,大家相互交流~~~~;&
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-20 14:21 , Processed in 0.085333 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表