- 浏览: 22422 次
- 性别:
- 来自: 济南
最新评论
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 7671 将Map转换成List // key list List ... -
Effictive Java 读书笔记
2013-10-11 13:51 756Effictive Java 1 考虑用静 ... -
eclipseSSH整合
2013-02-25 16:16 6491 Exception loading sessions fr ... -
简单java ibatis
2012-12-24 13:50 0ibatis小巧,易上手,适合于小型项目开发。 其中对于引用的 ... -
自己做的Ajax小练习
2012-11-13 08:42 6511 关于Ajax三个方法的固定写法 <scri ... -
自己做的web练习
2012-11-12 19:54 595参见附件:service 与client -
struts2小知识点
2012-11-01 10:19 6641 默认的命名空间“ namespace="&qu ... -
2012-10-11 Hibernate杂碎
2012-10-11 18:35 5791 从Hibernate的参考手册中,我们基本可以总结出这样几 ... -
Hibernate BaseDao
2012-10-09 17:16 0package net.comtops.dao.impl; ... -
Hibernate 实现增删改
2012-10-09 16:53 691Configuration conf = null; S ... -
Hibernate 主键生成策略
2012-10-09 16:14 586此处我们只针对常用的数据库类型进行说明,其他的略过: 1 Or ... -
JSP一个正确的验证码
2012-09-27 15:13 678image.jsp页面 <%@ page conte ... -
SQL SERVER分页
2012-09-27 09:51 664分页方案一:(利用Not In和SELECT TOP分页) ... -
JDBC数据库连接
2012-09-10 16:11 512MySQL: String Driver="com ... -
oracle分页以及rownum、rowid的使用
2012-09-09 14:13 715分页存储过程: 1.根据ROWID来分,执行时间0.03秒 c ... -
oracle自增序列
2012-09-08 17:52 539创建自增序列 CREATE SEQUENCE SEQn ... -
ObjectOutputStream
2012-08-02 11:05 916要根据用户选择,向一个文件写一个类(Student)的实例,使 ... -
java
2012-07-30 14:45 363- 第一种情况: Comparator cmp = Col ... -
黑马程序员:学习笔记第一天
2012-03-26 21:28 525android培训、java培训、期待与您交流! ------ ...
相关推荐
System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...
我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:
•初始化块和构造器:初始化块总在构造器之前执行,初始化块不能接受形参。 静态初始化块 •用static修饰的初始化块为静态初始化块,由于是静态的,所以是属于类,当类加载时,就执行静态初始化块 , ...
当多个构造器中有重复的语句,可以将这些重复的语句往上提取到初始化块中,提高代码的重用性 语法格式: class 类名1{ [修饰符]{ //初始化块的可执行代码 } } 注意:修饰符只能是static! 一个类种可以有多个
5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 5.10 本章小结 165 本章练习 165 第6章 面向对象(下) 166 6.1 基本数据类型的包装类 167 6.2 处理对象 170 6.2.1 打印对象和toString方法 170 6.2.2 =...
我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:
对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器
创建一个引用类型的实例时, 首先为实例的数据字段分配内存, 然后初始化对象的附加字段(对象指针、同步块索引), 最后调用类型中定义的实例构造器来设置对象的初始化状态。 构造引用类型的对象时,在调用类型的...
我们学习过,Java的构造器,有构造列表和构造代码块 class Person { // 成员变量 private String name; private Integer age; // Java构造器 public Person(String name, Integer age) { // 初始化成员变量 ...
} } 但是php中并没有一个类似java中的静态构造器/静态块的东西,就没有合适的时机对其进行初始化了。 对于共有的成员还有办法解决,例如: class A { static public $child; } A::$child = new B()
而实例变量可以在声明变量的时候给实例变量赋初始值,在非静态初始化块中以及构造器中赋初始值。 类变量有两个时机赋初始值,而实例变量可以有三个时机赋初始值。当final变量未初始化时系统不会进行隐式初始化,会...
2.构造器执行顺序 1.类加载,同时初始化类中静态的属性(赋默认值) 2.执行静态代码块 3.分配内存空间,同时初始化非静态的属性(赋默认值) 4.调用父类构造器(注意调用父类构造器之前已经给父类的非静态的属性显示...
初始化:在准备阶段已经赋过一个系统要求的初始值,而在初始化阶段则通过程序制定的主管计划去初始化变量和其他资源,从另一个角度理解就是 执行类构造器的()方法 .()方法是由编译器自动收集类中的所有变量的复制动作和...
11.2.6 构造器和终结器的定义 11.2.7 默认值的指定 11.2.8 多个类型参数 11.2.9 元数 11.2.10 嵌套泛型类型 11.3 约束 11.3.1 接口约束 11.3.2 基类约束 11.3.3 struct/class约束 …… 第12章 委托和...
5.8.3 静态初始化块启动新线程执行初始化 5.8.4 注意多线程执行环境 5.9 小结 第6课 流程控制的陷阱 6.1 switch语句陷阱 6.1.1 default分支永远会执行吗 6.1.2 break的重要性 6.1.3 switch表达式的类型 6.2...
Kotlin的对象表达式与Java中的匿名内部类的主要区别:...但对象表达式可以定义初始化块,可以通过初始化块来完成构造器需要完成的事情。 对象表达式可以包含内部类,不能包含嵌套类。 package `0705` interface Outp
例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做: public class Demo { private String s; public Demo { s = "Initial Value";} } 而非 s = new ...
11.2.6 构造器和终结器的定义 313 11.2.7 默认值的指定 313 11.2.8 多个类型参数 314 11.2.9 元数 315 11.2.10 嵌套泛型类型 316 11.3 约束 317 11.3.1 接口约束 319 11.3.2 类类型...