A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

构造方法时,什么时候用static,什么时候不用

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

7 个回复

倒序浏览
有static时是不用创建对象就可以用
回复 使用道具 举报
午夜b'Boy 来自手机 中级黑马 2014-2-25 18:58:02
藤椅
单例模式,创建一个静态对象,由getinstance()返回
回复 使用道具 举报
本帖最后由 kkopopo 于 2014-2-25 19:57 编辑

楼主我的错,没看清题意
你问的是构造方法时,即定义方法时
我答的是构造方法!
回复 使用道具 举报
由stattic修饰的变量、常量和方法被称为静态变量、静态常量和静态方法。

处理问题时会需要两个类在同一个内存区域共享一个数据,为了解决这个问题,可以将这个数据设置为静态的。

被声明为static的变量、常量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其它类使用类名和“.”运算符调用静态成员:类名. 静态成员。尽管这种方式调用静态成员比较方便,但是静态成员同样遵循public、protected、default和private修饰符的约束。

static特点:

1>.随着类的加载而加载。会随着类的消失而消失,它的声明周期很长;

2>.优先于对象存在:静态先存在,对象后存在;

3>.被所有的对象所共享

4>.可以直接被类名所调用。

实例变量和类变量的区别:

a.存放位置:

类变量随着类的加载而存在于方法区中;实例变量随着对象的建立而存在于堆内存中

b.生命周期

类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失二消失;

在java中静态使用注意事项:

1>.在静态方法中不可以定义this、super关键字,因为静态优先于对象存在;

2>在静态方法中不可以直接调用非静态方法。静态方法只能访问静态成员;非静态方法既可以访问静态,也可以访问飞静态;

静态函数的利弊:

利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存一份,可以直接被类名调用

弊处:生命周期过长。(静态虽好,只能访问静态)

4.静态代码块

格式:

static

{

        静态代码块中的执行语句。

}

特点:随着类的加载而加载,只执行一次,并优于主函数,用于给类进行初始化;

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
自由自在2014 发表于 2014-2-25 18:53
有static时是不用创建对象就可以用

1楼给个例子!简单写一下!
回复 使用道具 举报
Maple 中级黑马 2014-2-25 19:15:17
7#
个人理解只要该成员方法不需要与非static的成员打交道,就可以使用static。换句话说,只要该方法的执行与对象本身的状态没有关系,就可以使用static.
通常,我们在定义一个工具类时,一般把它的方法定义成static的,因为这种类只用作工具,只关注他的行为,不关注他的状态,所以不需要定义成员变量。使用这种工具类的方法时无需创建对象,既简单又节省资源。创建对象来调用反而麻烦且浪费资源,所以这种类被设计出来后就干脆不允许创建对象,因为其构造方法被设计成private权限了。比如我们用的Math和Arrays,还有Collections。这三个类时我们java中最常见的三个工具类。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
kkopopo 发表于 2014-2-25 19:13
1楼给个例子!简单写一下!

比如 collections 中的许多方法前加static 我们不需要new 对象就可以直接用 比如用 它的sort方法  直接collections.sort()就可以直接用

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马