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构造器浅析的更多相关文章

  1. scjp考试准备 - 7 - Java构造器

    题目——如下代码的执行结果: class Hello{ String title; int value; public Hello(){ title += " World!"; } ...

  2. JAVA构造器,重载与重写

    1. java构造器 构造器也叫构造方法(constructor), 用于对象初始化. 构造器是一个创建对象时被自动创建的特殊方法,目的是对象的初始化. 构造器 的名称与类的名称一致. JAVA通过n ...

  3. Java NIO浅析 转至 美团技术团队

    出处: Java NIO浅析 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服 ...

  4. 浅谈Java构造器

    Java构造器 每个类都有构造方法.如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法. 在创建一个对象的时候,至少要调用一个构造方法.构造方法的名称必须与类同名,一个类可以 ...

  5. java构造器级简单内存分析

    java构造器的使用(基础篇) 构造方法也叫构造器,是创建对象时执行的特殊方法,一般用于初始化新对象的属性. 基本定义语法: 访问控制符 构造方法名([参数列表]){ 方法体 } 注:"访问 ...

  6. java构造器

    java的构造器不是方法,因为没有返回值. 构造器可以重载. 构造器的访问说明符: private:只有本类可以使用这个构造器. protected:这个类的子类和包中的类都可以使用此构造器. pub ...

  7. Java构造器和方法的区别

    摘要要学习Java,你必须理解构造器.因为构造器可以提供许多特殊的方法,这个对于初学者经常混淆.但是,构造器和方法又有很多重要的区别.原作者:Robert Nielsen 原站:www.javawor ...

  8. JAVA构造器、this、super

    构造器是为了创建一个类的实例.这个过程也可以在创建一个对象的时候用到: Platypus p1 = new Platypus(); 相反,方法的作用是为了执行java代码. 修饰符,返回值和命名的不同 ...

  9. Java构造器的深入理解

    [构造器与方法的深入理解] 构造器的深入理解 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 [博客地址]http://www.cnblogs.com/grl2 ...

随机推荐

  1. nyoj 20-吝啬的国度 (DFS)

    20-吝啬的国度 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:12 submit:43 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有 ...

  2. nyoj 833-取石子(七) (摆成一圈,取相邻)

    833-取石子(七) 内存限制:64MB 时间限制:1000ms 特判: No 通过数:16 提交数:32 难度:1 题目描述: Yougth和Hrdv玩一个游戏,拿出n个石子摆成一圈,Yougth和 ...

  3. webpack3、4的基本的使用方法

    webpack的基本使用 webpack的安装 webpack的使用时需要借助 node 的环境的 在 node 中自动下载了 npm 这个包管理工具,之后的操作我们需要使用npm包管理工具进行相关操 ...

  4. Java虚拟机详解(九)------类文件结构

    我们知道计算机是由晶体管.电路板等组装而成的电子设备,而这些电子设备其实只能识别0与1的信号. 那么问题来了,我们在操作系统上编写的Java代码(由字母.数字等各种符号组成),打包后部署到服务器上,是 ...

  5. svn文件被锁不能提交的解决办法

    记录工作中遇到的问题,分享出来: 前端时间在提交项目到svn遇到一个问题, 提交的时候提示:文件已经锁定!如下图: 原因是我之前提交的时候不小心中途停了,导致文件被锁,然后也没在意那么多, 趁着今天有 ...

  6. Spring Cloud Alibaba(四)实现Dubbo服务消费

    本项目演示如何使用 Spring Cloud Alibaba 完成 Dubbo 的RPC调用. Spring Cloud与Dubbo Spring Cloud是一套完整的微服务架构方案 Dubbo是国 ...

  7. ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”

    首发于“生信补给站” https://mp.weixin.qq.com/s/fm69bw-3cww1YEW_kBcTHQ 更多关于R语言,ggplot2绘图,生信分析的内容,关注有惊喜

  8. scrapy知识补充--scrapy shell 及Spider

    什么是scrapy shell? Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试xpath或css表达是,来查看他们的工作方式,方便爬取页面中的数据 ...

  9. 测试访问apiserver状态

    目录 前言 创建admin证书和私钥 分发kubeconfig文件 检查集群信息 授权kube-apiserver访问kubelet API的权限 前言 到这里,ETCD集群.kube-nginx + ...

  10. CCNA 之 十一 NAT 子网地址转换

    NAT 网络地址转换 全称:Network Address Translation 为什么需要NAT? 因为公网IP(IPv4)地址紧缺,内容地址通过NAT转换成一个公有地址去访问公网资源: 如下图展 ...