当前位置: 首页 > 编程日记 > 正文

《Effective Java》读书笔记--创建和销毁对象

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

考虑用静态工厂方法代替构造函数。

当我们在写一个工具类时,是不希望用户将该类实例化的,所以应该定义一个private的构造函数,而不
是将类声明成abstract,因为这样用户可以继承该类,子类可以被实例化。

String类型是非可变对象,如下代码中,s指向的String的值是不能被更改的,当s重新赋值时,s就指向另一个String对象。
String s = new String("silly");
上句代码每次执行都会创建一个新的String实例,建议用 String s = "silly";代替上一句,这样的话,对于同一个虚拟机中运行的代码,每次执行该句时,因为它们包含相同的字符串字面常量"silly",该对象就会重用,避免创建重复对象。

过期的引用应该手动将它赋值成null,这有两个好处:

  • 让垃圾回收机制及早清理掉这些“垃圾”,提高程序的性能。
  • 如果它们在以后又被错误地解引用,则程序会立即抛出NullPointerException异常,而不是悄悄的错误运行。
不要把JAVA的finalizer当成C++的构造函数。因为JAVA的对象不可达时,finalizer函数不确定何时才能执行。不建议把释放资源的操作写在finalizer中,应该显式的提供一个close()函数给用户手动释放资源。

转载于:https://my.oschina.net/u/1453800/blog/229446

相关文章:

用chrome的snippets片段功能创建页面js外挂程序,从控制台创建js小脚本

用chrome的snippets片段功能创建页面js外挂程序,从控制台创建js小脚本 Chrome的snippets是小脚本,还可以创作并在Chrome DevTools的来源面板中执行。可以访问和从任何页面运行它们。当你运行一个片段,它从当前打开的页面的上下文中执行。 要创…

两个类相互包含引用的问题--类前向声明

在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { int i; B b; } class B { int i; A* a; } 请注意上面的定义内…

Java项目:网上电子书城项目(java+SSM+JSP+maven+Mysql)

源码获取:博客首页 "资源" 里下载! 项目描述: spring mvc jsp实现的简单书城项目,可以在支付宝沙箱内实现支付 运行环境: jdk8tomcat9mysqlIntelliJ IDEA 项目技术: springspring mvcmybati…

[nowCoder] 局部最小值位置

定义局部最小的概念。arr长度为1时&#xff0c;arr[0]是局部最小。arr的长度为N(N>1)时&#xff0c;如果arr[0]<arr[1]&#xff0c;那么arr[0]是局部最小&#xff1b;如果arr[N-1]<arr[N-2]&#xff0c;那么arr[N-1]是局部最小&#xff1b;如果0<i<N-1&#xff…

log parser 微软iis 日志分析

Log Parser 2.2 您可以从 Microsoft 下载中心下载 Log Parser。 Log Parser 2.2 是一个功能强大的通用工具&#xff0c;它可对基于文本的数据&#xff08;如日志文件、XML 文件和 CSV 文件&#xff09;以及 Windows 操作系统上的重要数据源&#xff08;如事件日志、注册表、文件…

ubuntu 大小写指示的小工具

最近买个了小本lenovo x100e&#xff0c;结果发现这小本没有大小写指示灯&#xff0c;在windows用也无妨&#xff0c;不过我常常用这本在ubuntu中调试linux代码&#xff0c;vi 常用的编辑器&#xff0c;熟悉的都知道&#xff0c;大小写很关键的&#xff0c;用google搜了一下&am…

mysql主键约束和唯一性约束

主键约束和唯一性约束都是索引&#xff0c;它们的区别是&#xff1a; 主键字段可以确保唯一性&#xff0c;但主键字段不能为NULL.唯一性约束可以确保唯一性&#xff0c;但唯一性约束的字段可以为NULL唯一性约束对含有NULL的记录不起作用&#xff0c;即可以重复加入含有NULL的记…

Java项目:农资采购销售系统(java+SSM+Easyui+maven+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 项目描述&#xff1a; 一个完整的农资采购销售系统&#xff0c;系统分为前台会员注册登陆&#xff0c;农资信息浏览&#xff0c;农资详情信息查看&#xff0c;加入购物车&#xff0c;提交订单&#xff0c;付…

springMVC 拦截器

为什么80%的码农都做不了架构师&#xff1f;>>> 实现springMVC 拦截器步骤&#xff1a; 1.定义拦截器类HandlerInterceptor 继承HandlerInterceptor public class Interceptor implements HandlerInterceptor { /**preHandle&#xff1a;预处理回调方法&#…

django学习笔记--数据库中的多表操作

1.Django数据库----多表的新增操作 1.一对一模式下新增 创建一个详情对象&#xff0c;把这个对象赋值给创建的新的user对象 author_detail models.AuthorDetail.objects.create(addr上海,phone178****4789) # 直接设置author_detail为一个对象 author models.Author.objects.…

+z +Z compiler flag for HP

1. 今天遇到一问题&#xff0c;在sles11/vxworks下编译通过&#xff0c;但是在hpux下失败 2. 编译错误&#xff1a; /usr/ccs/bin/ld:DP relative code in file /projects/xxx/DERIVED/tfa_pa32-hpux.a(tfa02_pa32-hpux.o) -shared library must be position indep…

DP UVALive 6506 Padovan Sequence

题目传送门 /*题意&#xff1a;两行数字&#xff0c;相邻列一上一下&#xff0c;或者隔一列两行都可以&#xff0c;从左到右选择数字使和最大DP&#xff1a;状态转移方程&#xff1a;dp[i][j] max (dp[i][j], dp[1-i][j-1] a[i][j], dp[i/1-i][j-2] a[i][j]);要从前面一个转…

Java项目:基于遗传算法学校排课系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述本系统功能包括&#xff1a; 排课管理&#xff0c;课程管理&#xff0c;讲师管理&#xff0c;班级管理&#xff0c;学生管理&#xff0c;教学资料&#xff0c;学习文档&#xff0c;在线测试&…

冲刺周期会议七

一、会议时间&#xff1a;2014年5月6日20:30--21:00 二、会议地点&#xff1a;学院楼一楼大厅 三、会议目的:统计任务进度&#xff0c;记录会议问题 四、会议内容&#xff1a; 1、对近几天的项目进度进行总结&#xff1a; 由于刚刚开始学习安卓&#xff0c;无论是配置环境还是学…

chrdev字符设备几种注册方式的差异

数据结构 #define CHRDEV_MAJOR_HASH_SIZE 255static struct char_device_struct {struct char_device_struct *next;unsigned int major;unsigned int baseminor;int minorct;char name[64];struct file_operations *fops;struct cdev *cdev; /* will die */ } *chrdevs[CHRD…

ldconfig及 LD_LIBRARY_PATH

ldconfig及 LD_LIBRARY_PATH 1. 往/lib和/usr/lib里面加东西&#xff0c;是不用修改/etc/ld.so.conf的&#xff0c;但是完了之后要调一下ldconfig&#xff0c;不然这个library会找不到 2.想往上面两个目录以外加东西的时候&#xff0c;一定要修改/etc/ld.so.conf&#xff0c;然…

Java项目:诚途旅游系统(java+JSP+Spring+SSM+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 采用ssm架构实现的旅游网站系统 包括网站展示和后台管理功能&#xff0c;网站主要是页面浏览以及评论、制定旅游方案、智能推荐功能 后台就是维护网站展示的内容&#xff0c;添加旅游景点、管理用户、查看…

combotree

1&#xff0c;直接获取&#xff1a; 单选&#xff1a;$("#id").combotree("getValue") 多选&#xff1a;$("#id").combotree("getValues") 注意&#xff1a;如果value中的值和所显示的文本不同&#xff0c;如需获取文本内…

SCRIPT1028:缺少标识符、字符串或数字 jquery ajax

2019独角兽企业重金招聘Python工程师标准>>> SCRIPT1028:缺少标识符、字符串或数字 使用jquery时报此错误 究其原因是对象键值对格式错误&#xff1a; 原格式&#xff1a; 多了一个逗号obj { "usernmae":"zhangsan", "sex"…

IOS 编程中引用第三方的方类库的方法及常见问题

方法一:直接复制全部源文件到项目中 这样的方法就是把第三方类库的全部源文件复制到项目中。直接把全部.h和.m文件拖到XCode项目中就可以。 注意&#xff1a; 1. 假设第三方类库引用了一些系统自带类库。那么在项目中还须要额外引用那些类库。2. 假设当前的项目启用了ARC。而引…

gcc中-pthread和-lpthread的区别

用gcc编译使用了POSIX thread的程序时通常需要加额外的选项&#xff0c;以便使用thread-safe的库及头文件&#xff0c;一些老的书里说直接增加链接选项 -lpthread 就可以了&#xff0c;像这样&#xff1a; Shell代码 gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应…

Java项目:精品养老院管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述本系统功能包括&#xff1a;通知公告&#xff0c;老人管理&#xff0c;护工管理&#xff0c;问答管理等等功能。 二、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&am…

install python+twisted+mysqldb+django on mac

一. install python 1) check install or not 在mac终端输入命令&#xff1a;which python 即可查看python的路径 2&#xff09;未安装时&#xff0c;手动下载安装包 地址&#xff1a;https://www.python.org/downloads/ 选择下载 Mac OS X 64-bit/32-bit installer 安装 二…

JVM优雅退出

在某个Java应用增加新功能,缩容机器,或者应用以及机器发生异常,通常会停止正在运行的应用,该应用通常正在运行着任务,如果停止应用的操作处理不当的话,很有可能会导致数据丢失,损坏,从而影响业务。所以在停止应用的时候,需要考虑如何安全优雅的退出。维护了所有已经注册的钩子,由于jvm本身没有提供好用的方法去移除已经注册的钩子,可以通过反射的方式调用。对于强制关闭的几种情况,会直接停止JVM进程,JVM不会调用已注册的。对于正常关闭、异常关闭的几种情况,JVM关闭前,都会调用已注册的。

网络名词--“环路”

环路一直是网络工程师以及网络运维人员头疼的事&#xff0c;如何防止环路的产生&#xff0c;如何快速找出环路的原因排除故障&#xff0c;是每一个网络从业人员必备的技能。这就要求我们对环路产生的原因了如指掌&#xff0c;本文主要对交换环路进行分析&#xff0c;从分类、形…

希腊字母表及读音

序号大写小写国际音标中文读音意义1Ααa:lf阿尔法角度;系数2Ββbet贝塔磁通系数;角度;系数3Γγga:m伽马电导系数(小写)4Δδdelt德尔塔变动;密度;屈光度5Εεep`silon伊普西龙对数之基数6Ζζzat截塔系数;方位角;阻抗;相对粘度;原子序数7Ηηeit艾塔磁滞系数;效率(小写)8Θθθit西塔温度;相位角9Ιιaiot约塔

loadrunner——win7+LR11配置

一、 安装vmware虚拟机 下载安装vmware15后&#xff0c;可使用密钥为&#xff1a;CG392-4PX5J-H816Z-HYZNG-PQRG2 二、 安装win7系统 2.1下载win7镜像文件 2.2 vmware中创建win7虚拟机 创建过程省略&#xff0c;一键式创建即可&#xff0c;windows产品可使用密钥如下&#xff1…

C++标准库中sstream和strstream的区别

在C有两种字符串流&#xff0c;一种在sstream中定义&#xff0c; 另一种在strstream中定义。 它们实现的东西基本一样。 strstream里包含 class strstreambuf; class istrstream; class ostrstream; class strstream; 它们是基于C类型字符串char*编写的 sstream中包含 class is…

基于jQuery垂直多级导航菜单代码

基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <ul class"ce"><li> <a class"xz" href"#">目录A</a>…

Java项目:在线考试系统(java+springBoot+vue+Mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 管理员和教师登陆此账号就进入后台&#xff0c;学生登陆此账号就进入前端做题。 老师发布了考试,学生才可以在主页面看到相应的考试信息。 有考试安排表以后,才能给该次考试添加题目,对应数据表是exammanag…