zoukankan      html  css  js  c++  java
  • static关键字

    static关键字

    • 在类中,用static声明的成员变量为静态成员变量,它作为该类里的公用变量,在第一次使用时被初始化,对于该类的所有变量来说,static成员变量只有一份。

    • 用static声明的方法称为静态方法(静态方法不再是针对于某个对象调用,所以不能访问非静态成员)。

    • 注(大白话):在一个类里,每new一个对象,就有一份属于自己的成员变量(非静态成员变量),对于静态成员变量来说,只有 一份,但是大家共享。

      比如:复制代码

       1 package cn.galc.test;
       2 
       3 public class Cat {
       4 
       5     /**
       6      * 这里面的sid不再是静态成员变量了,因为没有static修饰符,
       7      * 此时它就是类里面一个普通的非静态成员变量,和id,name一样,
       8      * 成为每一个new出来的对象都具有的属性。
       9      */
      10     private  int sid = 0;
      11 
      12     private String name;
      13 
      14     int id;
      15 
      16     Cat(String name) {
      17         this.name = name;
      18         id = sid++;
      19     }
      20 
      21     public void info() {
      22         System.out.println("My Name is " + name + ",NO." + id);
      23     }
      24 
      25     public static void main(String[] args) {
      26         //Cat.sid = 100;这里不能再使用“类.静态成员变量”的格式来访问sid了,因为sid现在变成了非静态的成员变量了。所以必须要把这句话注释掉,否则无法编译通过。
      27         Cat mimi = new Cat("mimi");
      28         Cat pipi = new Cat("pipi");
      29         mimi.info();
      30         pipi.info();
      31     }
      32 }
    • 这里new了两只猫出来,每只猫都有name,id两个属性,即非静态成员变量id和name是每个对象都单独有一份的,但对于静态成员变量来说,只有一份,不管new了多少个对象,哪怕不new对象,静态成员变量也只有一份。

      静态成员变量是属于整个类的,它不属于专门的某个对象。任何一个对象都可以访问这个静态的值,访问的时候访问的都是同一块内存。即便是没有对象也可以访问这个静态的值,通过“类名.静态成员变量名”来访问这个静态的值。

    • 在一个静态的方法里,不能直接访问一个非静态的成员变量,必须在静态的方法里new一个对象才能访问。

    • 静态的变量可以通过对象名去访问,也可以通过类名去访问,大家访问的都是同一块内存。

    • 非静态成员专属于某一个对象,想访问非静态成员必须new一个对象出来才能访问。

    • 访问静态成员变量:类.静态成员变量
  • 相关阅读:
    作业3
    学习进度
    作业2
    介绍自己,并介绍github注册过程和初步使用
    mysql显示中文乱码问题解决
    数学能力测试
    C++ Primer总结
    shell脚本
    完全二叉树
    test命令的测试功能
  • 原文地址:https://www.cnblogs.com/bzbz/p/11495388.html
Copyright © 2011-2022 走看看