您的位置:首页 > 编程语言 > Java开发

【java基础】 静态 关键字 static(构造函数、构造代码块、静态代码块的区别)

2018-03-30 12:36 549 查看
业务写多了,连基础也会忘记,抽时间就复习一下子。

static

1.静态概述 

a、生命周期:随着类的加载而加载
b、特点:可以被本类的所有对象共享,可以使用类名调用

2.访问特点

a、静态方法能否直接访问静态成员(变量和方法),不能直接访问非静态。原因:静态优先于对象而存在于内存
b、非静态方法能够直接访问静态成员,也能否直接访问非静态成员
c、静态方法中没有this关键字,因为我们可以通过类型,静态方法直接调用,不需要任何对象

3.构造函数、构造代码块、静态代码块的区别

a、构造函数

(1)格式:
    类名(参数1,参数2……){
    构造函数执行语句
    }
(2)调用的时机:对象建立时。
(3)作用:给对象进行初始化。

(4)要点:当一个类中没有定义构造函数的时候,系统会默认给该类加入一个空参构造,但是当开发者在类中自定义构造函数之后,系统便不会给该类加入默认的空参构造了;一个对象建立,构造函数只运行一次,一般方法可以被该对象调用多次。

b、构造代码块

(1)格式:
{
    构造代码块执行语句
}
(2)调用时机:对象一建立,优先于构造函数执行
(3)作用:给对象进行初始化
(4)要点:类不能调用构造代码块;构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。

c、静态代码块

(1)格式:
static{
    构造代码块执行语句
}
(2)调用时机:类的加载,只执行一次,优于主函数 
(3)作用:给类初始化

b、举例说明

/**
* 城市实体类
*
* Created by uknowzxt
*/
public class City {

//静态代码块
static {
System.out.println("我是静态代码块");
}

//构造代码块
{
System.out.println("我是构造代码块");
}

//空参构造
public City(){
System.out.println("我是空参构造");
}

//有参构造
public City(Long id, Long provinceId, String cityName, String description) {
this.id = id;
this.provinceId = provinceId;
this.cityName = cityName;
this.description = description;
System.out.println("我是有参构造");
}

public static void main(String[] args) {
System.out.println("我是主函数");
City city = new City(new Long("1"),new Long("1000"),"杭州市","~~");

}

private Long id;
private Long provinceId;
private String cityName;
private String description;
}

主函数:

public static void main(String[] args) {
System.out.println("我是主函数");
City city = new City(new Long("1"),new Long("1000"),"杭州市","~~");

}
运行结果:
我是静态代码块
我是主函数
我是构造代码块
我是有参构造
Process finished with exit code 0

可见加载顺序:静态代码块>构造代码块>构造函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐