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

    package com.xiaoai.test;
    
    public class Test_static {
    	
    	public String name; //非静态变量,每个对象拥有各自的变量,变量不被共享,在内存中会创建多个
    	public static int age;  //静态变量,在内存中只会创建一次,所有对象共享,随着类的加载而存在,随着类文件的消失而消失
    	
    	public static void sttc_1(){ //静态方法
    		System.out.println("静态");
    	}
    	
    	//静态方法
    	public static void static_syso(){
    		System.out.println("静态方法中---输出");
    		//可以引用静态变量
    		age = 12;
    		//--无法引用this
    //		this.name = "xiaoai";
    		//--无法引用非静态变量
    //		name = "nihao";
    		//--无法引用非静态方法
    //		sys1();
    		//--可以引用静态方法
    		sttc_1();
    	}
    	//非静态方法
    	public void sys1(){
    		System.out.println("非静态方法中---输出");
    		//可以引用this和非静态变量
    		this.name = "xiaoai";
    		//可以引用静态变量
    		age = 12;
    		//可以引用静态方法
    		sttc_1();
    	}
    	
    	@Override
    	public String toString() {
    		return "Test_static [name=" + name + ",age=" +age + "]";
    	}
    	
    	public static void main(String[] args) {
    		Test_static t1 = new Test_static();
    
    		t1.sys1();//可引用,对象可以调用非静态方法
    		t1.static_syso();//可引用,对象可以调用静态方法,但是不推荐
    		System.out.println(t1);
    //		Test_static.sys1(); //不可引用,类名不可直接调用非静态方法
    		Test_static.static_syso(); //可引用,类名可直接调用静态方法
    
    		System.out.println(t1.name); //可引用,非静态变量可以被对象.引用
    //		System.out.println(Test_static.name); //不可引用,非静态变量无法直接类名.引用
    
    		System.out.println(t1.age); // 可引用,静态变量可以被对象.引用
    		System.out.println(Test_static.age); //可引用,静态变量可以直接类名.引用
    	}
    }
    
    • 结果截图

    注意

    • 静态函数可直接访问静态成员变量,不能直接访问非静态成员变量。

    静态函数可使用类名直接调用,这时候可能还没有存在对象,而非静态成员数据是随对象的存在而存在。

    • 为什么非静态函数可直接访问静态与非静态成员变量。静态函数不能访问非静态的成员数据?

    非静态函数只能由对象调用,对象存在时,说明非静态与静态的数据都已加载好了,所以非静态函数可随便调用。
    静态函数不能访问非静态成员,是因为静态成员数据随对象存在而存在,静态函数可直接由类名调用,此时可能没有对象创建,也就没有非静态成员数据,所以静态函数无法访问非静态成员。
    *静态函数只要存在有对象,那么也可以访问非静态的数据,只是不能直接访问而已。

    • 为什么静态函数不能使用this或super关键字。

    因为静态的函数可用类名调用,类名调用时可能不存在对象,而this关键字代表了一个函数的调用者对象,这时就产生了冲突。

    个人结论:非静态可随意调用静态,静态无法调用非静态

  • 相关阅读:
    grid列的值格式化
    页面记载给绑定query的grid加filter
    页面加载后从后面带数据到前台
    waf2控件名
    通讯框架选型
    C# 访问修饰符和const、readonly
    ZooKeeper典型应用场景一览
    ZooKeeper典型使用场景一览
    摘的一段关于原型的介绍
    D3.js和three.js
  • 原文地址:https://www.cnblogs.com/xiaoaiying/p/13725269.html
Copyright © 2011-2022 走看看