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关键字代表了一个函数的调用者对象,这时就产生了冲突。

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

  • 相关阅读:
    Android开发之适配器-ListView适配器的重复数据
    Android开发之TextView的下划线添加
    Android 自定义View修炼-Android开发之自定义View开发及实例详解
    Android 开发之自定义Dialog及UI的实现
    Android开发之ContentProvider(内容提供者)
    XC文件管理器(Android应用)
    高效 告别996,开启java高效编程之门 4-1普通码农与风骚码农资源关闭PK
    高效 告别996,开启java高效编程之门 4-2垃圾回收与物理资源释放
    高效 告别996,开启java高效编程之门 3-29实战案例五:排序
    高效 告别996,开启java高效编程之门 3-28实战案例四:分组
  • 原文地址:https://www.cnblogs.com/xiaoaiying/p/13725269.html
Copyright © 2011-2022 走看看