Java基础语法 - 面向对象 - static 关键字

使用static关键字修饰的变量、常量和方法分别被称作静态变量、静态常量和静态方法,也被称作类的静态成员

静态变量

使用static修饰过的类变量称为静态变量

该变量需要使用类名.变量名进行调用,不能使用对象名/this进行调用

在类方法中不能定义与静态变量同名的局部变量

 1 package mingri.chapter_6;
 2
 3 public class Pool {
 4
 5     public static int water = 0;    // 定义一个静态变量
 6
 7     public void outlet() {
 8         // String water = "";   // 在类方法中,不能定义与静态变量同名的变量名
 9         if (water >= 2) {       // 在类方法中不能使用 this.water 进行调用,只能使用变量名进行调用
10             water -= 2;
11         } else {
12             water = 0;
13         }
14     }
15
16     public void inlet() {
17         water += 3;
18     }
19
20     public static void main(String[] args) {
21         Pool pool = new Pool();
22         System.out.println("水池的水量:" + Pool.water);  // 只能通过类名.静态变量名进行访问
23
24         pool.inlet();
25         pool.inlet();
26
27         System.out.println("水池的水量:" + Pool.water);
28         System.out.println("水池放水一次");
29         pool.outlet();
30         System.out.println("水池的水量:" + Pool.water);
31     }
32 }

静态方法

静态方法与静态变量类似,使用类名.静态方法名即可调用

 1 package mingri.chapter_6;
 2
 3 public class Pool2 {
 4
 5     // 定义静态变量
 6     public static int water = 0;
 7
 8     // 定义静态方法
 9     public static void outlet() {
10         if (water > 2) {
11             water -= 2;
12         } else {
13             water = 0;
14         }
15     }
16
17     // 定义静态方法
18     public static void inlet() {
19         water += 3;
20     }
21
22     public static void main(String[] args) {
23         System.out.println("水池的水量:" + Pool2.water);     // 调用静态变量
24         System.out.println("水池注水两次。");
25
26         Pool2.inlet();      // 调用静态方法
27         Pool2.inlet();
28
29         System.out.println("水池的水量:" + Pool2.water);    // 调用静态变量
30         System.out.println("水池放水一次。");
31
32         Pool2.outlet();     // 调用静态方法
33
34         System.out.println("水池的水量:" + Pool2.water);     // 调用静态变量
35     }
36 }

静态代码块

在类的成员方法之外,用static修饰代码区域可以称之为静态代码块。定义一块静态代码块,可以完成类的初始化操作,在类声明时就会运行

语法如下:

 1 package mingri.chapter_6;
 2
 3 public class StaticTest {
 4
 5     // 静态代码块
 6     static {
 7         System.out.println("静态代码块");
 8     }
 9
10     public static void main(String[] args) {
11         StaticTest st;
12         System.out.println("main主方法");
13     }
14 }

代码块的执行顺序

 1 package mingri.chapter_6;
 2
 3 public class StaticTest {
 4
 5     static String name;
 6
 7     // 静态代码块
 8     static {
 9         System.out.println(name + "静态代码块");
10     }
11
12     public StaticTest(String str){
13         name = str;
14         System.out.println(name + "构造方法");
15
16     }
17
18     public void method() {
19         System.out.println(name + "成员方法");
20     }
21
22     public static void main(String[] args) {
23         StaticTest s1;      // 声明变量的时候就已经运行静态代码块了
24         StaticTest s2 = new StaticTest("s2");
25         StaticTest s3 = new StaticTest("s3");
26         s3.method();
27         System.out.println("main主方法");
28     }
29 }
30
31 /*
32 * 输出结果
33     null静态代码块
34     s2构造方法
35     s3构造方法
36     s3成员方法
37     main主方法
38 * */

原文地址:https://www.cnblogs.com/CongZhang/p/9956122.html

时间: 2024-08-07 10:18:49

Java基础语法 - 面向对象 - static 关键字的相关文章

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

在Java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法. this关键字引用的就是本类的一个对象,在局部变量或方法参数覆盖了成员变量时,就要添加this关键字明确引用的是类成员还是局部变量或方法参数. 1 package mingri.chapter_6; 2 3 public class BookTest { 4 public String name; 5 6 public void setName(String name) { 7 th

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

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——static关键字 一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态成员变量.对于static成员变量来说,这个成员变量只有一份,而且这一份是这个类所有的对象共享. 1.1.静态成员变量与非静态成员变量的区别 以下面的例子为例说明 1 package cn.galc.test; 2 3 public class Cat { 4 5

Java基础15-final、static关键字和Object类

一.final关键字 1.什么是final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变.final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. 2.final的特点 ①修饰类不可以被继承,但可以继承其他类 ②final修饰的

java基础---17. 静态static关键字

1 static关键字概述 2 静态static关键字修饰成员变量 2.1 定义一个学生类 public class Student { private String name; private int age; static String room; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { r

Java基础语法——面向对象(3)

第一章 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的"类".接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与实现分离,优化了程序设计.请记住:一切事物均有功能,即一切事物均有接口. 1.2 接口的定义 与定义类的class不同,接口定义时需要使用interface关键字.定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文

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

主方法是类的入口点,它指定了程序从何处开始,提供对程序流向的控制.Java编译器通过主方法来执行程序. 主方法的语法如下: 1 /* 2 a.主方法是静态的,如果要直接在主方法中调用其它方法,则该方法必须也是静态的. 3 b.主方法没有返回值 4 c.主方法的形参为数组.其中args[0] ~ args[n] 分别代表程序的第一个参数到第 n+1 个参数,可以使用args.length 获取参数的个数 5 */ 6 public static void main(String[] args) {

黑马程序员——Java基础语法(一) --- 关键字、标识符、注释、常量和变量、运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 本篇博文主要总结java的基础语法,主要的内容包括:关键字.标识符.注释.常量和变量.运算符几部分. 一.关键字 关键字是被Java语言赋予了特殊含义的单词.关键字中所有的字母都是小写. java中的关键字主要包括如下几部分: 1.用于定

Java基础语法(一)---关键字、常量、变量、运算符

Java基础语法(一)---关键字.常量.变量.运算符一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型: byte(1字节,最大值127) short(2字节,最大值为2^15-1) int(4字节,最大值为2^31-1) long(8字节,最大值为2^63-1) 浮点类型: float (单精度实数在内存中占32bit 有效数字为6~7位) double(双精度实数占内存单元为64bit 有效数字为15~1

Java基础和面向对象

Java基础和面向对象 一.数据类型和运算符 标识符 组成:字母.数字.下划线.$ 首字母:不能是数字 见名知义 不能是关键字(48个) 正确的:name.name123.age._name.$name 错误的:1name.public.123.na%me 标识符主要给一个元素起名字,需要符合起名字的以上4种规则.比如说,类的名字:首字母大写:变量名称:小写:方法名称:驼峰命名:数组名称.接口名称.集合名称. //你定义为汉字也可以,不过不推荐,因为国际语言以English为主.为了面向世界,使