转载地址:http://snkcxy.iteye.com/blog/1828950
概述:
- 修饰方法和成员变量,一旦修饰被修饰,就属类所有,可以通过类直接调用。
- 静态代码块:主要功能是做一些初始化工作。
- 代码块可以给变量赋初始值,但是千万不要把变量定义在代码块中。
- 代码块不能接受参数,所以它初始化的应当是公共的相同的信息,每个类或每个对象都是一样的信息。
- 静态成员(field、方法、代码块)不能访问非静态的成员,因为在他们运行的时候 非静态成员还不存在。
- package com.cxyapi.oo;
- /** static关键字演示
- * @author cxy @ www.cxyapi.com
- */
- public class StaticTest
- {
- public static void main(String[] args)
- {
- //静态成员变量 测试
- System.out.println(StaticTestObject.welcome);
- System.out.println("----------------------");
- //静态方法 测试
- StaticTestObject.test();
- System.out.println("----------------------");
- new StaticTestObject().test1();
- System.out.println("----------------------");
- new StaticTestObject().test1();
- System.out.println("----------------------");
- /*
- * 执行上面方法会获得很多信息:
- * 1.有static修饰的代码块,在类被使用的时候,首先执行,并且只执行一次
- * 2.没有static修饰的代码块,在类实例化的时候会被调用,并且每次实例化都会被调用一次
- * 3.代码块的执行总是先于构造方法
- */
- }
- }
- class StaticTestObject
- {
- static
- {
- System.out.println("初始化代码块~");
- }
- {
- System.out.println("一个代码块");
- }
- //静态成员变量 属于类
- public static String welcome="www.cxyapi.com";
- public StaticTestObject()
- {
- System.out.println("构造函数");
- }
- public static void test(){ System.out.println("静态的test方法"); }
- public void test1(){ System.out.println("test1方法"); }
- }
package com.cxyapi.oo;
/** static关键字演示
* @author cxy @ www.cxyapi.com
*/
public class StaticTest
{
public static void main(String[] args)
{
//静态成员变量 测试
System.out.println(StaticTestObject.welcome);
System.out.println("----------------------");
//静态方法 测试
StaticTestObject.test();
System.out.println("----------------------");
new StaticTestObject().test1();
System.out.println("----------------------");
new StaticTestObject().test1();
System.out.println("----------------------");
/*
* 执行上面方法会获得很多信息:
* 1.有static修饰的代码块,在类被使用的时候,首先执行,并且只执行一次
* 2.没有static修饰的代码块,在类实例化的时候会被调用,并且每次实例化都会被调用一次
* 3.代码块的执行总是先于构造方法
*/
}
}
class StaticTestObject
{
static
{
System.out.println("初始化代码块~");
}
{
System.out.println("一个代码块");
}
//静态成员变量 属于类
public static String welcome="www.cxyapi.com";
public StaticTestObject()
{
System.out.println("构造函数");
}
public static void test(){ System.out.println("静态的test方法"); }
public void test1(){ System.out.println("test1方法"); }
}
结果图: