java初始化与清理
初始化与清理
欢迎转载,转载烦请注明出处,谢谢。
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初始化与清理的更多相关文章
- 图解 & 深入浅出Java初始化与清理:构造器必知必会
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- Java 初始化和清理
初始化和清理是影响代码安全的两个重要因素. 一.初始化 1. 方法重载 构造器与类名相同,成为强制重载方法名的原因之一.重载规则:每个重载的方法必须拥有独一无二的参数类型列表.不能根据返回值来区分重载 ...
- [THINKING IN JAVA]初始化和清理
4.5初始化和清理 5.1 构造器初始化 无参:如果一个类没有构造器,那么会有一个默认的无参构造器,并且只能通过无参构造器初始化对象: 带参:传入参数初始化成员变量或者其它初始化操作需要的参数,如果类 ...
- Java 初始化与清理
用构造器确保初始化 如何自定义构造器(constructor)? 构造器方法的名称与类名相同,并且没有返回值. 需要注意,在定义构方法时,方法名前面不要添加任何的类型说明符,格式:类名(){},构造方 ...
- 浅谈Java中的初始化和清理
引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...
- Java编程思想——初始化与清理
PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化 虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...
- Java的初始化与清理
大家都知道,Java是站在巨人的肩上成功的,它是在C&C++的基础上进一步的开发,投入面向对象开发的怀抱.Java吸取了很多以前的教训,加入自己很多独创的方式.在程序语言发展初期,许多C程序员 ...
- Java编程思想学习(五)----第5章:初始化与清理
随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一. C++引入了构造嚣(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法.Java中也采用了构造器,并 ...
- 《Java编程思想》——初始化与清理(一)读书笔记
第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记
随机推荐
- Day 21 进程管理
1.什么是进程 比如: 开发写的代码我们称为程序,那么将开发的代码运行起来.我们称为进程. 总结一句话就是: 当我们运行一个程序,那么我们将运行的程序叫进程. PS1: 当程序运行为进程后,系统会为该 ...
- C#面试题目整理(一)
1.您在什么情况下会用到虚方法?它与接口有什么不同?当子类需要重新定义父类的一个方法时,父类的方法需要定义为虚方法:在定义接口的时候不能又方法体,但是虚方法可以有方法体,实现时,子类可以不实现父类的虚 ...
- python里的while循环和if循环
一.循环的概念 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,常见的有按照次数循环和按条件循环. 二.循环的基本格式 (while循环的基本格式) a=1#定义一个数 while a==1 ...
- 编写优雅代码,从挖掉恶心的if/else 开始
背景 长话短说, 作为开发人员经常需要根据条件灵活查询数据库,不管你是用rawsql 还是EFCore, 以下类似伪代码大家都可能遇到: /// <summary> /// 灵活查询 能耗 ...
- [原创] Matlab 指派问题模型代码
指派问题的基本内容 一般来说指派问题解决的是如何将任务分配到人,使得任务完成的效益最大化(成本型效益则求最小值,利润型效益则求最大值).上述问题一个 0 - 1 整数规划问题. 问题围绕着任务和人展开 ...
- 安全性测试:OWASP ZAP 2.8 使用指南(三):ZAP代理设置
ZAP本地代理设置 如前文所言,ZAP的工作机制,是通过“中间代理”的形式实现. ZAP的代理设置可以从菜单中的:工具 - 选项 - Local Proxies加载. 在这里可以设置ZAP用来接受接入 ...
- 转:sqlserver 存储毫秒23:59:59.999变成第二天00:00:00.000
因为,在SQL SERVER中DATETIME表示的时间为00:00:00到23:59:59.997,它的时间精度为1/300秒,在使用时会舍入到舍入到 .000..003 或 .007 秒三个增量. ...
- 基于操作系统原理的Linux的内存管理
一.实验目的 1.理解虚拟内存.磁盘缓存的概念. 2.掌握基本的内存管理知识. 3.掌握查看实时查看内存.内存回收的方法 二.实验内容 1. 监控内存使用情况 2. 检查和回收内容 三.实验平台 1. ...
- JS中数据类型转换
JS中数据类型转换汇总 JS中的数据类型分为 [基本数据类型] 数字 number 字符串 string 布尔 boolean 空 null 未定义 undefined [引用数据类型] 对象 obj ...
- 23种设计模式之工厂方法(Factory Method Pattern)
工厂方法 前面我们学习了简单工厂,发现一个问题就是简单工厂集合了矛盾,为了解决这个问题我们针对每一种产品提供一个工厂类.通过不同的工厂实例来创建不同的产品实例.在同一等级结构中,支持增加任意产品这种设 ...