• [Training Video


    Static and non-Static : 

    非静态方法(不带static)可以访问静态变量和方法(带static),但是反过来就不行。

    类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问

    非静态成员(变量和方法)属于类的对象,只有在类的对象产生(创建实例)的时候才会分配内存,然后通过类的对象去访问

    在一个类的静态成员中去访问非静态成员之所以会出错是因为在类的非静态成员不存在的时候静态成员就已经存在了,访问一个内存中不存在的东西会出错。

     静态变量和方法既可以用类来调用,也可以用对象来调用,但不建议用对象调用

    Code :

    public class Car {
    	
    		// GLOBAL VARIABLE
    		String mod;
    		int price;
    		static int wheels = 4;
    
    		// static functions can only access static stuff
    		public static void main(String[] args) {
    			Car c1 = new Car();
    			c1.mod = "Merc";
    			c1.price = 8909809;
    			c1.start();
    			c1.accel();
    			
    			Car c2 = new Car();
    			c2.mod = "Maruti";
    			c2.price = 8909809;
    			c2.start();
    			c2.accel();
    			
    			System.out.println(c1.mod);
    			System.out.println(c2.mod);
    			
    			// static
    			System.out.println(wheels);
    			System.out.println(Car.wheels);
    			
    			c1.wheels = 8;
    			System.out.println(wheels);
    			System.out.println(Car.wheels);
    			System.out.println(c2.wheels);
    			
    			fillGas(100);
    			Car.fillGas(200);
    			c1.fillGas(900);
    		}
    		
    		public void start(){
    			System.out.println(mod + " starting");
    		}
    		
    		public void accel(){
    			System.out.println(mod + " acc");
    		}
    		
    		public static void fillGas(int quantity){
    			
    		}
    }
    

    Result :

    Merc starting
    Merc acc
    Maruti starting
    Maruti acc
    Merc
    Maruti
    4
    4
    8
    8
    8
    

    Code :

    public class Car {
    		
    		String mod;
    	
    		public static void main(String[] args) {
    			Car a = new Car();
    			Car b = new Car();
    			Car c = new Car();
    			
    			a.mod = "A";
    			b.mod = "B";
    			c.mod = "C";
    			
    			System.out.println(a.mod);
    			System.out.println(b.mod);
    			System.out.println(c.mod);
    			
    			a=b;
    			b=c;
    			c=a;
    			
    			System.out.println(a.mod);
    			System.out.println(b.mod);
    			System.out.println(c.mod);
    		}
    }
    

    Result :

    A
    B
    C
    B
    C
    B
    
  • 相关阅读:
    JS异步操作之promise发送短信验证码.html
    JS高级之简单类的定义和继承
    逮住一个bug
    基于localStorage的登录注册
    脱离node自己使用普通的requirejs管理js资源
    前端的console.log的效果写法
    第六节 全文索引
    第五节 索引
    第四节 数据的删除
    第三节 基本操作之数据--------更新
  • 原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/5589883.html
Copyright © 2020-2023  润新知