黑马程序员技术交流社区

标题: static指的是静态,什么情况下使用static。 [打印本页]

作者: winelx    时间: 2015-4-27 22:18
标题: static指的是静态,什么情况下使用static。
static指的是静态,但是有什么用呢?
作者: li514620797    时间: 2015-4-27 22:29
      1、static 可以修饰成员变量和成员方法
           2、被static修饰的成员有一个最大的特点,就是可以被该类下所有的对象共享
多个对象共享某一数据的时候,我们就把这个数据用static修饰
作者: Ray丶少年    时间: 2015-4-28 07:41
静态分两种:
1、静态变量:
当该变量存放的数据是对象共享数据时,可以将该变量定义成静态的。
2、静态方法:
当该方法中没有访问到对象特有的数据时,可以将该方法定义成静态的。
作者: 树小森    时间: 2015-4-28 09:10
static关键字:
        (1)是一个修饰符只能修饰成员变量或成员函数,静态修饰内容被对象所共享。
        (2)当成员被静态修饰后,除了可以被对象调用外,还可以被类名调用。
        (3)特点:随着类的加载而加载;优先于对象存在;被所有对象所共享;可以直接被类名所调用。
        (4)注意:
                a、静态方法只能访问静态成员;非静态方法既可以访问静态也可访问非静态;
                b、静态方法中不可以定义this、super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this;
                c、主函数是静态的。
        (5)利弊:
                a、利是对对象的共享数据进行单独空间的存储,节省空间,没必要每个对象都存储一份;
                b、弊是生命周期过长,访问出现局限性(静态只能访问静态)。
        (6)使用:
                a、静态变量(类变量):当对象中出现共享数据时,该数据被静态所修饰;对象中的特有数据要定义成非静态存于堆内存中。
                b、静态函数:当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

静态代码块:
        (1)格式:static{静态代码块中的执行语句}
        (2)特点:随着类的加载而执行,只执行一次。
        (3)用于给类进行初始化。
作者: 13699266500    时间: 2015-4-28 09:18
好多对象要共享同一个函数时就需要使用静态了
作者: dengxing    时间: 2015-4-28 09:43
树小森 发表于 2015-4-28 09:10
static关键字:
        (1)是一个修饰符只能修饰成员变量或成员函数,静态修饰内容被对象所共享。
        (2)当成员被静 ...

厉害!!
作者: 谷歌    时间: 2015-4-28 09:49
树小森 发表于 2015-4-28 09:10
static关键字:
        (1)是一个修饰符只能修饰成员变量或成员函数,静态修饰内容被对象所共享。
        (2)当成员被静 ...

很全面!
作者: 大西洋    时间: 2015-4-28 10:02
static 通常用来修饰类的成员变量和方法,在同一个类的方法中,可以直接输入 类名.  来访问并赋值。
作者: 814326663    时间: 2015-4-28 10:18
嘿嘿  Static 用于静态 可以被本类中所有的成员共享
作者: ywen_chan    时间: 2015-4-28 10:41
什么时候定义静态成员呢?或者说:定义成员时,到底需不需要被静态修饰呢?
成员分两种:
1,成员变量。(数据共享时静态化)
该成员变量的数据是否是所有对象都一样:
如果是,那么该变量需要被静态修饰,因为是共享的数据。
如果不是,那么就说这是对象的特有数据,要存储到对象中。
2,成员函数。(方法中没有调用特有数据时就定义成静态)
        如果判断成员函数是否需要被静态修饰呢?
        只要参考,该函数内是否访问了对象中的特有数据:
        如果有访问特有数据,那方法不能被静态修饰。
        如果没有访问过特有数据,那么这个方法需要被静态修饰。

成员变量和静态变量的区别:
1,成员变量所属于对象。所以也称为实例变量。
静态变量所属于类。所以也称为类变量。
2,成员变量存在于堆内存中。
静态变量存在于方法区中。
3,成员变量随着对象创建而存在。随着对象被回收而消失。
静态变量随着类的加载而存在。随着类的消失而消失。
4,成员变量只能被对象所调用 。
静态变量可以被对象调用,也可以被类名调用。
所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。

静态的注意:静态的生命周期很长。
静态代码块:就是一个有静态关键字标示的一个代码块区域。定义在类中。
作用:可以完成类的初始化。静态代码块随着类的加载而执行,而且只执行一次(new 多个对象就只执行一次)。如果和主函数在同一类中,优先于主函数执行。

Public:访问权限最大。
static:不需要对象,直接类名即可。
void:主函数没有返回值。
Main:主函数特定的名称。
(String[] args):主函数的参数,是一个字符串数组类型的参数,jvm调用main方法时,传递的实际参数是 new String[0]。

作者: richaled    时间: 2015-4-28 10:51
树小森 发表于 2015-4-28 09:10
static关键字:
        (1)是一个修饰符只能修饰成员变量或成员函数,静态修饰内容被对象所共享。
        (2)当成员被静 ...

很全面~~
作者: hgr3306    时间: 2015-4-28 11:49
树小森 发表于 2015-4-28 09:10
static关键字:
        (1)是一个修饰符只能修饰成员变量或成员函数,静态修饰内容被对象所共享。
        (2)当成员被静 ...

佩服!{:3_46:}
作者: 陈明佳    时间: 2015-4-28 12:26
当多个数据共享同一个对象的时候
作者: ReadCode    时间: 2015-4-28 12:50
我感觉数据要是需要被共享出去,那么静态就是一个很好的解决方法,当然这个也并不是说通用,有时候还要考虑安全的问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2