首页 > 编程语言 >【Java基础】关键字:static

【Java基础】关键字:static

时间:2022-09-19 19:45:20浏览次数:64  
标签:Java Chinese countryName 关键字 static 修饰 total public

1.static说明

我们希望某些数据在内存空间中只有一份,比如Chinese类,每个对象都共享countryName这个变量,而不用在每个实例变量中单独放一个countryName的变量。那么就可以用static修饰,表示静态的。
(1)使用static可以修饰属性、方法、代码块、内部类
(2)相当于这些结构属于该类,可以直接通过类名.静态属性类名.静态方法调用(权限允许),随着类的加载而加载。
(3)优先于对象的创建,修饰的成员被所有对象所共享。

2.static使用

(1)static修饰属性
Chinese类

public class Chinese {
    String name;
    Integer age;
    static String countryName;
}

执行如下语句

public static void main(String[] args) {
        Chinese.countryName = "中国";

        Chinese c1 = new Chinese();
        c1.name = "张三";
        c1.age = 18;

        Chinese c2 = new Chinese();
        c2.name = "李四";
        c2.age = 30;

        c1.countryName = "CHN";
        c2.countryName = "CHINA";

        System.out.println(Chinese.countryName);//CHINA
    }

JVM内存解析,static修饰的结构存放在方法区中,countryName初始默认值为null,c1和c2对象修改的是同一个变量
image

(2)static修饰方法
① static方法内部只能访问static修饰的属性或方法。
② static方法中不能有this,也不能有super。
③ static修饰的方法不能被重写。

public class Person {
    private int id;
    private static int total = 0;

    public static int getTotalPerson(){
        id++;       //报错,static方法中不能调用非static结构
        return total;
    }

    public static void setTotalPerson(int total){
        this.total = total;  //报错,static方法中不能有this或super
    }

    public Person(){
        total++;
        id = total;
    }
}

可以直接通过Person.getTotalPerson()调用方法,不用创建对象。

标签:Java,Chinese,countryName,关键字,static,修饰,total,public
From: https://www.cnblogs.com/zhishu/p/16697274.html

相关文章

  • Java实现猜拳小游戏
    Java实现猜拳游戏的核心在于电脑随机数的生成,Java中的随机数生成方法是:首先引入包  importjava.util.*; 然后  intr=newRandom().nextInt(3); (nextInt中的数......
  • static
    在jave的类中,使用static修饰的属性称为静态变量,也可以成为类变量,常量称为静态常量,方法称为静态方法或类方法,统称为静态成员,归整个类所有。静态成员不依赖于类的特定实例,被......
  • Java语言(基础一)
    Java语言Java的特性和优势简单性(简单易学)面向对象(一种思想万物皆对象)可移植性(一次编写到处运行JVM)高性能(及时编译)分布式(网络分布式url)动态性(反射机制)多线程(交互......
  • static
    JAVA中的static作用有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自......
  • JavaScript高级复习——js面向对象
    面向对象优点:易维护、易复用、易扩展。适合多人合作。缺点:性能比面向过程低。面向过程优点:性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机。缺点:没有面向对象......
  • 【Java基础】包装类的使用
    目录1.包装类是什么2.为什么要用包装类3.包装类和基本数据类型之间的转换基本数据类型-->包装类包装类-->基本数据类型4.和String类型之间的转换基本数据类型-->Stri......
  • Java实践二
    关于BigInteger:由于计算机使用固定的位数来保存数值,因此,能处理的数值大小是有限的,当要处理的数值超过了这一范围时,计算机将会自动截断数值的二进制表示为它所能处理的最多......
  • BigDecimal除法报错Method threw ‘java.lang.ArithmeticException‘ exception.
    今天使用BigDecimal数据类型做除法的时候,遇到以下报错:Methodthrew‘java.lang.ArithmeticException’exception.Non-terminatingdecimalexpansion;noexactreprese......
  • static
    Static首先static无规定private还是public,默认为default的形式,一般public可以跨类跨包,private只能由对象本身访问,而protected可以在本类和子类下跨包,default可以实现同一......
  • javascript的类的继承
     先看下java的继承,java的继承是发生在类之间,他们的对象之间没有继承关系,子类的对象通过子类创建对象,同时对象中不存储函数只有数据,函数需找到类定义以后读取里面的函数,类......