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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王维波 黑马帝   /  2011-10-25 16:31  /  3428 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

直接和你说用来干什么的吧:
1、修饰变量:
类的所有对象共同拥有的一个属性,也称为类变量。这类似于C语言中的全局变量。类变量在类加载的时候初始化,而且只被初始化一次。在程序中任何对象对静态变量做修改,其他对象看到的是修改后的值。因此类变量可以用作计数器。另外,Java Static变量可以用类名直接访问,而不必需要对象。
2、修饰方法:
类的所有对象共同拥有的一个功能,称为静态方法。静态方法也可以用类名直接访问,而不必需要对象。所以在静态方法里不能直接访问非静态变量和非静态方法,在Static方法里不能出现this或者super等关键字。
3、修饰Java代码块:
用static去修饰类里面的一个独立的代码块,称为静态代码块。静态代码块在类第一次被加载的时候执行,而且只执行一次。静态代码块没有名字,因此不能显式调用,而只有在类加载的时候由虚拟机来调用。它主要用来完成一些初始化操作。
4、说说类加载:
JVM在第一次使用一个类时,会到classpath所指定的路径里去找这个类所对应的字节码文件, 并读进JVM保存起来,这个过程称之为类加载。

点评

犀利  发表于 2011-10-27 00:31

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
[ 为什么要引入static?


     什么时候用static?

      static的优势

    static的内部机制:

该贴已经同步到 保持常态0616的微博

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
杨强 + 2 很给力!
宁超 + 1 加油。

查看全部评分

10 个回复

倒序浏览
董浩 黑马帝 2011-10-25 16:57:50
藤椅
如果一个成员被static声明,它就能够在她得类的任何对象创建之前被访问,而不必引用任何对象。就是可以直接被类名调用。可以将变量和方法都声明成static。main()方法便是最常见的static的例子。
被static 修饰的变量或方法 优先于对象存在;被所有对象共享;并且随着类的加载而加载。
所以静态的声明周期最长。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 很给力!

查看全部评分

回复 使用道具 举报
static的作用可大了  静态导入 调用方法直接省略类名   静态方法 可以类名直接调用 好处大大的

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 好处大大的哈。

查看全部评分

回复 使用道具 举报
      我认为static  静态的,从字面理解,可以理解为静止的,也就是说创建类的同时就创建了该成员变量。这样更节省资源,不用每次调用类函数,与方法的时候创建一个类对象。

*************************
*      这是百度的相关资料       *   
*************************
为什么要引入static
  函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一个全局的变量,但定义为一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅受此函数控制)。

什么时候用static
  需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。

static的内部机制
  静态数据成员要在程序一开始运行时就必须存在。因为函数在程序运行中被调用,所以静态数据成员不能在任何函数内分配空间和初始化。   这样,它的空间分配有三个可能的地方,一是作为类的外部接口的头文件,那里有类声明;二是类定义的内部实现,那里有类的成员函数定义;三是应用程序的main()函数前的全局数据声明和定义处。   静态数据成员要实际地分配空间,故不能在类的声明中定义(只能声明数据成员)。类声明只声明一个类的“尺寸和规格”,并不进行实际的内存分配,所以在类声明中写成定义是错误的。它也不能在头文件中类声明的外部定义,因为那会造成在多个使用该类的源文件中,对其重复定义。   static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间,静态   数据成员按定义出现的先后顺序依次初始化,注意静态成员嵌套时,要保证所嵌套的成员已经初始化了。消除时的顺序是初始化的反顺序。

static的优势
  可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

评分

参与人数 2技术分 +2 收起 理由
杨玉揆 + 1 赞一个!
宁超 + 1 谢谢分享。

查看全部评分

回复 使用道具 举报
董浩 发表于 2011-10-25 16:57
如果一个成员被static声明,它就能够在她得类的任何对象创建之前被访问,而不必引用任何对象。就是可以直接 ...

Thangks:handshake
回复 使用道具 举报
王维波 黑马帝 2011-10-25 20:46:20
7#
Simple 发表于 2011-10-25 17:20
我认为static  静态的,从字面理解,可以理解为静止的,也就是说创建类的同时就创建了该成员变量。这 ...

Thanks :handshake
回复 使用道具 举报
王维波 黑马帝 2011-10-25 20:47:00
8#
陆华山 发表于 2011-10-25 16:58
static的作用可大了  静态导入 调用方法直接省略类名   静态方法 可以类名直接调用 好处大大的 ...

Thanks :handshake
回复 使用道具 举报
李建雄 黑马帝 2011-10-26 21:13:19
9#
我也试者回答一下,然后再看别人的解答:

节约内存,因为,用static修饰的类,方法,变量只加载一次
                            方便调用:方法,变量,可以真接用类名调用

   
回复 使用道具 举报
黄健 黑马帝 2011-10-26 23:26:32
10#
有static变量、方法、代码块
其中static代码块会在类一加载时就执行,且只执行一次,有一种设计模式(单例模式)就是用static来完成的。
static变量:当需要所有的对象都拥有共同的变量值时,用static来修饰,如中国人类(Chinese)中有一个变量country,因为所有中国人的country都是中国,所以写为 static String country="中国",当创建Chinese对象时,所有Chinese对象共同拥有这一个country变量,并不是每一个Chinese对象中都保存一个独立的country变量。
static方法:根据jdk的使用规则来看,一般只要是工具类,都会使用static方法,用起来省事,不用创建对象,节省资源。
回复 使用道具 举报
杨强 黑马帝 2011-10-27 00:30:27
11#
研究研究
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马