您的位置:首页 > 编程语言 > Java开发

java 基础static关键字

2015-06-14 22:50 387 查看
当我们写方法或者声明变量的时候,有什么就会用到static关键字,但是static什么意思呢?代表什么呢?

1.static首先是静态的意思,当它修饰方法或者变量的时候,就表示这个方法或者变量就是静态的,

(1)静态的方法和变量是属于类的而不是对象的,换句话说,静态方法和变量可以直接用类名"点"出来,如果不是静态方法就得先new一个对象再调用其方法或者变量。

(2)静态方法只能访问静态成员,而实例方法中可以访问静态成员和实例成员

(3)静态方法中不能用this关键字,应为与实例有关

2.static还可以修饰代码块,

(1)静态代码块不写在方法里,可以写在类中的任意位置,

(2)jvm在加载类时会首先执行静态的代码块,且只执行一次,如果有多个,按照从上往下执行

(3)静态代码块里的变量都是局部变量,只在当前静态代码块里有效

(4)静态代码块里只能访问类的静态成员,而不能访问实例成员

下面看用static修饰方法的例子:

首先我先写一个简单的方法类,里面的方法和变量用static修饰

package com.fys.dao;

public class MethodClass {

/*
* 声明一个静态变量a,并赋值。
* */
public static int a = 1;

/*
* 写一个静态方法add,里面就写一个输出语句
*
*/

public static void add(){
System.out.println("执行了‘static’修饰的add方法");
}

}然后写一个测试类:
package com.fys.dao;

public class TestClass {

/**
* @author fanfanfys
*/
public static void main(String[] args) {
/*
* 调用MethodClass类中a变量
* */
System.out.println("MethodClass类中a变量对的值为:" + MethodClass.a);

/*
* 调用MethodClass类中add方法
* */
MethodClass.add();
}

}下面请看执行结果:



例子2:静态代码块

这个例子就是上面的测试类,只不过我在main方法上方写了一个静态代码块

package com.fys.dao;

public class TestClass {

/**
* @author fanfanfys
*/
/*
* 写一个静态代码块
* */
static{

System.out.println("先执行了静态代码块");
}

public static void main(String[] args) {
/*
* 调用MethodClass类中a变量
* */
System.out.println("MethodClass类中a变量对的值为:" + MethodClass.a);

/*
* 调用MethodClass类中add方法
* */
MethodClass.add();
}

}
大家都知道,main也是静态的,但不是代码块,所以还是先执行的静态代码块,请看执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: