一、static静态修饰符

static修饰符能够修饰属性,方法,初始代码块,不能修饰局部变量和类。

静态的变量叫常量,非静态的变量叫实例变量。

1、修饰属性

package gc.test.java.cs2;

public class Info{

    public static String NAME = "张三";
public String addr = "湖北武汉";
}
package gc.test.java.cs2;

public class Main {

    public static void main(String[] args) {
Info info1 = new Info();
System.out.println("name:" + info1.NAME);
System.out.println("addr:" + info1.addr); info1.NAME = "李四";
info1.addr = "北京"; Info info2 = new Info();
System.out.println("name:" + info2.NAME);
System.out.println("addr:" + info2.addr);
}
}

运行结果:

name:张三
addr:湖北武汉
name:李四
addr:湖北武汉

通过上面的运行结果可以看出,Info在第一次被实例化之后,修改Info中的静态变量NAME和变量addr,在第二次实例化之后,静态变量NAME被修改了,但是变量addr被初始化了。可以看出,静态变量是所有实例对象共享的,它属于类,不属于某个实例对象。

2、修饰方法

package gc.test.java.cs2;

public class Info{

    public static String NAME = "张三";
public String addr = "湖北武汉";
public String sex = "男"; public static void showName(){
System.out.println("我的名字叫" + NAME);
} public static void showAddr(){
System.out.println("我住在" + addr);//编译错误
} public void showSex(){
System.out.println("我是" + sex + "生");
}
}
package gc.test.java.cs2;

public class Main {

    public static void main(String[] args) {
Info.showName();
//Info.showSex();//编译错误
Info info = new Info();
info.showSex();
}
}

上面代码中出现第一处编译错误的地方,可以看出静态方法只能访问静态成员。

在第二处出现编译错误的地方,可以看出非静态方法只能通过实例化对象来调用,而静态方法可以直接通过类名.方法名来调用。

package gc.test.java.cs2;

public class Info{

    public static String NAME = "张三";
public String addr = "湖北武汉";
public String sex = "男"; public static void showName(){
String name = this.NAME;//编译错误
System.out.println("我的名字叫" + NAME);
} public void showSex(){
String name = this.NAME;
System.out.println("我是" + sex + "生");
}
}

上面代码中,一个静态方法和一个非静态方法中,同时使用了this关键字,在静态方法中出现编译错误。

package gc.test.java.cs2;

public class Info{

    public static void showName(){

    }

    public void showSex(){

    }

}
package gc.test.java.cs2;

public class Member extends Info{

    public static void showName(){

    }

    public  void showSex(){

    }
}

上面代码中是编译正常,如果将Member中的代码改为

package gc.test.java.cs2;

public class Member extends Info{

    public void showName(){//编译错误

    }

    public static void showSex(){//编译错误
  } 
}

可以看出,静态方法只能重写静态方法,非静态方法只能重写非静态方法。

3、修饰代码块

package gc.test.java.cs2;

public class Info{

    Info(){
System.out.println("Info的无参构造函数");
} static{
System.out.println("Info中的静态代码块");
}
}
package gc.test.java.cs2;

public class Main {

    public static void main(String[] args) {
Info info = new Info();
}
}

运行结果:

Info中的静态代码块
Info的无参构造函数

通过上面的结果,可以看出,静态代码块在实例化对象的时候就执行了,而且执行顺序是在无参构造函数之前。

修饰符-static的更多相关文章

  1. ArcGIS AddIN开发异常之--修饰符“static”对该项无效

    修饰符“static”对该项无效, 修饰符“internal”对该项无效. 该异常弹出的位置为Config.Designer.CS文件中相关插件的声明附近 internal static string ...

  2. 访问修饰符与可选修饰符static的使用

    在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用. 一.访问修饰符:这是Java里用来控制访问类及类的方法.变量的访问权限,从而达到只暴露接口,来隐藏内 ...

  3. 【语法】修饰符 static extern const

    转载自:http://my.oschina.net/u/2560887/blog/552683 一.C语言中的static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有 ...

  4. JAVA中静态修饰符static的学习(初学)

    静态修饰符static,用于修饰类中的成员变量和成员函数. 用static修饰的成员变量也可叫做类变量. 什么时候使用静态 什么时候定义静态成员变量?     当对象中出现共享数据时,将该数据定义为静 ...

  5. 修饰符static和abstract

    修饰符static和abstract static static可以修饰类中的方法,属性等,被修饰后的方法和属性可以通过类名直接调用也可以通过对象调用.普通的变量只能通过对象进行调用. 静态方法直接可 ...

  6. java静态修饰符static的使用

    class Person { private String name; private int age; /* * 假设每个Person对象的国籍都一样, * 那么每次调用都要赋值就会不合理. * 使 ...

  7. Java从入门到放弃——05.修饰符static,final,权限修饰符

    本文目标 static final: 权限修饰符:public,private,protected,缺省 1.static 静态修饰符,被static修饰的变量或者方法会被加载进静态区内存,不需要创建 ...

  8. 三大修饰符static,final,abstract,接口和抽象类的区别

    package com.cityhero.test; public class ThreeModifier { //static静态的 // 概念:static可以修饰方法和属性,被static修的方 ...

  9. objectiveC【语法】修饰符 static extern const

    const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...

随机推荐

  1. Windows Server 2016-客户端加域端口汇总

    简单对客户端加域端口做汇总操作,希望对大家有帮助. 之前有对服务端口做汇总,具体请参照:Windows Server 2016-Active Directory域服务端口汇总:http://blog. ...

  2. 如何取消-"插入耳机自动显示提示框"

    首先我们打开控制面板->1,你可以直接搜索控制面板打开  2,你可以右击我的电脑->点击属性->左上角打开控制面板

  3. 知名区块链人脸识别公司iFace Chain [爱妃链] 支招,如何防止钱包数字币被盗...

    最近众多钱包发行方跑路频发,让非常多的用户蒙受巨大经济损失,知名区块链人脸识别公司iFace Chain [爱妃链] 前日做客某区块链媒体为网友支招,如何防止钱包数字币被盗. 那么,用户怎么降低Tok ...

  4. C# 《编写高质量代码改善建议》整理&笔记 --(五)类型设计

    1.区分接口和抽象类的应用场合 区别: ①接口支持多继承,抽象类则不能. ②接口可以包含方法,属性,索引器,事件的签名,但不能有实现,抽象类则可以. ③接口在增加新方法后,所有的继承者都必须重构,否则 ...

  5. Hadoop伪分布式集群搭建

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 1.下载Hadoop压缩包 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop- ...

  6. 学习ASP.NET Core Razor 编程系列十七——分组

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. Linux 软硬链接的区别及目录权限对软硬链接的影响

    目录权限的影响 首先,构建实验环境如下图: 有 A.B 两个目录,A 目录下建有 test 文件,且文件中的内容为 "Hello".B 目录下分别创建 test 文件的硬链接 te ...

  8. 1分钟解决VS每次运行都显示“正在还原nuget程序包”问题

    VS一直停留在“正在还原nuget程序包” 在开发中,运行不同版本的vs会显示还原nuget程序包,还原需要不短的时间,并且不一定还原成功. 或者其他什么原因导致需要还原nuget程序包,这样很烦的有 ...

  9. dotnet core 微服务教程

    这个教程主要是对于第一次使用dotnet core开发的同学. 运行环境是在centos 7 , 使用了docker容器. 即这是一篇运行在linux的docker容器上的微服务的简单应用. 一. 安 ...

  10. 客户端浏览器- UWP兼容版本WebView

    WebView简介 在win10之前,浏览器控件有WPF版本webBrowser.Winform版本WebBrowser,浏览器内核为IE. win10之后,微软不再维护原有的WebBrowser,转 ...