静态修饰
Posted gl0102
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态修饰相关的知识,希望对你有一定的参考价值。
package cn.gl.ObjectLearn; /** * 静态修饰符: * 由static修饰的变量、常量和方法被称作静态变量、静态常量和静态方法, 他们都存放在内存的“静态区”中, * 这些变量和方法有独立的生存周期。 * 内存中的静态区在整个程序运行结束之后才会释放,所以用静态修饰的代码的生命周期,是整个程序的生命周期。 * 静态区: * 内存中静态区的变量可以被本类共享,其他类调用本类静态变量和静态方法时,无需实例化就可以调用。 * 静态变量: * 同一个类的不同实例对象,共用同一静态变量,如果一个对象将其 更改,另一个对象的静态变量也会更改。 * 静态常量: * 用final static 修饰一个成员变量,这个成员变量就会变成一个静态常量。 * 静态方法: * 想使用类中的成员方法,需要先将类实例化,但不想或无法创建对象时,我们可以使用静态方法。 * 调用静态方法无需创建类的对象。 * 说明: * 其实我们一直用的System.out.println()方法就是一个典型的静态方法, * 我们没有创建System的对象,就实现了输出功能。类中的Main方法同样也是静态方法。 * 静态代码块: * 在类成员方法之外,用static修饰代码区域就是静态代码块。 * 定义一块静态代码块,可以完成初始化操作,在类申明时就会运行。 * @author 冷夜雨花未眠 E-mail:787831425@qq.com * @version 创建时间:2019年11月9日 */ public class ObDemo6 { public static void main(String[] args) { Pool out =new Pool(); Pool in=new Pool(); System.out.println("水池中的水量"+Pool.water); System.out.println("向水池里注水两次"); in.inlet(); in.inlet(); System.out.println("水池中的水量"+Pool.water); out.outlet(); System.out.println("水池中的水量"+Pool.water); StaticVariable a=new StaticVariable(1,2); StaticVariable b=new StaticVariable(13,17); System.out.println("a.x的值是="+a.x); System.out.println("a.y的值是="+a.y); //StaticVariable b=new StaticVariable(13,17); System.out.println("b.x的值是="+b.x); System.out.println("b.y的值是="+b.y); Circular c=new Circular(3.0); Spherical s=new Spherical(3.0); //Graphical.PI=1.1; 报错静态常量不能被修改 StaticMethod.show();//没有创建类的对象,直接调用 StaticTest test=new StaticTest(); test.method();//如果注释这句话,就只会输出3句话 } } class Pool { static public int water = 0; public void outlet() { if (water >= 2) { water = water - 2; } else { water = 0; } } public void inlet() { water = water + 3; } } class StaticVariable{ static int x;//静态变量 int y; public StaticVariable(int x,int y){ this.y=y; this.x=x; } } class Graphical{//图形类 final static double PI=3.1415926;//静态常量尽量要大写 } class Circular{//圆类 double radius; double area; public Circular(double radius){ this.radius=radius; area=Graphical.PI*radius*radius; System.out.println("圆的半径="+radius); System.out.println("圆的面积="+area); } } class Spherical{//球类 double radius; double volume; public Spherical(double radius){ this.radius=radius; volume=4/3*Graphical.PI*radius*radius*radius; System.out.println("球的半径="+radius); System.out.println("球的体积="+volume); } } class StaticMethod{ static public void show(){ System.out.println("我是静态的方法"); } } class StaticTest{//测试代码执行顺序 public StaticTest(){ System.out.println("这里是构造方法"); } { System.out.println("这里是非静态代码块"); } public void method(){ System.out.println("这里是成员方法"); } static{ System.out.println("这里是静态代码块"); } }
输出结果:
水池中的水量0
向水池里注水两次
水池中的水量6
水池中的水量4
a.x的值是=13
a.y的值是=2
b.x的值是=13
b.y的值是=17
圆的半径=3.0
圆的面积=28.274333400000003
球的半径=3.0
球的体积=84.82300020000001
我是静态的方法
这里是静态代码块
这里是非静态代码块
这里是构造方法
这里是成员方法
以上是关于静态修饰的主要内容,如果未能解决你的问题,请参考以下文章
Java面向对象(OOP)--static修饰符(static变量static方法代码块和静态代码块创建和初始化对象的过程静态导入)