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也是静态的,但不是代码块,所以还是先执行的静态代码块,请看执行结果:
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也是静态的,但不是代码块,所以还是先执行的静态代码块,请看执行结果:
相关文章推荐
- 在Servlet Filter中使用Spring容器
- Java之CyclicBarrier使用
- spring mvc messageConverters及406等问题
- java链表
- java线程和进程(运用多线程的小球碰撞游戏)
- Java 信号量 Semaphore 介绍
- java实现简单的窗体和密码验证(传参,事件机制和事件监听的作用过程)
- java图形界面基础之画图(使用Graphics类从画图形到图片到gif)
- java的数组队列和泛型
- java jtable mysql 练习与思考
- java的对象克隆技术clone()之浅度克隆(shallow Clone)
- java 框架基础知识(4)----XML基础知识-->Spring配置
- Struts2----带参数转发到JSP
- java学习笔记(六):关于iterator.next()
- Java基础之基础语法
- Java中的日志——Java.util.logging、log4j、commons-logging
- Java中的return语句使用总结
- 《Java程序设计》第二次作业:MySQL数据库及Java操作MySQL数据库
- MyBatis3整合Spring3、SpringMVC3
- Java程序设计基础项目总结报告