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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

加了static的成员和没加static的成员有什么区别?

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

评分

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

查看全部评分

7 个回复

倒序浏览
static是静态修饰符,被它修饰的东西(包括变量、方法、类)即为静态类型。一般来说,用static修饰的东西是再全局储存区分配的。这样它的生命周期就会一直保持到程序,这酒是为什么会被称为静态类型的原因。
而静态分配的,有两种情况:
1. 用在类里的属性、方法前面,这样的静态属性与方法不需要创建实例就能访问,  通过类名或对象名都能访问它,静态属性、方法只有“一份”:即如果一个类新建有N个  对象,这N 个对象只有同一个静态属性与方法;
2.  方法内部的静态变量:   方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在,   它不是在栈中分配的,是在静态区分析的, 这是与局部变量最大的区别;

评分

参与人数 2技术分 +1 黑马币 +10 收起 理由
宋天琪 + 1
xiaqingchao + 10 赞一个!

查看全部评分

回复 使用道具 举报
这是MSDN种的一段原话说明了static可以修饰的范围:static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。
回复 使用道具 举报
哦这样谢谢了
回复 使用道具 举报
简短的说:被static 修饰的成员可以 用类名来直接调用,没有被static修饰的要实例化后才能调用.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
王彦伟 来自手机 中级黑马 2012-12-10 19:41:33
地板
就是被static修饰的即为静态类型,否则即为非静态类型,satic可以修饰方法、类、变量

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
rla540 中级黑马 2012-12-12 00:45:47
7#
1 加static的数据成员在程序没有进入main以前就已经分配了内存空间,一般存储在全局存储区。static成员从程序开始执行,到程序结束都一直存在!所以static数据成员都可以被static方法和非static方法调用。static成员是被同类型对象所共享使用的。

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

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
  使用 static修饰符声明属于类型本身而不是属于特定对象的静态成员。static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。例如,下面的类声明为 static,并且只包含 static方法。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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