修饰符-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 ...
随机推荐
- 第一周Python学习笔记
Python 基本语法: ① Python程序的格式:1.用代码高亮来标识函数丶语句等等 本身的代码高亮并没有实际的意义,只是用来辅助编程人员和阅读人员 更好的识别 2.程序以缩进来标识语句,缩进用 ...
- windows创建域共享文件
windows创建域共享文件 windows常见的文件系统: FAT FAT32 NTFS NTFS的特点: 可以对单个文件或文件夹设置权限 支持更大的磁盘容量 支持加密和压缩 活动目录需要NTFS ...
- Python学习日记(一):拜见小主——Python
近日学习Python,特将学习过程及一点心得记录于此. 由于之前做过一个Java爬虫的项目,虽然很长时间没有碰过爬虫,但是小郭同学有一颗不死的爬虫心,哈哈.最近在互联网上找一些电影的时候,有很多电影只 ...
- 在linux中访问macos 下的分区。
花钱的解决方案是找专业的: Paragon Software 他们家有各种套件,让你在window Linux 都能访问到苹果分区里面的内容. 但是Windows删除了它的驱动之后一开机就蓝屏. ...
- redis缓存类
<?php class Redis_model{ public $redis = null; public function __construct() { $hosts = $this-> ...
- WinServer配置MySQL主从同步
为什么要配置主从同步? 如果一台数据库服务器挂了,还有一个备用 为了方便配置,我采用两台WinServer2003虚拟机: 1.前期准备工作:安装好镜像文件,VMTOOLS,MySQL5.5 我这里以 ...
- Winows + VSCode + Debug PHP
一.环境 环境:Win10 二.软件 1.安装VSCode 下载地址:https://code.visualstudio.com/Download 2.PHP 代码包 版本:php-7.2.9-Win ...
- ionic4 混合移动开发 (前世今生)
ionic 从2016年初识,经历了 ionic2 ionic3.至今 ionic4,终于在2018年7月份发布了测试版. ionic Framework 可以说得上是最接近原生app的ui组件,漂亮 ...
- rabbitmq实现向各服务广播消息
广播fanout 主要是将一个消息,分发到绑定了它的队列上,而这些队列如消费者自己去建立和绑定! 对生产者是解耦的 生产者不需要关心消费者有多少,消费者如果需要这种消息,只需要把队列绑定到exchan ...
- Java 8中Stream API学习笔记
1)函数式编程的优势和劣势分别是什么?优势:①不可变性 ②并行操作 ③执行顺序更灵活 ④代码更加简洁纯粹的函数式编程,变量具有不可变性,同一个参数不会在不同场景下得出不同的结果,因此大大增强了系统的稳 ...