菜鸟提问,关于static ?

Black_Dress 2010-05-06 10:43:21
看了书中关于static的讲解和网上的一些资料,还是不太理解static的具体用法,到底什么时候该用它,在实际的编程应用中,什么样的情况下需要使用到static,恩,大概就是这个意思,不知各位有没理解我的问题,哪位大侠给我解答一下啊
...全文
205 25 打赏 收藏 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Black_Dress 2010-05-31
  • 打赏
  • 举报
回复
非常感谢大家啊,我现在已经明白了,很久没来空间,今天来一看有这么多朋友都热心的回复了我的帖子,看了大家的回复解释的都很好,真的挺高兴的,可惜分值不够分配了,没给分的朋友在这说声不好意思了,总之非常的感谢大家!!
ZHXDD 2010-05-08
  • 打赏
  • 举报
回复
static 定义的是常驻内存的,当然是在一些最常用,用的最多的定义成static型的。定义成static是为了提升代码运行效率,但是是以内存空间为代价的。
hjjk123 2010-05-07
  • 打赏
  • 举报
回复
如果用Google,搜到的你还看不懂

只能说明 你搜的不够 思考的不够
macrotea-cn 2010-05-07
  • 打赏
  • 举报
回复
很有意思的图片展示
ThinkCat 2010-05-07
  • 打赏
  • 举报
回复
1、在类中的话,可以不用实例化就直接调用;
2、static方法是前期绑定(另一个是final),其余的方法都是后期绑定(动态绑定)的;
学Java学得也不是很系统,还有挺多没看完,想到哪说到哪了。以下是TIJ上的话:
“static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际正是static方法的主要用途。”
codes23457789 2010-05-07
  • 打赏
  • 举报
回复
这个问题等你学到一定的时候自然会懂!
zhangsanja 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chenhuaike 的回复:]
static的成员变量、成员方法不依赖类,只是依附而已,不用初始化就可以调用;
static语句块,类一运行首先执行,且不论类初始化几次,static语句块只在第一次初始化的时候起作用;
[/Quote]

类属性是要在类加载以后才可以调用的。类属性和类行为可以使用类和对象来调用,对象属性和对象行为只被对象自身所拥有。

上述所说:static语句块,类一运行首先执行。其实只是声明类(如:类 引用变量 = null;)是不会调用静态代码块的。

具体类的加载了哪些类,以及他们是什么顺序加载的,你可以使用 java -verbose 类名 来查看。
zhangsanja 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bigking911 的回复:]
引用 4 楼 crazylaa 的回复:

static成员变量:你希望你的整个程序只有一个值就可以用
static方法:一些工具类常用。省去每次使用new class的麻烦。还有就是单例,工厂之类的会提供static的getInstance方法。

非常到位.
[/Quote]

实际上,属于类的东西也是属于对象的,也就是说类属性和类行为可以被类和对象所调用,而对象属性和对象行为只被对象自身所拥有。试图用类来调用对象的属性和方法是不允许的,因为类加载的时候对象还不存在,况且更不知道当前对象方法里的this到底是谁。


zhangsanja 2010-05-07
  • 打赏
  • 举报
回复
你定义类属性[静态属性]和对象属性,都要按照自己现实的业务来出发,脱离的实际应用的开发是没有任何意义的。
BigKing911 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crazylaa 的回复:]

static成员变量:你希望你的整个程序只有一个值就可以用
static方法:一些工具类常用。省去每次使用new class的麻烦。还有就是单例,工厂之类的会提供static的getInstance方法。
[/Quote]
非常到位.
zhangsanja 2010-05-07
  • 打赏
  • 举报
回复
static在面向过程思想里叫静态,在面向对象的思想里边叫类。


看上边这个例子,张三李四王五吃饭的时候,每人一碗米饭,大伙一起吃三个菜。如果张三上来在别人还没动筷子的时候自己就吃了半个水煮鱼,吃了自己半碗米饭。
你分析一下:
张三的米饭少了吗?张三的菜少了吗?
李四的米饭少了吗?李四的菜少了吗?
王五的米饭少了吗?王五的菜少了吗?

从而得知,菜属于类属性,而米饭属于对象属性。

人类{
static 类型1 菜;//类属性
类型2 米饭;//对象属性
}


chenhuaike 2010-05-07
  • 打赏
  • 举报
回复
static的成员变量、成员方法不依赖类,只是依附而已,不用初始化就可以调用;
static语句块,类一运行首先执行,且不论类初始化几次,static语句块只在第一次初始化的时候起作用;
kobe_gino 2010-05-07
  • 打赏
  • 举报
回复
static 可以计数用啊。

单例设计模式中好像要用到。
zhangsanja 2010-05-07
  • 打赏
  • 举报
回复
面向对象的问题一直困扰着大家,因为面向过程的语言普及在前,而面向过程的程序中static叫静态,但是面向对象的程序中static叫类。类属性 类方法 对象属性 对象方法,应该这样叫。【以上仅代表我巨和观点】
zhangsanja 2010-05-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 elmnd 的回复:]
我是来看图片的
[/Quote]

那我再多发点图片,呵呵
ldhscxl 2010-05-07
  • 打赏
  • 举报
回复
Static 变量是存储在数据段的,看视频教程说的,并且这个类的每一个对象都共用这个静态变量,可以用来记录各个类共同的状态
elmnd 2010-05-07
  • 打赏
  • 举报
回复
我是来看图片的
lacus87 2010-05-07
  • 打赏
  • 举报
回复
static关键字:
1、定义类级别的属性,所有该类的对象共享同样的一个属性(可以修改),类文件被加载的时候,该元素就会被初始化
2、定义静态代码块,这个代码块在类被加载的时候就会执行
3、定义方法,父类方法不会被子类去覆盖
和final不同的是,被final修饰的方法,子类无法写同名同参的方法
被static修饰的方法,子类可以写同名同参的方法,但是不会覆盖父类方法
javaANDcobol 2010-05-07
  • 打赏
  • 举报
回复
1.用static申明的变量或者对象都会在内存中去创建一个static域 每次程序执行到这里时就先到static域中去查找相应的变量或者对象,如果没有就到栈(存放变量)或者堆(存放对象)里面去找。

2.static还可以用作数据库的连接,相当于一个单例 如下
static{
//数据库的连接
}

在类的对象还没有进行初始化时就已经连了数据库(自动调用static块中的方法) 希望对你的理解有所帮助!别忘记给分哦!呵呵!
spring_hackcr 2010-05-07
  • 打赏
  • 举报
回复
在类中用 static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static 成员变量只有一份
加载更多回复(5)

62,620

社区成员

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

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