Java基础语法 - 面向对象 - static 关键字
使用static关键字修饰的变量、常量和方法分别被称作静态变量、静态常量和静态方法,也被称作类的静态成员
静态变量
使用static修饰过的类变量称为静态变量
该变量需要使用类名.变量名进行调用,不能使用对象名/this进行调用
在类方法中不能定义与静态变量同名的局部变量
package mingri.chapter_6;
public class Pool {
public static int water = 0; // 定义一个静态变量
public void outlet() {
// String water = ""; // 在类方法中,不能定义与静态变量同名的变量名
if (water >= 2) { // 在类方法中不能使用 this.water 进行调用,只能使用变量名进行调用
water -= 2;
} else {
water = 0;
}
}
public void inlet() {
water += 3;
}
public static void main(String[] args) {
Pool pool = new Pool();
System.out.println("水池的水量:" + Pool.water); // 只能通过类名.静态变量名进行访问
pool.inlet();
pool.inlet();
System.out.println("水池的水量:" + Pool.water);
System.out.println("水池放水一次");
pool.outlet();
System.out.println("水池的水量:" + Pool.water);
}
}
静态方法
静态方法与静态变量类似,使用类名.静态方法名即可调用
package mingri.chapter_6;
public class Pool2 {
// 定义静态变量
public static int water = 0;
// 定义静态方法
public static void outlet() {
if (water > 2) {
water -= 2;
} else {
water = 0;
}
}
// 定义静态方法
public static void inlet() {
water += 3;
}
public static void main(String[] args) {
System.out.println("水池的水量:" + Pool2.water); // 调用静态变量
System.out.println("水池注水两次。");
Pool2.inlet(); // 调用静态方法
Pool2.inlet();
System.out.println("水池的水量:" + Pool2.water); // 调用静态变量
System.out.println("水池放水一次。");
Pool2.outlet(); // 调用静态方法
System.out.println("水池的水量:" + Pool2.water); // 调用静态变量
}
}
静态代码块
在类的成员方法之外,用static修饰代码区域可以称之为静态代码块。定义一块静态代码块,可以完成类的初始化操作,在类声明时就会运行
语法如下:
package mingri.chapter_6;
public class StaticTest {
// 静态代码块
static {
System.out.println("静态代码块");
}
public static void main(String[] args) {
StaticTest st;
System.out.println("main主方法");
}
}
代码块的执行顺序
package mingri.chapter_6;
public class StaticTest {
static String name;
// 静态代码块
static {
System.out.println(name + "静态代码块");
}
public StaticTest(String str){
name = str;
System.out.println(name + "构造方法");
}
public void method() {
System.out.println(name + "成员方法");
}
public static void main(String[] args) {
StaticTest s1; // 声明变量的时候就已经运行静态代码块了
StaticTest s2 = new StaticTest("s2");
StaticTest s3 = new StaticTest("s3");
s3.method();
System.out.println("main主方法");
}
}
/*
* 输出结果
null静态代码块
s2构造方法
s3构造方法
s3成员方法
main主方法
* */
Java基础语法 - 面向对象 - static 关键字的更多相关文章
- Java基础语法 - 面向对象 - this 关键字
在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法. this关键字引用的就是本类的一个对象,在局部变量或方法参数覆盖了成员变量时,就要添加 ...
- java基础学习总结——static关键字
一.static关键字
- Java基础——final、static关键字
final关键字是最终的意思,可以修饰成员方法.成员变量.类 特点: 1.修饰方法:表示该方法是最终方法,不能被重写 2.修饰变量:表示变量是常量,不能再次被赋值 3.修饰类:表示类是最终类,不能被继 ...
- Java基础语法 - 面向对象 - 类的主方法main方法
主方法是类的入口点,它指定了程序从何处开始,提供对程序流向的控制.Java编译器通过主方法来执行程序. 主方法的语法如下: /* a.主方法是静态的,如果要直接在主方法中调用其它方法,则该方法必须也是 ...
- Java基础语法 - 面向对象 - 局部变量
如果在一个成员方法内定义一个变量,那么这个变量就被称为局部变量. 局部变量在方法执行时被创建,在方法执行结束时被销毁.局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误 package m ...
- Java基础语法:static修饰符
一.静态变量 描述: 在类中,使用'static'修饰的成员变量,就是静态变量,反之为非静态变量. 区别: 静态变量属于类的,可以使用类名来访问:非静态变量是属于对象的,必须使用对象来访问. 静态变量 ...
- Java基础语法(11)-面向对象之关键字
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
- Java基础语法(9)-面向对象之类的成员
title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...
- Java基础语法(10)-面向对象之三大特征
title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...
随机推荐
- C# DateTime 时间格式
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.ToString(& ...
- Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向 1. 一个伟大的事业必然是过程导向为主 1 1.1. 过程的执行情况(有明确的执行手册及标准) ...
- 绝不能错过的10款最新OpenStack网络运维 & 监控工具
摘要 今天我们要推荐给大家的是关于奥斯汀OpenStack Summit的OpenStack网络方面功能与工具相关的技术演讲. 希望可以帮助国内的开发者.架构师和用户更好地了解OpenStack在SD ...
- tp框架事务处理
当我们需要同时对多个表进行操作的时候就有必要进行事务处理,首先你的数据库和数据表必须满足事务处理,即表引擎为InnoDB 下面为一个demo //事务:表必须是innodb //删除主表$mod ...
- C预编译宏
/* ============================================================================ Name : c_test001.c A ...
- shell script 在if 的判断条件正则表达式=~中引号问题
今天在脚本里运行if判断的时候,总是进不了对应的分支,检查正则表达式也没有错误.单独拿到shell里面执行还是显示没有匹配.比较奇怪,就搜了下,才发现是在=~ 后面的正则表达式上不能加上引号,而且以点 ...
- nodejs对文件进行分页
//从文件中提取文件指从x行到y行的内容 //awk -v start=5 -v end=10 -F "\x01" '{if(NR>=start && NR& ...
- poj3565 Ants km算法求最小权完美匹配,浮点权值
/** 题目:poj3565 Ants km算法求最小权完美匹配,浮点权值. 链接:http://poj.org/problem?id=3565 题意:给定n个白点的二维坐标,n个黑点的二维坐标. 求 ...
- Flow construction SGU - 176 有源汇有上下界最小流 二分法和回流法
/** 题目:Flow construction SGU - 176 链接:https://vjudge.net/problem/SGU-176 题意: 有源汇有上下界的最小流. 给定n个点,m个管道 ...
- Java 中 byte 类型初始化问题
很早的时候由于工作需要,接触过一点 Java,于是有了这个坑,今天回头看到自己在 Stackoverflow 上提的问题发现了它,于是再记录下. 在使用中,需要将 byte 类型的的每一位都置 1.我 ...