Java构造器浅析
Java构造器
问题引出
1.先看一段简单创建对象的例子:
public class constructTest {
public static void main(String[] args) {
Index t = new Index();
t.dance();
}
} class Index{
public void dance(){
System.out.println("跳舞.....");
}
}
构造器分析
① 代码中有Index t = new Index()这样一条语句,可能你会觉得这不就是创建对象吗?有什么好分析的…可是下面的类名是Index,而不是Index(),按道理来说,如果是创建对象,那我们应该写成Index t = new Index,为什么加了括号呢?一般都是在调用方法的时候才加括号,没错,其实这里也就是类似于调用方法,只不过这里是调用类的构造器(构造器不是方法,但是类似于方法,在官方文档中,他和方法是并列的。)

②当按住Ctrl 键再点击上面的Index()的时候,就会跳转到下面的Index这里,也就说明在创建对象的时候,确实是调用下面的构造器。
③初始化信息
public class constructTest {
public static void main(String[] args) {
Index t1 = new Index();
Index t2 = new Index("小芳",1);
t1.demo();
t2.demo();
}
}
class Index{
public String name;
public int age;
public Index(){
}
public Index(String name, int age){
this.name = name;
this.age = age;
}
public void demo(){
System.out.println(name+"刚出生,今年"+age+"岁了!");
}
}
//输出结果
null刚出生,今年0岁了!
小芳刚出生,今年1岁了!
②可以这样理解,当创建一个对象的时候,就像一个小孩的出生,我们会给他取名,并且默认规定他就是一岁。而对于对象来说,也可以类似的在创建的时候默认的给他初始化一些信息。而这些操作就把他放到构造器里面去,当实例化对象的时候,构造器里的内容也被执行,那么我们需要的初始化信息也就有了。
总结构造器作用
1.创建对象
2.初始化对象的信息。
其他注意事项
1.构造器定义方法: 权限修饰符 类名 ( 形参列表){ }
2.当创建对象的时候,如果没有
显式的写出构造器,那么系统会默认使用自带的构造器,只是这个构造器没有初始化功能,因为他也不知道你要初始化那些属性,所以一般都会显式的对构造器进行重写。3.构造器还可以进行重载,当重载以后,创建对象的时候会根据构造器参数列表信息来选择使用哪个构造器。如果自己写了构造器,那么系统默认的构造器就不再使用!
4.构造器不能是abstract, static, final, native, strictfp, 或者synchronized修饰,原因如下:
①构造器不是通过继承得到的,所以没有必要把它声明为final的。
(被
final修饰的变量就是常量,方法不能被重写但可以重载,类不能被继承。) ② 一个抽象的构造器将永远不会被实现,所以也不能声明为abstract的。
③构造器总是关联一个对象而被调用,所以把它声明为static是没有意义的。
④没有实际的需要把构造器定义成同步的,因为它将会在构造的时候锁住该对象,直到所有的构造器完成 它们的工作,这个构造的过程对其它线程来说,通常是不可访问的。 (synchronized)
⑤本地化的方法情况特别复杂,所以JVM调用起来非常麻烦,需要考虑很多种情况,没有native关键字的 情况下,JVM实现起来比较容易。
Java构造器浅析的更多相关文章
- scjp考试准备 - 7 - Java构造器
题目——如下代码的执行结果: class Hello{ String title; int value; public Hello(){ title += " World!"; } ...
- JAVA构造器,重载与重写
1. java构造器 构造器也叫构造方法(constructor), 用于对象初始化. 构造器是一个创建对象时被自动创建的特殊方法,目的是对象的初始化. 构造器 的名称与类的名称一致. JAVA通过n ...
- Java NIO浅析 转至 美团技术团队
出处: Java NIO浅析 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服 ...
- 浅谈Java构造器
Java构造器 每个类都有构造方法.如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法. 在创建一个对象的时候,至少要调用一个构造方法.构造方法的名称必须与类同名,一个类可以 ...
- java构造器级简单内存分析
java构造器的使用(基础篇) 构造方法也叫构造器,是创建对象时执行的特殊方法,一般用于初始化新对象的属性. 基本定义语法: 访问控制符 构造方法名([参数列表]){ 方法体 } 注:"访问 ...
- java构造器
java的构造器不是方法,因为没有返回值. 构造器可以重载. 构造器的访问说明符: private:只有本类可以使用这个构造器. protected:这个类的子类和包中的类都可以使用此构造器. pub ...
- Java构造器和方法的区别
摘要要学习Java,你必须理解构造器.因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆.但是,构造器和方法又有很多重要的区别.原作者:Robert Nielsen 原站:www.javawor ...
- JAVA构造器、this、super
构造器是为了创建一个类的实例.这个过程也可以在创建一个对象的时候用到: Platypus p1 = new Platypus(); 相反,方法的作用是为了执行java代码. 修饰符,返回值和命名的不同 ...
- Java构造器的深入理解
[构造器与方法的深入理解] 构造器的深入理解 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 [博客地址]http://www.cnblogs.com/grl2 ...
随机推荐
- hdu 1878 欧拉回路(联通<并查集> + 偶数点)
欧拉回路Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- nyoj 273-字母小游戏 (getline(cin, string))
273-字母小游戏 内存限制:64MB 时间限制:1000ms 特判: No 通过数:16 提交数:24 难度:0 题目描述: 给你一个乱序的字符串,里面包含有小写字母(a--z)以及一些特殊符号,请 ...
- js数组之sort()函数
一般我们使用sort函数进行数组的排序,sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = [&q ...
- git操作忽略.iml文件
git操作忽略.iml文件** 参考:https://blog.csdn.net/m0_38001814/article/details/87354584 因为.iml文件的修改导致代码pull失败 ...
- Install gitlab
yum install -y curl policycoreutils-python openssh-server postfix wget wget https://mirrors.tuna.tsi ...
- [FPGA]Verilog实现8位串并转换器HC595
目录 想说的话... 正文 IC介绍_HC595 电路连接图 功能表 逻辑图 代码实现 代码已经更新,新的代码按照电路编写,忠实于原电路的逻辑,已注于文末(11/16) 修复并行输出数据出错的bug, ...
- vue 父子组件传值,兄弟组件传值
父子组件中的传值 父向子 v-bind props <!-- 组件使用v-bind传值 --> <router :msg="msg"></rou ...
- 2019-9-11:渗透测试,基础学习,VMware安装centos 7
VMware Workstation 15 Pro 安装Centos 7,详细图文步骤 1,点击VMware菜单栏的“文件”-->“新建虚拟机”,选择“典型”使用向导创建虚拟机,点击“下一步” ...
- 公众号在线Markdown编辑器,支持公式
公众号排版不支持Markdown,用自带的富文本编辑器排版出来的格式十分丑陋,尤其是公式,竟然连"Mathjax"都不支持,但好在支持"带格式复制",也即可以将 ...
- 为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?
在阅读<阿里巴巴Java开发手册>时,发现有一条关于在 foreach 循环里进行元素的 remove/add 操作的规约,具体内容如下: 错误演示 我们首先在 IDEA 中编写一个在 f ...