第五章 初始化与清理(上)

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图 本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油! 阅读详情

 

                                                   第五章 初始化与清理(上)
 
        我已经看过第二、三、四章的内容,发现讲解的都是一些很基本的东西,所以这里就不做详细总结了,我还得继续看后面更重要的内容,并且尝试理解清楚,后面的东西非常重要,但同时又很难,所以总结起来会花费很长时间,现在继续努力。
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一。
初始化和清理正式涉及安全的两个问题。
 
5.1 用构造器确保初始化
      在Java中构造器采用与类相同的名称,通过构造器,类的设计者可确保每个对象都会得到初始化,如果类中具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行。每个类中都有一个默认的构造器(即里边没有任何参数)。所以只要创建对象,构造器就会执行。如果有多个构造器,那么就会根据你创建的对象来区分了。
      构造器是一种特殊类型的方法,因为它没有返回值。这与返回值为空(void)明显不同。对应空返回值,尽管方法本身不会自动返回什么,但仍可选择让它返回别的东西。构造器则不会。当然new表达式确实返回了对创建对象的引用,但本身不返回任何返回值。假如构造器有返回值,并且允许人们自行选择返回类型,那么势必得让编译器知道该如何处理此返回值。
 
5.2 方法重载
     为什么会有方法重载?
     第一:方法名其实是我们对某个动作取的名字,一个好的名字可以使系统更易于理解和修改。当对明显相同的概念取不同的名字会让人很难理解,因此有了方法重载就很好的解决了这个问题。在现实生活中会出现一样的人的名字,但是我们可以通过其它的条件来唯一标识。
    第二:构造器是强制重载方法名的另一个原因。因为构造器的名字已经由类名所决定,就只能有一个构造器名。那如果想用多种方式创建一个对象应该怎么办?假设要创建一个类,既可以用标准的方式进行初始化,也可以从文件里读取信息来初始化。这就需要两个构造器,一个是默认构造器,另一个里边得有一个字符串作为形式参数的构造器,所以为了让方法名相同而形式参数不同的构造器同时存在,必须用到方法重载。尽管方法重载是构造器必需的,但它亦可应用与其他方法,且用法同样方便。
 
5.2.1 区分重载方法 
        要是几个方法都有相同的名字,那么区分规则其实很简单:每个重载的方法都必须有一个独一无二的参数类型列表。
        注:参数类型的个数相同但顺序不同也可以区分,不过一般情况不推荐,因为这会使代码难以维护。
5.2.2 涉及基本类型的重载
        如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型会被提示。char型略有不同,如果无法找到恰好接受int型参数,它会把char直接提升至int型。例如传入的实际参数是int型,然后传入重载方法中为long型的方法,则int型会转换成long型。
       如果传入的数据类型(实际参数类型)大于方法中声明的形式参数类型,就得通过类型转换来执行窄化转换。如果不这样,编译器就会报错。
5.2.3 以返回值区分重载方法
       首先可以确认这种方法是错误的。例如:
       void f(){}
       int f(){return 1;}
       然后调用的时候是int x=f();,那么这样的确可以区分重载方法,但是有时候我们并不关心方法的返回值,你想要的是其他效果,然后就忽略其返回值。所以,如果像下面这样调用方法:
        f();
      此时Java如果才能判断该调用哪一个f()呢?别人该如何理解?因此,根据方法的返回值来区分重载方法是行不通的。
 
5.3 默认构造器
     如前所述,默认构造器(又名“无参”构造器)是没有形式参数的——它的作用是创建一个“默认对象”。如果你写的类中没有构造器,则编译器会自动帮你创建一个默认构造器。
      注:当你自己定义了一个有形式参数的构造器时,如果你new Bird();这样写,编译器肯定报错:没有找到匹配的构造器。这就好比,要是你没有提供构造器,编译器认为“你需要一个构造器,让我给你制造一个吧”;但假如你已经写了一个构造器,编译器则认为“啊,你已经写了一个构造器,所以你知道你做什么;你是刻意省略了默认构造器”。
 
5.4 this关键字
      this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。this的用法和其他对象引用并无不同。但要注意,如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。因为编译器能自动帮你添加的。
     当需要返回对当前对象的引用时,就常常在returne语句中这样写:
      public class Leaf {
     int i = 0;
     Leaf increment() {
          i++;
          return this;
     }
     void print() {
          System.out.println("i=" + i);
     }

     public static void main(String[] args) {
          Leaf x=new Leaf();
          x.increment().increment().increment().print();;
     }
 
}
 
运行结果: i=3
 
5.4.1 在构造器中调用构造器
        看懂这段代码就明白了:
public class Flower{
	int petalCount = 0;
	String s = "initial value";
	public Flower(int petals){
		petalCount = petals;
		System.out.println("Constructor int arg only, petalCount=" + petalCount);
	}
	public Flower(String ss){
		System.out.println("Constructor int arg only, ss=" + ss);
		s = ss;
	}
	public Flower(String s,int petals){
		this(petals);
		this.s=s;
		System.out.println("String & int args");
	}
	public Flower(){
		this("hi", 47);
		System.out.println("default contructor");
	}
	public void printpetalCount(){
		System.out.println("printpetalCount=" + petalCount + ", s=" + s);
	}

	public static void main(String[] args) {
		Flower x=new Flower();
		x.printpetalCount();

	}
}

运行结果:

Constructor int arg only, petalCount=47
String & int args
default contructor
printpetalCount=47, s=hi

5.4.2 static的含义

        了解this关键字之后,就能更全面地理解static(静态)方法的含义。static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以。。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正式static方法的主要用途。它很像全局方法。因为只需要通过类就可以访问到static方法和static域。
 

 

vue2学习笔记2-老规矩,从Hello World开始,了解Vue实例和模板 想要把“Hello,World”放置在页面上,首先需要准备一个HTML的块级元素div,来承接内容。 阅读详情

相关推荐

5张图,搞懂三方支付机构的“备付金账户”体系

本文将详细解析第三方支付机构各类备付金账户的功能定位、所承载的支付业务处理流程以及日常管理。

银行信息系统应用架构详解 2141

第五章:初始化与清理

第五章 初始化与清理 初始化和清理正是涉及安全的两个问题,Java中也引入了构造器,并额外提供了垃圾回收器 5.1 用构造器确保初始化 构造方法会在new对象的时候,也就是我们调用对象之前去执行一些初始化的操作 那么我们也可以在构造方法中去传参 如果某一种构造器是类中唯一的构造器,编译器不会允许你以其他任何方式创建该对象 练习1、创建一个类,初始化String为null pub...

pengbo6665631的博客 579

ANSYS 有限元分析 接触分析

目 录一、前沿二、接触单元类三、接触单元关键选项3.1 CONTA174 KeyOption3.2 TARGE170 KeyOption四、接触分析标准步骤4.1 定义实常数4.2 定义接触和目标单元4.3 创建接触和目标单元五、接触分析实例5.1 MPC5.2 标准接触六、尾声七、参考文献 阿阳的 ANSYS 使用指南,本文仅用于个人学习,除此之外,无其他任何用途。 ANSYS 有限元分析 概述 ANSYS 有限元分析 坐标系/工作平面 ANSYS 有限元分析 几何建模 ANSY

Hulunbuir 4万+

第五章 初始化与清理

Java编程思想 第五章 初始化与清理

小付想暴富敷敷富富的博客 1455

平面变压器PCB绕组设计实战:从原理到布局的工程考量

本文深入探讨了平面变压器PCB绕组设计的工程实践,从基础原理到布局优化,涵盖了电流密度、层间绝缘、绕组拓扑结构等关键参数。通过实战案例分享,解析了高频应用中的集肤效应、邻近效应等挑战,并提供了热管理和EMC优化的实用技巧,助力工程师在服务器电源、车载充电器等空间敏感场景实现高效设计。

weixin_42666036的博客 452

华为嵌入式面试题及参考答案(持续更新)

异步是指在程序执行过程中,某些任务不需要等待立即完成就可以继续执行其他任务的过程。在计算机编程中,异步通常用于处理长时间运行的操作,如文件读写、网络通信等,以避免阻塞主线程。异步处理通常涉及到回调函数、事件循环、协程或未来的概念。使用宏定义来避免命名冲突。#else#endif堆和栈是计算机程序中用于存储数据的两种不同类型的内存区域。

大模型大数据攻城狮的专栏 2480

《Java编程思想》读书笔记:第五章 初始化与清理

目录5.1用构造器确保初始化5.2方法重载5.2.1区分重载方法5.2.2涉及基本类型的重载5.2.3以返回值区分重载方法5.3默认构造器5.4this关键字5.4.1在构造器中调用构造器5.4.2static的含义5.5清理:终结处理和垃圾回收5.5.1finalize()的用途何在5.5.2你必须实施清理5.5.3终结条件5.5.4垃圾回收器如何工作5.6成员初始化5.6.1指定初始化5.7构造器初始化5.7.1初始化顺序5.7.2静态数据的初始化5.7.3显示的静态初始化5.7.4非静态实例初始化5.

Mr_Kian的博客 917

KEPServerEX 6 之 lot Gateway MQTT Clinet 配置使用方式

IoT Gateway即Internet of Things Gateway物联网网关。 ---------------------------------------------------------------------------------- 方式:使用kepw的IOTGateway插件选择MQTTClient 解决:可以实现 KEPW 的Tag值 发送到 MQTT 服务器上 ----------------------------------------...

-雲飛兄-博客 6937

第五章 初始化和清理

第五章 初始化和清理第五章 初始化和清理5.1 用构造器确保初始化练习1 :创建一个类,它包含一个未初始化的String引用,验证该引用被Java初始化成null创建一个类,它包含一个在定义时候就被初始化了String域,以及另一个通过构造器初始化的String域5.2 方法重载5.2.1 区分重载方法设计基本类型的重载5.2.3 已返回值区分重载方法5.3 默认构造器 第五章 初始化和清理 初始化变量和清理数据 5.1 用构造器确保初始化 假设为每个类都定义一个initialize方法,该方法提醒你在使用

lglgf的博客 295

Spark Catalog详解

旁边的实习生说:我想要用spark代码中对hive库中的内部表和外部表进行删除(包括数据),咋感觉网上搜了一圈都找不到解决方案啊,spark这么鸡肋吗?我:你应该静下心来好好把spark基础知识进行全面学习。实习生:难道spark有这功能,而我没有学习过?咋弄啊?我:学习一下Spark Catalog。实习生:啥是Catalog啊?Spark Catalog是Spark SQL中的一个元数据管理组件,它提供了一个集中化的存储和查询表、视图和函数的位置。

SunnyRivers 1813

unity从3D升级到urp管线,打包ab包后,材质全部变紫色

确保材质中的被转换为 URP 兼容的着色器。在打包 AssetBundle 时,确保所需的着色器被正确打包。确保运行 AB 包的目标项目中正确配置了 URP 渲染管线。如果加载后材质丢失,检查 AB 包的加载逻辑,确保材质正确应用了着色器。通过这些步骤,你应该能够解决从标准渲染管线切换到 URP 渲染管线后,材质在 AB 包中变紫色的问题。如果问题仍然存在,请根据具体错误日志进一步排查。希望如上措施及解决方案能够帮到有需要的你。

**My Coding Family** 1962

第五章笔记:初始化与清理

记录一下好的描述以及不知道的问题(会附带书中页码) (P77)在Java中,“初始化”和“创建”捆绑在一起,两者不能分离 (P77)构造器没有返回值,但是和返回值为空的(void)不同。   对于空返回值,尽管方法不会自动返回什么,但仍可选择让它返回别的东西。   构造器则不会返回任何东西,你别无选择(new表达式确实返回了对新建对象的引用,但构造器本身并没有任何返回值) (P81)重载方法中的...

LuM523的博客 286

FM20S用户手册-PL端案例开发手册

为便于演示,本次操作直接将led_flash案例中的 "led_flash_fm20s\constraints\constrs_1Ved_flash_fm20s.fdc"文件全部代码拷贝至编辑 界面,并点击保存按钮。引脚约束请查看案例工程"led_flash\project\led_flash_fm20s\constraints\constrs_1\"目 录下的led_flash_fm20sfdc。(4)弹出如下界面,在界面配置Select device forthe project"内容,如下图。

创龙,嵌入式一体化解决方案商 399
上一篇: 《Java编程思想》(第4版)学习总结
下一篇: 第五章 初始化与清理(下)
OODeveloper
博客等级 码龄12年 43粉丝 137原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值