修饰符-static
一、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的更多相关文章
- ArcGIS AddIN开发异常之--修饰符“static”对该项无效
修饰符“static”对该项无效, 修饰符“internal”对该项无效. 该异常弹出的位置为Config.Designer.CS文件中相关插件的声明附近 internal static string ...
- 访问修饰符与可选修饰符static的使用
在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用. 一.访问修饰符:这是Java里用来控制访问类及类的方法.变量的访问权限,从而达到只暴露接口,来隐藏内 ...
- 【语法】修饰符 static extern const
转载自:http://my.oschina.net/u/2560887/blog/552683 一.C语言中的static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有 ...
- JAVA中静态修饰符static的学习(初学)
静态修饰符static,用于修饰类中的成员变量和成员函数. 用static修饰的成员变量也可叫做类变量. 什么时候使用静态 什么时候定义静态成员变量? 当对象中出现共享数据时,将该数据定义为静 ...
- 修饰符static和abstract
修饰符static和abstract static static可以修饰类中的方法,属性等,被修饰后的方法和属性可以通过类名直接调用也可以通过对象调用.普通的变量只能通过对象进行调用. 静态方法直接可 ...
- java静态修饰符static的使用
class Person { private String name; private int age; /* * 假设每个Person对象的国籍都一样, * 那么每次调用都要赋值就会不合理. * 使 ...
- Java从入门到放弃——05.修饰符static,final,权限修饰符
本文目标 static final: 权限修饰符:public,private,protected,缺省 1.static 静态修饰符,被static修饰的变量或者方法会被加载进静态区内存,不需要创建 ...
- 三大修饰符static,final,abstract,接口和抽象类的区别
package com.cityhero.test; public class ThreeModifier { //static静态的 // 概念:static可以修饰方法和属性,被static修的方 ...
- objectiveC【语法】修饰符 static extern const
const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * c ...
随机推荐
- PXE安装windows系统,pxe-e55:ProxyDhcp service did not reply to request on port 4011
这个pxe-e55" 错误表示 pxe 客户端已向端口4011上的代理 dhcp 服务器发送请求, 但未收到答复.似乎只有在dhcp 服务器上设置了 dhcp 类标识符选项 #60, 但同一 ...
- SQLServer之删除用户自定义数据库用户
删除用户自定义数据库用户注意事项 不能从数据库中删除拥有安全对象的用户. 必须先删除或转移安全对象的所有权,才能删除拥有这些安全对象的数据库用户. 不能删除 guest 用户,但可在除 master ...
- July 10th, 2018. Tuesday, Week 28th
Winning isn't everything, but wanting it is. 胜利并不能代表一切,但求胜心可以. From Arnold Palmer. Compared to this ...
- equals方法和==的区别--用实例简单说明
首先我们创建一个类 public class People { private String name; private String address; public String getName() ...
- JS Bootstrap-DateRangePicker 如何设置默认值为空
DateRangePicker是一款时间范围选择器,界面良好,非常适合短时间范围选择的插件,具体源码可以在http://www.daterangepicker.com/找到 ,但是目前使用中,感觉功能 ...
- 基于Kubernetes 构建.NET Core 的技术体系
很多公司技术支持岗位的工作,如配置域名,部署环境,修改复位配置,服务重启,扩容缩容,梳理和完善监控,根据开发的需要查找日志等工作,需要和开发进行大量的沟通,如什么是外网域名,什么是内网域名.A nam ...
- 新更新kb4493472导致无法正常开机
昨天陆续接到电话,说是系统更新后电脑不能正常使用,症状基本是开机到欢迎界面就出现各种各样的状况,比如鼠标能动,其他无反应;欢迎界面结束后黑屏,只有鼠标能动:开机后正常,但电脑使用很卡等等状况.因为昨天 ...
- asp.net core导入excel
接昨天的导出 导入excel内容 对比昨天导出的内容增加了一行实体属性名称作为标题行,这样到转换为实体的时候才能找到对应的属性. 导入代码 public IActionResult InportExc ...
- Android开发:文本控件详解——TextView(一)基本属性
一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史
---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...