`
阅读更多

下面用Test类为例讲解static的使用方法:

class Test{
	public static int a =1;
	
	public final static int b;
	static {
		b = 200;
		System.out.println("这是静态代码块");
	}
	public static void print(){
		//这是错误的,静态方法中不能有this和super等关键字
//		this.a = 20;
		System.out.println("这里测试static方法print和static变量a,a=="+a);
	}
	
	//这是错误的,static不能跟abstract合用
//	static abstract testAbstract();
	
	void testLocalVariable(){
		//这是错误的,static不能修饰局部变量
//		static int a=0;
	}
	
	//这是错误的,static不能修饰构造方法
//	static Test(){
//		//构造方法
//	}
	
	void testThis(){
		this.a = 10;
		System.out.println("这里测试this.a=="+this.a);
	}
}

class ChildTest extends Test{
	public static void childPrint(){
		//这是错误的,静态方法中不能有this和super等关键字
//		super.print();
	}
	
	//static对字类继承、覆盖和重载父类方法没有影响
	public static void print(){
		
	}
}

 

 

第一,static修饰的方法或变量,都是属于类的,是全局的方法和变量,在类的实例之间共享。调用形式是"类名.方法(参数)"和"类名.变量名".例如:

public class StaticTest {
	public static void main(String[] args) {
		//通过“类名.变量名”访问全局的类变量
		System.out.println("这里测试static变量=="+Test.a);
		
		//通过"类名.方法名(参数)"访问全局的方法
		Test.print();
		
		Test test = new Test();
		//也可以,通过“对象.变量名”访问全局的类变量
		test.a = 10;
		//也可以,通过"对象.方法名(参数)"访问全局的方法
		test.print();
	}
}

第二,static不能与abstract连用

第三,static不能修饰局部变量

第四,static不能修饰构造方法

第五,static和final合用,表示静态常量,不能改变其值。可以在声明时赋值,也可以在静态代码块中赋值。之后该变量的值不能在改变。

第六,static修饰代码块,使其成为静态代码块。静态代码块之在JVM加载类的时运行一次,之后再也不会运行。

第七,static修饰内部类,使其成为静态内部类。静态内部类与内部类的不同在于创建实例的形式不同。

public class StaticTest {
	public static void main(String[] args) {
		
		//创建静态内部类实例
		//使用“包名.外部类名.内部类名  实例名 = new 包名.外部类名.内部类名(构造方法参数)”的形式创建
		Test.Person person = new Test.Person();
		person.name = "张三";
		person.print();
		
		//创建内部类实例
		Test test = new Test();
		//使用“包名.外部类名.内部类名  实例名 = 外部类实例名.new  内部类名(构造方法参数)”的形式创建
		Test.People people = test.new People();
	}
}

class Test{
	
	//静态内部类
	static class Person {
		public String name;
		public void setName(String name){
			this.name = name;
		}
		void print(){
			System.out.println("name=="+name);
		}
	}
	
	//内部类
	class People{
		
	}
}

 

3
3
分享到:
评论
3 楼 forestqqqq 2013-07-04  
chenzenghua 写道
还差一个静态内部类吧?

谢了,是差一个静态内部类
2 楼 chenzenghua 2013-07-04  
还差一个静态内部类吧?
1 楼 hailongshih 2013-07-04  
难得lz把static的用法都归纳在一起,赞一个
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java中static关键字用法总结[借鉴].pdf

    Java中static关键字用法总结[借鉴].pdf

    static关键字详解

    static关键字详解: 内容摘要: 一、static关键字定义属性 二、static属性与非static属性还有一个最大的区别,所有的非static属性必须产生实例化对象之后...五、static关键字(主方法) 适合新手快速学会static关键字。

    C++ static关键字的原理及用法详解

    本文详细介绍了static关键字在C++中的作用和原理,并通过充分的代码示例进行了说明,帮助读者深入理解并正确使用static关键字。 `static`关键字在C++中的使用确实涉及到多个方面,包括局部变量的存储期、全局变量和...

    static关键字的所有用法

    实践最重要,所以我的是理论加实例绝对好理解。。

    Java零基础-static关键字.md

    内容概要: 本文介绍了Java中的static关键字的用法和作用。读者将学习静态成员变量和静态方法的定义和使用方式,并了解它们与实例成员变量和实例方法的区别。此外,还将探讨静态代码块和静态内部类的概念及其使用...

    Java下static关键字用法详解

    Static关键字可以修饰什么?  从以下测试可以看出, static 可以修饰:  1. 语句块  2. 成员变量(但是不能修饰局部变量)  3. 方法  4. 接口(内部接口)  5. 类(只能修饰在类中的类, 即静态内部类)  6. ...

    static 关键字的用法

    static 关键字的用法以及特征 很不错的 可以学习一下

    java视频 static关键字

    讲述java中static的关键字的作用

    static关键字简介

    在课堂中 已经简要介绍了 static 关键字的使用 我们知道 static 关键字可以用来修饰 类的成员变量 成员方法或者是代码块 下面我们就来说说这个 static 关键字 有时候程序员可能需要定义一个类成员 对它的使用不依赖...

    java之static关键字用法实例解析

    主要介绍了java之static关键字用法实例解析,包括了static关键字的原理讲解及用法分析,并附带了实例说明,需要的朋友可以参考下

    C++中static关键字总结

    你知道静态变量吗?你知道static的用法吗?你知道使用static时的注意事项吗?不知道不要紧,请阅读这篇文档

    C++中的static关键字.doc

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。

    Java static关键字详细介绍与用法总结

    主要介绍了Java中static关键字的作用和用法详细介绍,主要讲了静态方法、静态变量、静态类、static和final一块用等内容。需要的朋友可以参考下

    C++的static关键字.doc

    C++的static关键字.doc 搞不清c++的static关键字的用法的可以看看

    浅析java 的 static 关键字用法

    主要介绍了浅析java 的 static 关键字用法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析

    主要介绍了PHP变量作用域(全局变量&局部变量)&global&static关键字用法,结合实例形式分析了PHP全局变量与局部变量的作用域,以及global、static关键字功能与使用技巧,需要的朋友可以参考下

    C++ static关键字详细应用指南

    在这里我们就为大家详细介绍一下C++ static关键字的使用方法,让大家进一步对这一语言有一个深入的解读。

    java中static关键字用法详解

    主要为大家详细介绍了java中static关键字的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java中final关键字和static关键字详细用法

    根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。

Global site tag (gtag.js) - Google Analytics