【java基础】 静态 关键字 static(构造函数、构造代码块、静态代码块的区别)
2018-03-30 12:36
549 查看
业务写多了,连基础也会忘记,抽时间就复习一下子。
b、特点:可以被本类的所有对象共享,可以使用类名调用
b、非静态方法能够直接访问静态成员,也能否直接访问非静态成员
c、静态方法中没有this关键字,因为我们可以通过类型,静态方法直接调用,不需要任何对象
类名(参数1,参数2……){
构造函数执行语句
}
(2)调用的时机:对象建立时。
(3)作用:给对象进行初始化。
(4)要点:当一个类中没有定义构造函数的时候,系统会默认给该类加入一个空参构造,但是当开发者在类中自定义构造函数之后,系统便不会给该类加入默认的空参构造了;一个对象建立,构造函数只运行一次,一般方法可以被该对象调用多次。
{
构造代码块执行语句
}
(2)调用时机:对象一建立,优先于构造函数执行
(3)作用:给对象进行初始化
(4)要点:类不能调用构造代码块;构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。
static{
构造代码块执行语句
}
(2)调用时机:类的加载,只执行一次,优于主函数
(3)作用:给类初始化
我是静态代码块
我是主函数
我是构造代码块
我是有参构造
Process finished with exit code 0
可见加载顺序:静态代码块>构造代码块>构造函数
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
可见加载顺序:静态代码块>构造代码块>构造函数
相关文章推荐
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 【java基础】static静态代码块,构造器代码块以及局部代码块的区别与应用!
- 黑马程序员_java基础学习笔记之(构造函数&构造代码块&静态代码块)的区别
- 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例
- [转] java基础--java静态代码块和静态方法的区别、static用法
- 笔记-java基础,静态代码块,构造代码块,构造函数。
- Java中普通代码块,构造代码块,构造函数,静态代码块区别
- java基础之----静态代码块和静态方法、以及static 关键字
- java基础之静态代码块,局部代码块,构造代码块区别。
- Java基础_面向对象_类与对象、构造函数、关键字、静态代码块、单例
- java——构造函数、构造代码块、Static关键字、main函数 & 继承:子父类中的变量、函数的特点、抽象类、接口等
- java基础--java静态代码块和静态方法的区别、static用法
- 什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字
- JAVA基础第六天学习日记_static关键字、文档、静态代码块、单例开发模式
- Java之静态代码块、构造代码块、与构造函数的用法
- 黑马程序员_Java基础_面向对象,封装,继承,单例设计模式,构造函数,构造代码块
- 黑马程序员_java静态代码块、构造代码块和构造函数的执行时间分析
- java中的静态代码块、构造代码块、构造函数执行顺序
- 三、Java基础---------关于继承、构造函数、静态代码块执行顺序示例讲解