Java构造方法

类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。

构造方法定义规则:Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void)。另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类的实例--对象。

示例:下面是一个 Rectangle 类的构造方法,它带有两个参数,分别表示矩形的长和宽:

1 public class Rectangle {
2     public Rectangle(int w, int h) {
3         width = w;
4         height = h;
5     }
6     public Rectangle() {}
7 }

每个类至少有一个构造方法。如果不写一个构造方法,Java 编程语言将提供一个默认的,该构造方法没有参数,而且方法体为空。如果一个类中已经定义了构造方法则系统不再提供默认的构造方法。

Java析构方法

当垃圾回收器将要释放无用对象的内存时,先调用该对象的finalize()方法。如果在程序终止前垃圾回收器始终没有执行垃圾回收操作,那么垃圾回收器将始终不会调用无用对象的finalize()方法。在Java的Object基类中提供了protected类型的finalize()方法,因此任何Java类都可以覆盖finalize()方法,通常,在析构方法中进行释放对象占用的相关资源的操作。

Java 虚拟机的垃圾回收操作对程序完全是透明的,因此程序无法预料某个无用对象的finalize()方法何时被调用。如果一个程序只占用少量内存,没有造成严重的内存需求,垃圾回收器可能没有释放那些无用对象占用的内存,因此这些对象的finalize()方法还没有被调用,程序就终止了。

程序即使显式调用System.gc()或Runtime.gc()方法,也不能保证垃圾回收操作一定执行,也就不能保证对象的finalize()方法一定被调用。

当垃圾回收器在执行finalize()方法的时候,如果出现了异常,垃圾回收器不会报告异常,程序继续正常运行。

@Override
protected void finalize(){System.out.println("in finalize");
}

在 Java 编程里面,一般不需要我们去写析构方法,这里只是了解一下就可以了。

转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/8383463.html

Java构造方法与析构方法实例剖析相关推荐

  1. java 构造方法和析构方法_PHP面向对象程序设计之构造方法和析构方法详解

    本文实例讲述了PHP面向对象程序设计之构造方法和析构方法.分享给大家供大家参考,具体如下: 构造方法和析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关.构造方法是对象创建完成后第一个被对象自 ...

  2. python中构造方法和析构方法的区别_类的构造方法、析构方法、实例方法

    类的构造方法.析构方法.实例方法 上一个小节我们学习了 Python 的类属性和实例属性的知识点,这个小节我们还是会学习关于类的知识.这节课我们会学习类的构造方法.析构方法和实例方法. 1. 实例方法 ...

  3. java构造方法和普通方法区别

    java构造方法和普通方法 构造方法 构造方法也叫做构造器,使用来创建一个实例对象的. 1.构造方法必须和类名一致,并且没有返回值 public class Test{public Test(){} ...

  4. 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载

    <?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载*/ //构造方法:当实例化对象时,自动运行的方法 /*class channel{func ...

  5. Java.io.File.getPath()方法实例

    转载自  Java.io.File.getPath()方法实例 java.io.File.getPath() 方法将抽象路径名到路径名字符串.为了分离名称的序列所产生的字符串使用默认名称分隔符. 声明 ...

  6. Java中的析构方法finalize

    Java中的析构方法finalize 在C++程序设计中有构造函数与析构函数的概念,并且是内存管理技术中相当重要的一部分,而在Java语言中只有构造器(也可以称为构造函数)的概念,却没有析构器或析构函 ...

  7. Java 程序连接 Informix 数据库方法实例介绍

    Java 程序连接 Informix 数据库方法实例介绍 Informix 是一种应用广泛的关系型数据库服务器,支持多种类型的客户端连接程序,包括 .Net.Java.PHP 等.对于 Java 程序 ...

  8. python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究

    基于 Python 构造方法与析构方法的研究 林观德 [期刊名称] < <现代职业教育> > [年 ( 卷 ), 期] 2019(000)018 [摘要] Python 语言是 ...

  9. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第32讲:PHP 构造方法、析构方法

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第32讲:PHP 构造方法.析构方法 构造方法__construct()的主要作用是完成对新对象的初始化,没有返回值,析构方法__destruct的作用主要用 ...

最新文章

  1. 对现有代码的分析方法随想
  2. SQLServer之创建非聚集索引
  3. 关于【C++项目:无法解析的外部符号】
  4. 匿名函数、冒泡排序,二分法, 递归
  5. memcached的java客户端_Memcached Java客户端
  6. Android工程中三种库的区别:Private Libraries、Referenced Libraries、Dependency Libraries
  7. iBatis下使用like查询,以及需要注意的问题
  8. android main system log,android日志缓冲区,system,radio,main,events是什么意思啊?
  9. Super超图,GIS软件
  10. zerorpc java_Zerorpc 支持暴露多个远程Api接口类
  11. HTML5开发手机项目—个人总结
  12. python多线程实现同时下载_Python实现多线程下载
  13. 【VSLAM学习记录2】初识cmake
  14. 求1到20的阶乘之和
  15. 有限元基础(一) Jacobian 矩阵和高斯积分
  16. 图片短链接生成器在线
  17. while循环的用法
  18. 民工哥读者中秋福利!包邮送书!
  19. Windows HANDLE是什么
  20. 关于Likelihood 和 Probability的差别

热门文章

  1. 多线程socket 端口扫描程序,实现了,但是速度不行,求指点。
  2. 【android】ActivityGroup初体验
  3. DelphiX教程系列 3 - 动画 part 1
  4. 道指mt4代码_道恩转债上市首日遭大股东清仓式减持!
  5. cas .net 重定向循环_接口测试平台接入企业cas(一)
  6. feign直接走熔断_SpringCloud微服务面试必问:Hystrix 服务降级、熔断
  7. android京东首页轮播代码,仿京东商品详情轮播图
  8. Eclipse安装STS插件并解决安装缓慢问题
  9. 字节新产品「识区APP」上线
  10. 什么是中台业务架构?