【Java笔记】类的构造器究竟做了什么?

Scala中的类和构造器 Scala中的类 摘要 网络上很多资料讲得不清不楚的,有些甚至是片面的错误的,看语言应该是直接用翻译器将英文翻译成中文。所以依照着网上的一些说法和自己的实验重新将一些概念和定义讲解一些。 scala编译器会自动为类中的字段添加getter方法和setter方法 可以自定义getter/setter方法来替换掉编译器自动产生的方法 用@BeanProperty注解来生成JavaBeans 阅读详情

    学习过面向对象程序设计语言的人都知道,类的构造函数用来初始化对象的。C++有三种类型的构造器:默认构造函数、拷贝构造函数、带参构造函数,Java中只有两种也就是C++的前两种。在学习类的时候,书本或者资料都会这么说:类都要有构造器,它是用来初始化类的对象的。下面笔者要介绍一下,构造器究竟干了什么?

public class Test {
    
    public static void main(String args[]) {

        new Test();

    }
    public Test() {

        System.out.println("Test()");
        obj1 = new Obj(4);
        obj2 = new Obj(5);
        obj3 = new Obj(6);

    }
    public Obj obj1 = new Obj(1);
    public Obj obj2 = new Obj(2);
    public Obj obj3 = new Obj();

}
class Obj {
    
    public Obj() {

        System.out.println("Obj()");

    }
    public Obj(int a) {
    
        this.a = a;        <pre name="code" class="java">        System.out.println("Obj(" + a + ")");

}
public int a;

}


    上面就是一个非常简单的代码。执行构造器的时候,肯定会打印出:

        Test()

        Obj(4)

        Obj(5)

        Obj(6)

    但是实际编译并且运行一下,会发现程序输出结果是:

        Obj(1)

        Obj(2)

        Obj()

        Test()

        Obj(4)

        Obj(5)

        Obj(6)

    很明显,构造器并不是先被调用的。其实早在构造器执行之前,虚拟机早就已经将对象给构造好了(即在堆中分配了内存空间,并且给赋予初始值。基本类型的初始值是0/false;引用类型的初始值是null。),最好才调用了类的构造器。至于在构造器里再给对象的域赋值,那就是后话了。所以,如果在构造器中给域赋值了,那么实际上对象的域已经被初始化两次:一次是在构造器运行之前,一次是在构造器运行时。因此,不要把这一切的工作都认为是构造器完成的。

    其实,如果继续追究(也就是对象/类的初始化顺序)的话,就不得不提,静态代码块和构造代码块了。请看笔者专门讲述这一片内容的文章。


GD32F103实战:用ADC+DMA实现高精度多通道电压采集与OLED实时显示(附完整工程) 本文详细介绍了如何利用GD32F103的ADC+DMA技术实现高精度多通道电压采集,并通过OLED实时显示数据。文章包含硬件架构设计、ADC配置技巧、DMA传输优化及显示系统实现方案,提供完整工程代码和调试指南,适用于工业传感器和环境监测设备开发。 阅读详情

相关推荐

【课程设计】TCP/IP 应用环境中服务器的部署与实现

本项目旨在通过搭建一个虚拟网络环境,实现软路由系统的配置和服务器的搭建与测试。具体包括安装虚拟机 VMWare Workstation,安装 Windows Server 2003 操作系统,配置软路由系统(包括双网卡安装、协议配置和测试),以及搭建并测试 DHCP 服务、DNS 服务、WWW 服务、FTP 服务和 SMTP/POP3 服务。

weixin_74907236的博客 1524

java构造方法的功能_Java 构造器原理及用法解析

导读构造器是编程的强大组件。使用它们来释放 Java 的全部潜力。在开源、跨平台编程领域,Java 无疑(?)是无可争议的重量级语言。尽管有许多伟大的跨平台框架,但很少有像 Java 那样统一和直接的。当然,Java 也是一种非常复杂的语言,具有自己的微妙之处和惯例。Java 中与构造器 constructor有关的最常见问题之一是:它们是什么,它们的作用是什么?简而言之:构造器是在 Java 中...

weixin_29208327的博客 425

拌合楼管理软件开发(十一) 海康威视车牌识别摄像头安装调试,总算是跑通了。

/保存的文件个数这里之所以需要用到委托,直接更新textbox文本中的内容,以及复制picturebox的image会提示不是从齐创建的线程调用。

morsth的博客 4814

java构造器(默认构造方法、参数化构造方法)

构造器 构造器也叫构造方法、构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化。构造器的用处是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。 有两种类型的构造方法: 1、默认构造方法(无参数构造方法) 2、参数化构造方法 java默认的构造方法是无参的。 新建一个Person类,再用new实例化person对象。运行后会生成一个Person.class对象。 public class Demo02 { public static void main(S

卓汶的博客 9258

ENVI学习总结(十二)——基于改进的 CASA 模型反演 NPP

基于改进的 CASA 模型反演 NPP 数据为地理空间数据云提供的 TM 影像,其具体信息如图 1 所示。该实验中所使用的 TM 数据已进行过 QUAC 快速大气校正,来消除大气和光照等因素对地物反射的影响。Landsat 主题成像仪(TM)是 Landsat4 和 Landsat5 携带的传感器,每 16 天扫描同一地区,即 16 天覆盖全球一次。 TM 影像包含 7 个波段,波段 1-5 ...

Arcgiser的博客 3万+

PointNet++改进策略目录

后续我将如何使用文章中创新点加入的PointNet++中代码实现部分进行更新。

u012901740的博客 2196

Java中构造器的作用(小白学习之路)

Java中的构造器,一般来说是进行初始化。在运行时刻,可以通过调用方法或执行某些动作来确定初始值,例如: package practise; public class Practise2 {     int i;     Practise2(int j){         System.out.println(i);         i=j+1;              } package...

qq_42095586的博客 5889

OpenHarmony WebView引擎:从Chromium魔改到分布式渲染的终极解析

ArkWeb框架提供了强大的Web应用开发能力,但同时也需要注意网络安全问题,尤其是跨域请求方面。

m0_67505153的博客 1195

Java中的constructor

Java中的构造方法总结 今天写代码突然发现Java的构造方法也有不少说法呢,闲来无事,总结一下: 构造方法和实例方法的区别: 一、主要的区别在于三个方面:修饰符、返回值、命名 1、和实例方法一样,构造器可以有任何访问的修饰符,public、private、protected或者没有修饰符 ,都可以对构造方法进行修饰。不同于实例方法的是构造方法不能有任何非访问性质的修饰符修饰,例如sta...

445822357 3088

UG二次开发GRIP刻字

UG二次开发GRIP刻字

qq285503851的博客 1138

CAPL编程规范与最佳实践

通过本文的学习,读者应该对CAPL编程规范与最佳实践有了初步的了解,并能够编写高质量的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1747

在java中什么是类的构造器_[Java笔记]类的构造器究竟做了什么?

学习过面向对象程序设计语言的人都知道,类的构造函数用来初始化对象的。C++有三种类型的构造器:默认构造函数、拷贝构造函数、带参构造函数,Java中只有两种也就是C++的前两种。在学习类的时候,书本或者资料都会这么说:类都要有构造器,它是用来初始化类的对象的。下面笔者要介绍一下,构造器究竟干了什么?public class Test {public static void main(String a...

weixin_39956182的博客 213

顶级AI大模型白嫖ChatGPT Plus1个月,0成本薅顶配功能

Chat*** Plus限时免费1个月!原价20美元/月的顶配功能

BUG猿的博客 7276

Java构造器

构造器的讲解通俗易懂,看完仿佛打开了通往新世界的大门!

高冷的上官梓芸的博客 590

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java 类的构造器

尚硅谷java学习笔记 /** * 类的第三个成员变量:构造器(constructor 构造方法) constructor:建造者 构造器的作用: 1、创建对象 2、给创建的对象属性赋值 ; * * 1、设计类时,如不显示声明类的构造器 的话,程序会默认提供一个空参的构造器 ; 2、一旦显示的定义类的构造器,那么默认的构造器就不在提供, * 3、如何声明类的构造器。 ...

dzdffg的博客 4722

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java中类的三大结构:属性、方法、构造器

java中类的三大结构:属性、方法、构造器一、类的成员之一:属性(field)1、语法格式:2、变量的分类:成员变量与局部变量3、成员变量(属性)和局部变量的区别?4、对象属性的默认初始化赋值二、类的成员之二:方法(method)1、什么是方法(method、函数):2、方法的声明格式:3、方法的分类:按照是否有形参及返回值4、方法的调用5、对象数组的内存解析6、方法的重载7、可变个数的形参8、方...

仰望与追逐的博客 7063

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java中类的构造器

java中类的构造器 1.构造器的特征 它具有与类相同的名称 它不声明返回值类型。(与声明为void不同) 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值 2.构造器的作用 创建对象;给对象进行初始化 如:Order o = new Order(); Person p = new Person(“Peter”,15); 如同我们规定每个“人”一出生就必须先洗澡,我们就可在“人”的构造器中加入完成“洗澡”的程序代码,于是每个

xiaotai1234的博客 3277

Java类——深入构造器

一、使用构造器 \quad构造器是一个特殊的方法,用于创建类的实例。Java语言中构造器是创建对象的重要途经,因此,Java类必须包含一个或一个以上的构造函数。 \quad构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统为这个对象的属性进行默认初始化+将所有的基本类型设为0或false,将所有的引用类型设置为null。我们可以在构造器中改变这种默认的初始化,如下面程序所示: pu...

qq_40438165的博客 1397

JAVA-构造器

构造器 用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义。 构造器的名称必须与类名同名,包括大小写。 构造器没有返回值,但也不能写void,也不能写return。 构造器的参数:一般是初始化对象的前提条件。 用new调用!且对象一建立,构造器就运行且仅运行一次。一般方法可被调用多次。 类一定有构造器!这是真的,不需要质疑! 如果类没有声明(定义)任...

CSII@王大仙的博客 7974

Java构造器【总结】

家人们,今天关于 Java 构造器的知识就跟你们唠到这儿啦。从为什么要有构造器,到它的样子、用法,还有重载和默认构造器这些要点,希望你们都有了一个清晰的认识。构造器虽然看起来只是一个小小的语法点,但它对于我们创建和管理对象起着至关重要的作用,是 Java 编程中不可或缺的一部分。要是之后我又学到什么好玩的编程知识,再回来跟大伙分享,祝家人们生活愉快,拜拜!

潜意识Java的博客 1396

Scala类和构造器 下

在java中如果一个类只允许创建一个对象,那么就把这个对象称为单例对象,创建单例类的条件是构造器必须私有化。class关键字后的()中定义了参数类型用“,”分隔定义的多个参数,identifier表示参数的名字,type表示参数的数据类型,有参的参数名和参数类型是必须的,而var val关键字是。当同名的类和单例对象在同一源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。当声明一个类时,只有一个构造器。当同名的类和单例对象在同一源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。

2402_87076376的博客 1830

Java:浅谈类的构造器

文章目录0. 预备1. 类定义2. 构造器3. 例子 0. 预备 阅读本篇需要你预先了解 Java 中类的基本知识。 世间一切皆对象; 类是对象的模板; 类包含属性、方法、静态成员和静态方法。 类可以继承。 1. 类定义 [访问修饰符] class 类名称 [extends 父类名称] { [访问修饰符] 类型 成员名; [访问修饰符] 类型 方法名; } 2. 构造器 构造器是和类名同名,且不返回任何东西的方法。 构造器可以重载。 3. 例子 有一个 “Person” 类,有四个属性:姓

PursueLuo的博客 661

类构造器<clinit>(),实例构造器<init>()

clinit>()()和()这两个构造器的产生实际上是一种代码收敛的过程编译器会把1、(对于实例构造器而言是“{}”块,对于类构造器而言是“static{}”块2、(对于实例构造器而言是实例变量,对于类构造器而言是类变量3、仅仅是实例构造器()方法中无须调用父类的()方法,Java虚拟机会自动保证父类构造器的正确执行)等操作收敛到()和()方法之中。并且保证。

张紫娃的博客 1866

Java中类的构造器

1、什么是构造器 在Java中,构造器就好比是工具,而new关键字就是工人,通过new关键字和构造器结合来创建对象。在Java语言当中,构造器又称之为构造方法。 2、构造器的作用 (1)  创建(构造)对象 (2)  初始化实例对象(给创建的对象的属性赋值) 3、构造器的特点 (1)  构造器和类具有相同的名字 (2)  一个类可以有多个构造器 (3)  构造器可以有0个

StevenXu的专栏 1727

JAVA中在本类的一个构造器中调用其他构造器

我们在一个类中,可以在一个构造器中显式的调用本类的其他构造器。 如: public class Person { private String name; //构造器一 public Person() { } //构造器二 public Person(String name) { this(); ...

weixin_45359574的博客 3198

java类的成员之一:构造器(构造方法)

构造器的特征 它具有与类相同的名称 它不声明返回值类型。(与声明为void不同) 不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值 构造器的作用:创建对象;给对象进行初始化 如:Order o = new Order(); Person p = new Person(“Peter”,15); 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器...

weixin_60946155的博客 5177
上一篇: 【环境搭建】配置Java环境变量
下一篇: 【Java笔记】静态代码块和构造代码块详解
林帅帅
博客等级 码龄12年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值