黑马程序员技术交流社区
标题:
构造方法时,什么时候用static,什么时候不用
[打印本页]
作者:
明天你好
时间:
2014-2-25 18:45
标题:
构造方法时,什么时候用static,什么时候不用
构造方法时,什么时候用static,什么时候不用
作者:
自由自在2014
时间:
2014-2-25 18:53
有static时是不用创建对象就可以用
作者:
午夜b'Boy
时间:
2014-2-25 18:58
单例模式,创建一个静态对象,由getinstance()返回
作者:
kkopopo
时间:
2014-2-25 19:11
本帖最后由 kkopopo 于 2014-2-25 19:57 编辑
楼主我的错,没看清题意
你问的是构造方法时,即定义方法时
我答的是构造方法!
作者:
影凡
时间:
2014-2-25 19:13
由stattic修饰的变量、常量和方法被称为静态变量、静态常量和静态方法。
处理问题时会需要两个类在同一个内存区域共享一个数据,为了解决这个问题,可以将这个数据设置为静态的。
被声明为static的变量、常量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其它类使用类名和“.”运算符调用静态成员:类名. 静态成员。尽管这种方式调用静态成员比较方便,但是静态成员同样遵循public、protected、default和private修饰符的约束。
static特点:
1>.随着类的加载而加载。会随着类的消失而消失,它的声明周期很长;
2>.优先于对象存在:静态先存在,对象后存在;
3>.被所有的对象所共享
4>.可以直接被类名所调用。
实例变量和类变量的区别:
a.存放位置:
类变量随着类的加载而存在于方法区中;实例变量随着对象的建立而存在于堆内存中
b.生命周期
类变量生命周期最长,随着类的消失而消失;实例变量生命周期随着对象的消失二消失;
在java中静态使用注意事项:
1>.在静态方法中不可以定义this、super关键字,因为静态优先于对象存在;
2>在静态方法中不可以直接调用非静态方法。静态方法只能访问静态成员;非静态方法既可以访问静态,也可以访问飞静态;
静态函数的利弊:
利处:对对象的共享数据进行单独空间的存储,节省空间。没有必要每个对象中都存一份,可以直接被类名调用
弊处:生命周期过长。(静态虽好,只能访问静态)
4.静态代码块
格式:
static
{
静态代码块中的执行语句。
}
特点:随着类的加载而加载,只执行一次,并优于主函数,用于给类进行初始化;
作者:
kkopopo
时间:
2014-2-25 19:13
自由自在2014 发表于 2014-2-25 18:53
有static时是不用创建对象就可以用
1楼给个例子!简单写一下!
作者:
Maple
时间:
2014-2-25 19:15
个人理解只要该成员方法不需要与非static的成员打交道,就可以使用static。换句话说,只要该方法的执行与对象本身的状态没有关系,就可以使用static.
通常,我们在定义一个工具类时,一般把它的方法定义成static的,因为这种类只用作工具,只关注他的行为,不关注他的状态,所以不需要定义成员变量。使用这种工具类的方法时无需创建对象,既简单又节省资源。创建对象来调用反而麻烦且浪费资源,所以这种类被设计出来后就干脆不允许创建对象,因为其构造方法被设计成private权限了。比如我们用的Math和Arrays,还有Collections。这三个类时我们java中最常见的三个工具类。
作者:
自由自在2014
时间:
2014-2-25 19:41
kkopopo 发表于 2014-2-25 19:13
1楼给个例子!简单写一下!
比如 collections 中的许多方法前加static 我们不需要new 对象就可以直接用 比如用 它的sort方法 直接collections.sort()就可以直接用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2