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

    在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块。

    Java把内存分为栈内存和堆内存,

    栈内存用来存放一些基本类型的变量、数组和对象的引用,

    堆内存主要存放一些对象。

    public class User {  
        private static int userNumber  = 0 ;  
          
        public User(){  
            userNumber ++;  
        }  
          
        public static void main(String[] args) {  
            User user1 = new User();  
            User user2 = new User();  
              
            System.out.println("user1 userNumber:" + User.userNumber);  
            System.out.println("user2 userNumber:" + User.userNumber);  
        }  
    }      
    ------------  
    Output:  
    user1 userNumber:2  
    user2 userNumber:2  
        
    

      

    2.1、static变量

    static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,他们两者的区别是:

    1.静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

    2.实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量,它与该实例同生共死。

    ===所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

     2.2、static方法

           static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于他在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说他不能是抽象方法abstract。

           Static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

    2.3、static代码块

           被static修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。

  • 相关阅读:
    C语言的AES加密
    curl指定域名的IP
    gdb调试知识
    C++获取寄存器eip的值
    C++嵌入lua
    [置顶] python字典和nametuple互相转换例子
    【python】redis基本命令和基本用法详解
    xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request.
    selinue引起的ssh连接错误
    SCP和SFTP相同点和区别
  • 原文地址:https://www.cnblogs.com/alamZ/p/7682556.html
Copyright © 2011-2022 走看看