关闭

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

45人阅读 评论(0) 收藏 举报
分类:

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

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());
    }

}

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java静态域与静态方法

Java 中static 修饰的域或方法常被称作静态的,那么什么叫做静态的呢?下面我们就来了解一下Java中的静态域与静态方法。 1、静态域       如果将静态域定义为static ,那么每个类中...
  • WCCchangchun
  • WCCchangchun
  • 2016-07-10 01:31
  • 2215

java中静态代码块的用法 static用法详解

 java中静态代码块的用法 static用法详解 url: http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209....
  • jackpk
  • jackpk
  • 2015-12-09 14:41
  • 6024

Java反射机制 Object 与 Class 的关系 以及static方法与非静态方法的关系

Class是所有类的根源     Object是所有对象的根源   一个Object必定能通过 Object.getClass() 获得对应的Class,一个Class并不包含Object但 它能通过...
  • u010842019
  • u010842019
  • 2016-08-04 13:52
  • 2884

关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:

关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
  • hellohm_ndsc
  • hellohm_ndsc
  • 2014-12-19 17:18
  • 535

java 无参、有参构造方法;静态、非静态代码块执行顺序

1. 基本概念1.1.静态代码块 静态代码块static { } 非静态代码块{ } 静态代码块和非静态代码块的异同点如下:相同点:都是JVM加载类时且在构造函数执行之前执行,在类中都可以定义...
  • qiyeliuli
  • qiyeliuli
  • 2017-02-04 22:50
  • 759

(20)static用法、特点、与非静态的区别、使用注意事项、利弊、什么时候用、对主函数的理解、对已封装好的类方法调用的理解

一、用法        是一个修饰符,用于修饰成员(成员变量和成员函数)        当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名...
  • jiangshangchunjiezi
  • jiangshangchunjiezi
  • 2017-07-06 13:12
  • 310

eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?

eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program arg...
  • swift2010
  • swift2010
  • 2018-01-01 00:39
  • 29

Java中静态代码块,非静态代码块,以及父类与子类的构造方法的之间调用顺序

 一、对象的初始化顺序:(java类加载器加载类的顺序:http://blog.csdn.net/crazycoder2010/article/details/6288732) (1)加载父类...
  • u012276993
  • u012276993
  • 2014-03-28 13:21
  • 1167

父子类静态代码块,非静态代码块,有参,无参构造方法等的执行顺序问题

package com.suning.test; class Person {  String name;  int age;  {   System.out.println("父类的非...
  • huasm1
  • huasm1
  • 2017-11-29 22:54
  • 28

Java中静态代码块以及构造方法等执行顺序

Java中静态代码块,静态方法,静态变量,构造方法,普通变量,普通方法先后执行顺序,记录一下。以下为测试代码:public class TestOrder { private String us...
  • wu843820873
  • wu843820873
  • 2017-07-20 11:06
  • 52
    个人资料
    • 访问:5176次
    • 积分:222
    • 等级:
    • 排名:千里之外
    • 原创:229篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档