• java中static关键字


    一、static关键字的介绍

      关于static关键字,我们最是在一个类的主方法中见到的,如"public static void main(String[] args)",static关键字在java中,通常用于公共的部分,static关键字可以修饰属性,也可以修饰方法。

    二、static关键字修饰属性

      下面举一个例子:

    class Person{
    	
    	//姓名
    	private String name;
    	//国籍
    	private String country;
    	
    	public Person(String name){
    		this.name = name;
    	}
    	
    	public String getName(){
    		return name;
    	}
    	public String getCountry(){
    		return country;
    	}
    	public void setName(String name){
    		this.name = name;
    	}
    	public void setCountry(String country){
    		this.country = country;
    	}
    	
    	public void show(){
    		System.out.println("姓名:"+name+",国籍:"+country);
    	}
    	
    }
    
    public class StaticDemo{
    	
    	public static void main(String[] args){
    		
    		Person person1 = new Person("人员一号");
    		Person person2 = new Person("人员二号");
    		Person person3 = new Person("人员三号");
    		person1.show();
    		person2.show();
    		person3.show();
    		//修改一个对象中的一个非static属性的值
    		person1.setCountry("中国");
    		System.out.println("修改一个对象中的一个非static属性的值");
    		person1.show();
    		person2.show();
    		person3.show();
    	}
    	
    }
    

      运行结果:

      

       通过结果我们可以看出,当修改某个对象中的属性时,其他对象的其对应的值是不会改变的

      这个时候我们在country这个属性用static修饰,再次运行

            //姓名
    	private String name;
    	//国籍
    	private static String country;
    

      运行结果:

      

      从结果中我们可以看出,只修改了一个对象中属性的值,其他对象的相对应的这个属性的值也发生了变化,这就是用static修饰属性的结果

      下面从对象内存分析一下原因:

      

       从图中我们可以看出,每个对象中的country属性变量值都指向静态区"中国"这个变量值,所以当任意一个对象中的这个变量

      修改值的时候,其他对象的值都会变 。

    三、static关键字修饰方法

      用static关键字修饰的方法和属性都可以通过类名直接调用,即不创建对象,使用"类名.属性/方法"的形式调用,但是不推荐直接使用类名.属性直接

      给属性赋值,因为这样赋值不够安全,例如年龄这个字段,通过类名.属性可以给年龄赋一个负值,显然年龄是负的不合理。所以以后在类中定义属性

      的时候,用private修饰,这样就不能直接通过类名.属性这种方式赋值。但是用static关键字修饰的方法,建议我们通过类名.方法这种方式调用,因为

      在方法中,我们可以加一些逻辑,避免不合理的情况出现,在日常开发中,使用类名.方法这种方式调用static关键字修饰的方法这种形式很常见。

    class Person{
    	
    	public static void eat(){
    		System.out.println("人要吃饭");
    	}
    }
    
    public class StaticMethodDemo{
    	
    	public static void main(String[] args){
    		
    		//创建对象并调用方法
    		Person person = new Person();
    		person.eat();
    		System.out.println("===========");
    		//直接通过类名直接调用
    		Person.eat();		
    	}
    }
    

      运行结果:

      

      

  • 相关阅读:
    浙江大华2012笔试题+答案解析
    腾讯2011年10月15日校招笔试+答案解析
    百度2011招聘笔试题+答案解析
    阿里巴巴2011笔试题+答案解析
    微软2012实习生笔试题+答案解析
    腾讯2012实习生笔试题+答案解析
    迅雷2012春招+答案解析
    华为2012春上机笔试题+参考程序
    中兴2011笔试题+答案解析
    mysql修改数据库名
  • 原文地址:https://www.cnblogs.com/li666/p/11875931.html
Copyright © 2020-2023  润新知