黑马程序员技术交流社区

标题: 加了static的成员和没加static的成员有什么区别? [打印本页]

作者: xiaqingchao    时间: 2012-11-27 16:57
标题: 加了static的成员和没加static的成员有什么区别?
加了static的成员和没加static的成员有什么区别?

static都能修饰什么?方法 变量?还有别的么?

作者: 黑马-张扬    时间: 2012-11-27 17:25
static是静态修饰符,被它修饰的东西(包括变量、方法、类)即为静态类型。一般来说,用static修饰的东西是再全局储存区分配的。这样它的生命周期就会一直保持到程序,这酒是为什么会被称为静态类型的原因。
而静态分配的,有两种情况:
1. 用在类里的属性、方法前面,这样的静态属性与方法不需要创建实例就能访问,  通过类名或对象名都能访问它,静态属性、方法只有“一份”:即如果一个类新建有N个  对象,这N 个对象只有同一个静态属性与方法;
2.  方法内部的静态变量:   方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在,   它不是在栈中分配的,是在静态区分析的, 这是与局部变量最大的区别;
作者: 黑马-张扬    时间: 2012-11-27 17:26
这是MSDN种的一段原话说明了static可以修饰的范围:static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。
作者: xiaqingchao    时间: 2012-11-27 17:26
哦这样谢谢了
作者: 杨占伟    时间: 2012-11-27 19:08
简短的说:被static 修饰的成员可以 用类名来直接调用,没有被static修饰的要实例化后才能调用.
作者: 王彦伟    时间: 2012-12-10 19:41
就是被static修饰的即为静态类型,否则即为非静态类型,satic可以修饰方法、类、变量
作者: rla540    时间: 2012-12-12 00:45
1 加static的数据成员在程序没有进入main以前就已经分配了内存空间,一般存储在全局存储区。static成员从程序开始执行,到程序结束都一直存在!所以static数据成员都可以被static方法和非static方法调用。static成员是被同类型对象所共享使用的。

2 非satatic数据成员,只有在new一个对象时才会在堆空间中为其分配空间,当这块空间没有任何引用指向它时,就会被垃圾回收,那么他的生命也就结束了!

作者: 985127948    时间: 2012-12-13 03:30
  使用 static修饰符声明属于类型本身而不是属于特定对象的静态成员。static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。例如,下面的类声明为 static,并且只包含 static方法。




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