- 浏览: 23816 次
- 性别:
- 来自: 济南
最新评论
1,构造器的语法格式
修饰符:public private,protected,default
类名:构造器的名字必须和类名一致
参数列表
2,构造器的返回值类型
构造器不能定义返回值的类型,如果定义了返回值的类型,编译并不会报错,因为JVM已经把所谓的构造器当做是一个普通的方法.没有返回值类型并不是没有返回值,构造器有返回值的,返回的是当前类的对象,因此构造器的返回值类型总是当前类,因此没有定义返回值的类型.可以理解为构造器的返回值是隐式的.
3默认的构造器,
如果程序中没有显示的定义构造器,系统会默认的给程序一个无参的构造器.一旦加了构造器,默认的构造器就不存在了.
4,构造器是创建对象的重要途径,是不是说构造器就完全负责创建对象呢?
不是,构造器是创建对象的重要途径,同构new 关键字来调用构造器也可以返回一个该类实例,但是这个过程并不是完全有构造器执行的.
实际上,在系统调用构造器的时候,系统会先为该对象分配内存空间,为对象的成员变量赋初值,这个时候对象就已经产生了---这些操作都是在构造器的执行体之前执行的.也就是说,在构造器的执行体执行之前,对象就已经存在了,只是不能被外部的程序调用,构造体执行之后,对象就可以被外部的程序调用了.
5,构造器的重载
public class ConstructorDemo {
private int a ;
private String s;
public ConstructorDemo() {
}
public ConstructorDemo(int a ){
this.a = a;
}
public ConstructorDemo (String s,int a){
this(a);
this.s = s;
}
}
6,初始化块(代码块)
初始化块可以当做是Java程序里面的一种成员,代码块又分为:静态代码块和非静态的代码块,一个类中可以有多个代码块,代码块之间执行的顺序是根据代码块在程序中的位置来决定.静态的代码块总是比非静态的代码块先执行
非静态代码块:可以把它当做是类的成员属性来理解.每次创建对象的时候都会执行一遍是属于成员变量
静态的代码块:同样的可以把它理解成类变量,只有在加载类的时候才会执行.
程序对属性进行初始化的顺序是:代码块à属性声明时候指定的初始值à构造器中指定的值
7,初始化块和构造器
从某种程度上来讲,可以理解为初始化快是构造器的补充,因为初始化快总是在构造器之前执行,同样也可以对对象初始化.
与构造器不同的是:初始化块只能执行一段固定的代码,不能够像构造器一样接受参数,而且是对类的所有的对象进行初始化.
跟构造器一样的,程序在执行的时候不仅会执行当前类的初始化快和构造器,会一直追溯到object类的初始化快和构造器.先执行父类的初始化块和构造器(先初始化块,再构造器),然后再执行当前类的初始化块和构造器.
修饰符:public private,protected,default
类名:构造器的名字必须和类名一致
参数列表
2,构造器的返回值类型
构造器不能定义返回值的类型,如果定义了返回值的类型,编译并不会报错,因为JVM已经把所谓的构造器当做是一个普通的方法.没有返回值类型并不是没有返回值,构造器有返回值的,返回的是当前类的对象,因此构造器的返回值类型总是当前类,因此没有定义返回值的类型.可以理解为构造器的返回值是隐式的.
3默认的构造器,
如果程序中没有显示的定义构造器,系统会默认的给程序一个无参的构造器.一旦加了构造器,默认的构造器就不存在了.
4,构造器是创建对象的重要途径,是不是说构造器就完全负责创建对象呢?
不是,构造器是创建对象的重要途径,同构new 关键字来调用构造器也可以返回一个该类实例,但是这个过程并不是完全有构造器执行的.
实际上,在系统调用构造器的时候,系统会先为该对象分配内存空间,为对象的成员变量赋初值,这个时候对象就已经产生了---这些操作都是在构造器的执行体之前执行的.也就是说,在构造器的执行体执行之前,对象就已经存在了,只是不能被外部的程序调用,构造体执行之后,对象就可以被外部的程序调用了.
5,构造器的重载
public class ConstructorDemo {
private int a ;
private String s;
public ConstructorDemo() {
}
public ConstructorDemo(int a ){
this.a = a;
}
public ConstructorDemo (String s,int a){
this(a);
this.s = s;
}
}
6,初始化块(代码块)
初始化块可以当做是Java程序里面的一种成员,代码块又分为:静态代码块和非静态的代码块,一个类中可以有多个代码块,代码块之间执行的顺序是根据代码块在程序中的位置来决定.静态的代码块总是比非静态的代码块先执行
非静态代码块:可以把它当做是类的成员属性来理解.每次创建对象的时候都会执行一遍是属于成员变量
静态的代码块:同样的可以把它理解成类变量,只有在加载类的时候才会执行.
程序对属性进行初始化的顺序是:代码块à属性声明时候指定的初始值à构造器中指定的值
7,初始化块和构造器
从某种程度上来讲,可以理解为初始化快是构造器的补充,因为初始化快总是在构造器之前执行,同样也可以对对象初始化.
与构造器不同的是:初始化块只能执行一段固定的代码,不能够像构造器一样接受参数,而且是对类的所有的对象进行初始化.
跟构造器一样的,程序在执行的时候不仅会执行当前类的初始化快和构造器,会一直追溯到object类的初始化快和构造器.先执行父类的初始化块和构造器(先初始化块,再构造器),然后再执行当前类的初始化块和构造器.
发表评论
-
关于Map常用的方法
2014-02-25 09:25 8231 将Map转换成List // key list List ... -
Effictive Java 读书笔记
2013-10-11 13:51 786Effictive Java 1 考虑用静 ... -
eclipseSSH整合
2013-02-25 16:16 7111 Exception loading sessions fr ... -
简单java ibatis
2012-12-24 13:50 0ibatis小巧,易上手,适合于小型项目开发。 其中对于引用的 ... -
自己做的Ajax小练习
2012-11-13 08:42 6951 关于Ajax三个方法的固定写法 <scri ... -
自己做的web练习
2012-11-12 19:54 677参见附件:service 与client -
struts2小知识点
2012-11-01 10:19 7061 默认的命名空间“ namespace="&qu ... -
2012-10-11 Hibernate杂碎
2012-10-11 18:35 6281 从Hibernate的参考手册中,我们基本可以总结出这样几 ... -
Hibernate BaseDao
2012-10-09 17:16 0package net.comtops.dao.impl; ... -
Hibernate 实现增删改
2012-10-09 16:53 730Configuration conf = null; S ... -
Hibernate 主键生成策略
2012-10-09 16:14 628此处我们只针对常用的数据库类型进行说明,其他的略过: 1 Or ... -
JSP一个正确的验证码
2012-09-27 15:13 709image.jsp页面 <%@ page conte ... -
SQL SERVER分页
2012-09-27 09:51 710分页方案一:(利用Not In和SELECT TOP分页) ... -
JDBC数据库连接
2012-09-10 16:11 548MySQL: String Driver="com ... -
oracle分页以及rownum、rowid的使用
2012-09-09 14:13 756分页存储过程: 1.根据ROWID来分,执行时间0.03秒 c ... -
oracle自增序列
2012-09-08 17:52 595创建自增序列 CREATE SEQUENCE SEQn ... -
ObjectOutputStream
2012-08-02 11:05 943要根据用户选择,向一个文件写一个类(Student)的实例,使 ... -
java
2012-07-30 14:45 412- 第一种情况: Comparator cmp = Col ... -
黑马程序员:学习笔记第一天
2012-03-26 21:28 573android培训、java培训、期待与您交流! ------ ...
相关推荐
从输出结果可以看到,Father 类中的静态变量和静态初始化块首先被初始化,接着是 Son 类中的静态变量和静态初始化块,然后是变量和初始化块,最后是构造器。 类的初始化顺序是 JAVA 面试中一个非常重要的知识点,...
假设存在一个父类`Parent`和一个子类`SubClass`,其中包含了静态变量、实例变量、静态初始化块、初始化块和构造器。初始化的顺序遵循以下原则: 1. **父类的静态变量和静态初始化块**:首先执行,这是因为在Java中...
子类的静态初始化块会在父类的静态初始化块之后执行,但非静态部分则有所不同,子类的非静态变量和初始化块会在父类的构造器之后执行。 对于静态变量和静态初始化块,以及非静态变量和非静态初始化块的顺序,它们并...
普通初始化块在创建对象时会被隐式调用,并且在执行构造器之前运行。这意味着,如果你在类中有多个初始化块,它们将按照它们在代码中的顺序依次执行。初始化块可以用于设置对象的初始状态,特别是当某些初始化逻辑...
2. 父类中的所有非静态成员(包括变量、非静态初始化块和构造器)在子类的相关成员之前被初始化。 3. 在同一个类中,静态变量的初始化发生在静态初始化块之前,而非静态变量的初始化则发生在非静态初始化块之前。 ...
接下来,父类的实例变量、实例初始化块和构造器按顺序执行,最后是子类的实例变量、实例初始化块和构造器。这个过程可以这样理解:在创建子类对象时,父类的部分也会被初始化,以确保父类的属性和行为能够正常工作。...
- 在同一类中,静态初始化块先于实例初始化块执行,而实例初始化块和构造器的执行顺序取决于它们在代码中的位置,而不是它们的大小或复杂性。 6. **嵌套类和内部类**: - 对于嵌套类(包括静态和非静态内部类),...
由此可见,静态成员(静态变量和静态初始化块)总是最先被初始化,随后是非静态成员(变量、初始化块),最后是构造器。 #### 三、继承情况下的初始化顺序 在Java中,类可以继承其他类。因此,在处理继承时,我们...
在 Java 中,对象的初始化方式主要有两种:构造器和初始化块。构造器是 Java 中常用的对象初始化方式,用于对对象进行初始化操作。初始化块也是对象初始化的一种方式,但它可以对 Java 对象进行更多的初始化操作。 ...
这表明了在一个类中静态变量和静态初始化块的初始化顺序以及变量、初始化块和构造器的初始化顺序。 当涉及到继承时,情况会有所不同: ```java class Parent { // 父类静态变量 public static String p_Static...
- 父类的非静态成员(包括非静态变量、非静态初始化块和构造器)在子类的非静态成员之前初始化。 - 子类的成员按声明顺序初始化。 ##### 示例代码解析 以下是一段示例代码,用于演示继承情况下的类初始化顺序: `...
Java中的对象初始化流程是编程实践中一个非常重要的概念,它涉及到类加载、静态初始化块、实例初始化块、构造器等多个方面。下面将详细解释这个过程。 首先,对象初始化流程的起点是程序的入口点,即`main`方法。当...
如果在构造器或初始化块中依赖其他静态或非静态成员,必须确保这些成员在需要之前已经被正确初始化。否则,可能会导致程序运行时错误或者逻辑错误。 此外,静态初始化块只在类加载时执行一次,而初始化块(也称为...
System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...
特别要注意的是,在子类的初始化过程中,子类的静态变量和静态初始化块会在父类的变量、初始化块、构造器之前就被初始化。也就是说,在父类完全初始化完毕之前,子类的静态成员已经完成初始化了。 这个顺序很重要,...