java中static关键字可用于修饰:

1.属性:表示该属性变量在类被加载时即被创建并初始化,类加载过程只进行一次,因此静态变量也只被创建一次

2.方法:静态方法为类的公有方法,可直接用‘类名.方法名'访问,静态方法不可访问本类中的非静态成员,子类不可

将父类的静态方法覆盖为非静态的,反之亦然。此外,静态方法中不能使用this关键字,也不能用super关键字去访问

父类静态方法,可直接用'父类.父类静态方法名'访问。

3.代码块:静态初始化代码块,在类被加载时执行一次,可用于类的初始化

具体实例:

1)下面的例子中,静态变量staticVar,只在类第一次加载时被创建并初始化,以后无论创建多少类对象,该变量都不再

加载,因此每次都在原有基础上增加1,而实例变量instanceVar,只有当创建类对象时才对其进行创建并在构造函数中

加1,每创建一个对象,就对应创建一个instanceVar实例变量。注意:在静态方法中访问instanceVar将报错。

2)UseStatic类中,类加载时初始化顺序为:静态变量-->静态代码块

 package com.pattywgm.a_fundamental;

 import org.junit.Test;

 /**
*
* @author patty
* @time 2014-12-4
* @todo 考查static关键字的用法
*/
public class StaticTest {
//默认为0 ,可不指定初始值
static int staticVar; //静态变量,在类初始化时加载,只加载一次
int instanceVar; //实例变量 public StaticTest() {
staticVar++;
instanceVar++;
System.out.println("staticVAr= "+staticVar+" instanceVar= "+instanceVar); } public void doSth(){
System.out.println("Do something...");
} public static void doSthStatic(){
// System.out.println(instanceVar); //不能对非静态字段 instanceVar 进行静态引用
System.out.println("Do something static...");
} @Test
public void testStatic(){
//单元测试会首先创建一个类的对象,然后再调用该测试方法
new StaticTest();
} public static void main(String[] args){
// StaticTest staticTest;
System.out.println(staticVar); //此时还未创建对象,staticVar值未增加,仍为0
//每创建一个StaticTest对象,staticVar值增加1,instanceVAr值由0加1
StaticTest staticTest1=new StaticTest(); //
StaticTest staticTest2=new StaticTest();
StaticTest staticTest3=new StaticTest();
System.out.println("instanceVar(whole) is:"+staticTest3.instanceVar);
int instanceVar=200; //局部变量优先
System.out.println("instanceVar(local) is:"+instanceVar);
System.out.println("staticVar(whole) is:"+staticVar);
int staticVar=500; //局部变量优先
System.out.println("staticVar(local) is:"+staticVar); }
} //end StaticTest
/**
*
* @author patty
* @time 2014-12-4
* @todo 考查static变量/方法/代码块
* 类加载时加载顺序为:静态变量,静态代码块,然后才调用静态方法
*/
class UseStatic{
public static int a=3;
static int b; static void method(int c){
System.out.println("C: "+c);
System.out.println("A: "+a);
System.out.println("B: "+b);
}
//代码块
static{
System.out.println("Static block...");
System.out.println("a= "+a+" b= "+b);// 3 0
b=a*5;
System.out.println("a= "+a+" b= "+b);// 3 15
} public static void main(String[] args){
method(24);
System.out.println(StaticTest.staticVar); //
}
}//end UseStatic class StaticDemo extends StaticTest{
static int sta;
int stb;
public StaticDemo() {
//super();
sta++;
stb++;
System.out.println("sta= "+sta+" stb= "+stb);
}
//此处不可将doSth声明为静态方法,即子类不能以static覆盖父类的非静态方法
public void doSth(){
super.doSth();
System.out.println("Sub do something");
}
//此处必须加上static修饰符,因为实例方法不能覆盖 StaticTest 中的静态方法
public static void doSthStatic(){
StaticTest.doSthStatic(); //静态方法不可用super关键字,用父类名直接访问
System.out.println("Sub do something static");
} public static void main(String[] args){
System.out.println("sta= "+sta);
new StaticDemo().doSth();
doSthStatic();
}
} ///:output:
/* StaticTEst
* testStatic
staticVAr= 1 instanceVar= 1
staticVAr= 2 instanceVar= 1
* main
0
staticVAr= 1 instanceVar= 1
staticVAr= 2 instanceVar= 1
staticVAr= 3 instanceVar= 1
instanceVar(whole) is:1
instanceVar(local) is:200
staticVar(whole) is:3
staticVar(local) is:500 *StaticDemo
sta= 0
staticVAr= 1 instanceVar= 1
sta= 1 stb= 1
Do something...
Sub do something
Do something static...
Sub do something static
*/
//:~~~

static关键字用法的更多相关文章

  1. ava下static关键字用法详解

    Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static ...

  2. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  3. 【C#基础】static 关键字用法小结

    静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用. 有时候,我们希望 ...

  4. 【转】Java中static关键字用法总结

    1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...

  5. 【java_需阅读】Java中static关键字用法总结

    1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...

  6. C++static关键字用法

    一.static的作用有三种:限制变量或函数作用域.保持变量内容的持久.默认初始化为0 1.被static关键字修饰的全局函数或者变量具有文件作用域,即只在当前文件中可见. 2.被static修饰的变 ...

  7. Java中static关键字用法总结

      1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · ...

  8. c语言中static关键字用法详解

    个人总结: 1.C不是面向对象的,在c中static修饰的变量或函数仅在当前文件中使用 2.C可以对局部变量使用static修饰(注意面向对象的java则不行),其放在全局区一直存在 概述static ...

  9. C语言:static关键字用法

    参考博客:https://blog.csdn.net/guotianqing/article/details/79828100 看个例子: #include <stdio.h> void ...

随机推荐

  1. There is already an open DataReader associated with this Command which must be closed first." exception in Entity Framework

    Fixing the "There is already an open DataReader associated with this Command which must be clos ...

  2. c#检测端口是否被占用

    当我们要创建一个Tcp/Ip Server connection ,我们需要一个范围在1000到65535之间的端口 . 但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被 ...

  3. 三、Spring——数据访问

    1.Spring 对 DAO的支持 Spring支持目前大多数常用的数据持久化技术,Spring定义了一套面向DAO层的异常体系,并未各种支持的持久化技术提供了异常转换器.这样,我们在设计DAO接口时 ...

  4. spring mvc 和 velocity整合

    java.lang.ClassNotFoundException: org.springframework.ui.velocity.VelocityEngineFactory 考虑是不是没有添加spr ...

  5. 【freemaker】之include,import区别

    新建三个模版文件 inc1.ftl,inc2.ftl,03.ftml <#--inc1--> <#assign username="老李1"> <#- ...

  6. MSSQL 获取汉字全拼 和 汉字首字母

    --获取全拼 DECLARE @str VARCHAR(max) SET @str= [dbo].[fn_Getquanpin]('中山') PRINT(@str) )) ) as begin ),) ...

  7. php操作文件及下载图片脚本

    <?php set_time_limit(0); $handle = fopen('article.txt','r'); for($i=0;$i<1;$i++) { $count = 0; ...

  8. 透明(颜色)渐变背景(颜色透明背景),兼容IE8

    filter: progid:DXImageTransform.Microsoft.gradient (GradientType=0, startColorstr=#00000000, endColo ...

  9. 关于C++中的类型转换

    C++中定义了四种类型转换操作符:static_cast.const_cast.dynamic_cast和reinterpret_cast. static_cast的用法类似于C语言中的强制类型转换, ...

  10. [IIS]在CMD中IIS的使用

    一.打开IIS管理器1,win+r,打开"运行" 2,输入 InetMgr,就打开了IIS管理器 二.IIS其他相关命令iisreset /RESTART 停止后启动 iisres ...