zoukankan      html  css  js  c++  java
  • java static变量及函数

    java以类为基础,没有游离在类之外单独存在的变量。所以,c++中的全局变量,在java中应该是不存在的。java中有的是成员变量和成员方法。当成员前以static修饰时,即为静态成员变量或静态成员方法。

    1. 访问规则

    • static成员变量,可被static或非static方法访问。
    • static成员变量,仅可通过类名访问,不可通过类实例访问。
    • static成员方法,仅可访问static成员变量,无法访问非static成员变量。
    • static成员方法,仅可通过类名访问,不可通过类实例访问。
    • 非static成员方法,仅可通过类实例访问,不可通过类名访问。
    • static成员变量和static成员方法,没有this方法。即,不可以通过this.age或this.setAge()来访问。
    package com.javaPractise;
    
    public class TestStatic {
    
        public String name;
        public static int age;
        public static String staticField = "静态成员变量";
    
        public TestStatic(){
            System.out.println("无参构造函数Constructor of TestStatic");
        }
    
        public TestStatic(String myName, int myAge){
            this.name = myName;
            age = myAge;
            System.out.println("有参构造函数Constructor of TestStatic");
    
        }
    
        public static void setStaticField(String value){
            staticField = value;
            System.out.println("staticField: " + staticField);
        }
    
        public static void printStaticField(){
            System.out.println("staticField: " + staticField);
        }
    
        public void printNameAndAge(){
            //非静态成员方法可访问 静态 和 非静态 成员变量
            System.out.println("name: " + name + " age: " + age);
        }
    
        public static void setAge(int n){
            //静态成员方法,仅可访问静态成员变量,不可访问普通成员变量
            age = n;
    //        name = "abc";
        }
    
        public static void printAge(){
    System.out.println(
    "age: " + age); } }
    import com.javaPractise.TestStatic;
    
    public class Main {
    
        public static void main(String[] args){
            System.out.println("age of TestStatic");
            System.out.println(TestStatic.age); //静态成员可通过类名直接调用
            TestStatic.printAge();  //静态方法可通过类名直接调用
            //TestStatic.printNameAndAge();  //非静态方法不可通过类名直接调用
    
            TestStatic.printStaticField();
            TestStatic.setStaticField("haha");
    
            TestStatic testStatic1 = new TestStatic();
            System.out.println("name and age of testStatic1");
            testStatic1.printNameAndAge();  //非静态成员仅通过类实例调用
            testStatic1.printAge();  //静态方法可通过类实例调用
        }
    }

    2. 存放区域

    static变量,存放在静态存储区;普通成员变量,存放在栈区;new出来的实例,存放在堆区;static final变量,属于不可改变值的常量,存放在常量区。

  • 相关阅读:
    tensorflow2知识总结---3、逻辑回归与交叉熵
    tensorflow2知识总结---2、多层感知器实例
    日常英语---200720(感知器:perceptron)
    日常英语---200720(numpy怎么读)
    日常英语---200720(tensorflow2优化函数:model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc']))
    tensorflow2知识总结---1、线性回归实例
    Guid.ToString Method
    Intercept HTTP requests
    Fetch API
    古墓惊魂 关卡奖励的宝藏
  • 原文地址:https://www.cnblogs.com/sunada2005/p/10882158.html
Copyright © 2011-2022 走看看