使用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 关键字的更多相关文章

  1. Java基础语法 - 面向对象 - this 关键字

    在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法. this关键字引用的就是本类的一个对象,在局部变量或方法参数覆盖了成员变量时,就要添加 ...

  2. java基础学习总结——static关键字

    一.static关键字

  3. Java基础——final、static关键字

    final关键字是最终的意思,可以修饰成员方法.成员变量.类 特点: 1.修饰方法:表示该方法是最终方法,不能被重写 2.修饰变量:表示变量是常量,不能再次被赋值 3.修饰类:表示类是最终类,不能被继 ...

  4. Java基础语法 - 面向对象 - 类的主方法main方法

    主方法是类的入口点,它指定了程序从何处开始,提供对程序流向的控制.Java编译器通过主方法来执行程序. 主方法的语法如下: /* a.主方法是静态的,如果要直接在主方法中调用其它方法,则该方法必须也是 ...

  5. Java基础语法 - 面向对象 - 局部变量

    如果在一个成员方法内定义一个变量,那么这个变量就被称为局部变量. 局部变量在方法执行时被创建,在方法执行结束时被销毁.局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误 package m ...

  6. Java基础语法:static修饰符

    一.静态变量 描述: 在类中,使用'static'修饰的成员变量,就是静态变量,反之为非静态变量. 区别: 静态变量属于类的,可以使用类名来访问:非静态变量是属于对象的,必须使用对象来访问. 静态变量 ...

  7. Java基础语法(11)-面向对象之关键字

    title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...

  8. Java基础语法(9)-面向对象之类的成员

    title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...

  9. Java基础语法(10)-面向对象之三大特征

    title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...

随机推荐

  1. Hyper-V 虚拟机无法上网的解决方法

    创建一个虚拟机网络交换机 2 创建一个 外部网络如下图所示: 3 添加一个旧版的网络适配器: 4 设置旧版网络适配器: END XP系统的情况 1 启动虚拟机,设置虚拟机IP: 2 输入http:// ...

  2. sqlite-按日期分组,根据日期查询详细内容

    一.按日期分组 String paramString = "select strftime('%Y-%m-%d',"+DBConfig.RUNNING_LOG_DATE+" ...

  3. AES_CBC_PKCS5Padding 加密

    在项目中需要对一些关键信息进行传输,但又不能是明文,所以采用此种方式进行加密,另一端再进行解密. AES: 算法 CBC: 模式 ​ 使用CBC模式,需要一个向量iv,可增加加密算法的强度 PKCS5 ...

  4. 清理iOS中的“其他”空间垃圾文件

    关于如何清理 iOS 里的"其他"空间的教程,网上搜索那是一大堆,不过都是对于2010年某坛某篇"技术文"的无数次简单复制粘帖,可行性已经被各路尝试者们踩到了地 ...

  5. pow函数

    pow函数如果直接强制类型转换成int,会导致精度的损失.如果是int的幂计算,建议重写函数.或者用double型进行计算.

  6. unix基础杂谈

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  7. Create a new Docker Machine with the Hyper-V driver

    docker-machine就是docker工具集中提供的用来管理容器化主机的工具,用来管理运行在不同环境的主机,包括:本地虚拟机,远程虚拟机,公有云中的虚拟机都可以通过一个命令统一进行管理. 01. ...

  8. linux 启动jar命令

    进入ECS目录jar 存放目录: 1.执行命令: linux:启动jar nohup java -jar qualityshop-api.jar>log.file 2>&1 &am ...

  9. 第一百四十二节,JavaScript,封装库--运动动画和透明度动画

    JavaScript,封装库--运动动画和透明度动画 /** yi_dong_tou_ming()方法,说明 * * yi_dong_tou_ming()方法,将一个元素,进行一下动画操作 * 1,x ...

  10. .NET中二进制图片的存储与读取

    判断HttpContext是否为空: string configPath = "img/defaultPhoto.png"; if (HttpContext.Current != ...