java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字

Posted Advancing Swift

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字相关的知识,希望对你有一定的参考价值。

静态代码块?类加载就执行,最先执行

class demo{

static int num;

static{

num=10;

num*=3;

System.out.println("haha");

}

static void show(){

System.out.println("num="+num);

}

}

空参构造自动生成对象时,使用非静态的属性

代码:

package com.swift;
//使用无参构造方法自动生成对象,序号不断自增
public class Person {
    private int count; //如果在定义类时,使用的是非静态的属性,则得到的结果都是相同的,都为1。因为这个count生命周期短,只在对象内部
    public int id;
    public String name;
    public int age;
    public String city;
    public Person() {
        super();
        count++;
        this.id=count;
        this.name="NoName-"+count;
        this.age=20;
        this.city="蜀国"+count;
        
    }
    public Person(int id ,String name,int age,String city) {
        this.id=id;
        this.name=name;
        this.age=age;
        this.city=city;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getInfo() {
        return "The Person is id=" + id + ", name=" + name + ", age=" + age + ", city=" + city ;
    }
    
}

结果:

空参构造自动生成对象时,使用静态的属性

代码:

package com.swift;
//使用无参构造方法自动生成对象,序号不断自增
public class Person {
    private static int count; //如果在定义类时,使用的是静态的属性,则得到的结果是不同的。count生命周期长,与类相同
    public int id;
    public String name;
    public int age;
    public String city;
    public Person() {
        super();
        count++;
        this.id=count;
        this.name="NoName"+count;
        this.age=20;
        this.city="蜀国";
        
    }
    public Person(int id ,String name,int age,String city) {
        this.id=id;
        this.name=name;
        this.age=age;
        this.city=city;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getInfo() {
        return "The Person is id=" + id + ", name=" + name + ", age=" + age + ", city=" + city ;
    }
    
}

结果:

 Demo类

package com.swift;

public class DemoPerson {

    public static void main(String[] args) {
        new Person();
        new Person();
        new Person();
        new Person();
        new Person();
//        Person p3=new Person();
//        Person p4=new Person();
//        p1.id=100001;
//        p1.name="刘备";
//        p1.age=40;
//        p1.city="蜀国";
//        p2.id=100002;
//        p2.name="关羽";
//        p2.age=35;
//        p2.city="蜀国";
//        p3.id=100003;
//        p3.name="张飞";
//        p3.age=33;
//        p3.city="蜀国";
//        p4.id=100004;
//        p4.name="诸葛亮";
//        p4.age=30;
//        p4.city="蜀国";
//        System.out.println(p1.getInfo());
//        System.out.println(p2.getInfo());
//        System.out.println(p3.getInfo());
//        System.out.println(p4.getInfo());
    }

}

 

以上是关于java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象—多态

序列化,反序列化与空参构造函数

一些总结

java 面向对象:类的结构:构造器简介;属性赋值顺序;JavaBean的概念

JAVA 创建运行时类实例

Java之构造器和构造方法的使用和意义