初始化与清理

欢迎转载,转载烦请注明出处,谢谢。

https://www.cnblogs.com/sx-wuyj/p/11177257.html

1.用构造器确保初始化

  • java中通过提供构造器,可以确保每个对象都得到初始化.创建某个对象时,如果该对象具有构造器,java就会在用户有能力调用该对象之前自动调用该对象的构造器,从而保证了初始化的进行.

  • 构造器的命名:

       1. 因为取的任何名字都有可能与类的某个成员名称冲突.

       2. 必须让你编译器知道应该调用哪一个方法.

    所以构造器的命名和类名相同.在初始化期间要自动调用构造器.

class Rock{
Rock(){
System.out.println("这是一个构造器")
}
}

由于构造器的名字和类名完全相同,所以每个方法首字母小写的编码风格并不适用于构造器.

  • java当中有两种形式的构造器

      1. 无参构造器:也叫默认构造器.很多时候我们在定义某个实体类时并没有去编写构造器,但是对象依旧被初始化了,正是因为无参构造器的存在.
   class Rock{
Rock(){
System.out.println("这是一个无参构造器")
}
}

        1. 有参构造器:可以指定如何创建对象,可以在初始化对象时提供实际参数.参数可以是一个,也可以是参数.以下两种都是可以的.

   class Rock{
Rock(int i){
System.out.println("这是一个有参构造器")
} Rock(int i,String str){
System.out.println("这同样也是一个有参构造")
}
}

需要注意的是,构造器可以重载.另外如果没有定义构造器,那么java就会为我们创建一个无参构造器;如果定义了具体的构造器,那java就不会再为我们创建无参构造器,此时如果需要无参构造器那就需要我们手动创建了.正是因为会默认创建一个无参构造,所以确保了对象的初始化.

2. 方法重载

  • 2.1 区分重载方法

    每个重载方法都拥有独一无二的参数列表,可以根据参数的个数区分,甚至参数列表的顺序也可以用来区分重载方法,但是不建议这么做,不利于程序的后期维护.
  • 2.2涉及基本类型的重载

    如果传入的数据类型小于方法中声明的参数类型,实际数据类型就会被提升.

    如果传入的数据类型大于方法中声明的参数类型,就必须强制类型转换大类型转为小类型,不然编译器就会报错
  • 2.3 以返回值区分重载方法

    首先说明这种方式是错误的
class{

       method();
method(int x){
return x;
} int x = method(1);
}

这种情况下是可以的,可我们有时候并不关心方法的返回值是什么,比如method(); 这时候java应该调用哪个方法呢,所以以这种方式来区分方法重载是行不通的.

  • 2.4 this关键字

    this表示调用方法的对象的引用,this只能用在方法内部.
  • 2.5 清理:终结处理和垃圾回收
    • 对象可能不被垃圾回收

      只要程序没有濒临存储空间用完的那一刻,对象所占的空间总也得不到释放.制止程序运行结束,垃圾回收也一直没有释放你创建任何对象的存储空间,随着程序的退出,这些资源也将交由系统.因为垃圾回收本身也有开销,要是不使用他,就不需要支付这部分的开销.

      2.5.1 finalize()的用途

      finalize()主要用于通过某种创建对象以外的方式创建了对象,这种特殊情况主要是发生在使用了本地方法的情况下,本地方法是一种在java中调用非java代码的方式.

java初始化与清理的更多相关文章

  1. 图解 & 深入浅出Java初始化与清理:构造器必知必会

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  2. Java 初始化和清理

    初始化和清理是影响代码安全的两个重要因素. 一.初始化 1. 方法重载 构造器与类名相同,成为强制重载方法名的原因之一.重载规则:每个重载的方法必须拥有独一无二的参数类型列表.不能根据返回值来区分重载 ...

  3. [THINKING IN JAVA]初始化和清理

    4.5初始化和清理 5.1 构造器初始化 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象: 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类 ...

  4. Java 初始化与清理

    用构造器确保初始化 如何自定义构造器(constructor)? 构造器方法的名称与类名相同,并且没有返回值. 需要注意,在定义构方法时,方法名前面不要添加任何的类型说明符,格式:类名(){},构造方 ...

  5. 浅谈Java中的初始化和清理

    引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...

  6. Java编程思想——初始化与清理

    PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化   虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...

  7. Java的初始化与清理

    大家都知道,Java是站在巨人的肩上成功的,它是在C&C++的基础上进一步的开发,投入面向对象开发的怀抱.Java吸取了很多以前的教训,加入自己很多独创的方式.在程序语言发展初期,许多C程序员 ...

  8. Java编程思想学习(五)----第5章:初始化与清理

    随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...

  9. 《Java编程思想》——初始化与清理(一)读书笔记

    第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记

随机推荐

  1. Charles 下载

    本文参考:Charles 下载 Charles 下载 当前最新的版本是v4.2.8:官网下载页面:https://www.charlesproxy.com/latest-release/downloa ...

  2. [VB.NET Tips]再谈字符串连接之内置池

    CLR自动维护一个称为"内置池"(暂存池)(intern pool)的表,在编译时此表包含程序中声明的每个唯一的字符串常量的单个实例,以及以编程方式创建的String类的任何唯一实 ...

  3. [C++] 类的使用(1)

    1.类的基本思想是数据抽象和封装.数据抽象是一种依赖于接口和实现分离的编程(以及设计)技术. 2.常量对象,以及常量对象的引用或指针都只能调用常量成员函数.因为非常量成员函数有可能修改其作用的对象,与 ...

  4. JS中如何防止表单重复提交问题

    在登录页面html中写如下代码 <script type="text/javascript"> var issubmit=false; function dosubmi ...

  5. 基于Spark的电影推荐系统(电影网站)

    第一部分-电影网站: 软件架构: SpringBoot+Mybatis+JSP 项目描述:主要实现电影网站的展现 和 用户的所有动作的地方 技术选型: 技术 名称 官网 Spring Boot 容器 ...

  6. 环境搭建-Hadoop集群搭建

    环境搭建-Hadoop集群搭建 写在前面,前面我们快速搭建好了centos的集群环境,接下来,我们就来开始hadoop的集群的搭建工作 实验环境 Hadoop版本:CDH 5.7.0 这里,我想说一下 ...

  7. 安装pytest-allure-adaptor后,运行报错:AttributeError: module 'pytest' has no attribute 'allure'

    ​ 原因:因为pytest-allure-adaptor库基本被python3放弃了,运行很不友好,反正我运行就是报错 解决方法: 先卸载:pip uninstall pytest-allure-ad ...

  8. Spring 梳理-处理Multipart 请求

    原理讲解 简单的HTTP POST 大家通过HTTP向服务器发送POST请求提交数据,都是通过form表单提交的,代码如下: <form method="post"actio ...

  9. Vsftp服务-实战案例

    Vsftp 实验案例一:(本地用户) 试验版本:Linux7.X版本 公司内部现在有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文 件.创建目录.更新网页等等.公司 ...

  10. 使用freemarker做邮件发送模板

    1.解析工具类 package com.example.springbootfreemarker.utils; import freemarker.template.Configuration; im ...