1、对象引用

若两个对象进行赋值操作,d1=d2,此时若操作d1或者d2,都会改变,即此时两个对象指向同一个堆对象。若想只改变值,可d1.v=d2.v。

2、短路

即一旦确定一个式子的正误,式子后面部分就不在运算,例:a&&b 若a为假  则整个式子都为假 b就不再运算。

3、垃圾回收方法

(1)引用计数法

每个对象都有一个引用计数器,当引用计数器为0时,回收,但存在循环引用,本该回收引用值却不为0,算法不好。

(2)停止-复制

对于任何活着的对象,一定追溯到其存活在堆栈或者静态存储区的引用,因此需要遍历所有引用。效率低,因为需要在多个大块存储区之间来回读存。若程序进入稳定状态,产生很少垃圾,但此法还是要进行复制,造成资源浪费。

(3)标记-清扫

遍历所有引用,找出存活的对象,若还存活就标记,这一过程不会回收对象,全部标记工作完成时候才会进行清理操作。在清理过程中没有被标记的对象会被释放。不会产生复制动作,

4、初始化顺序

静态变量(块)->非静态变量(块)->构造函数->普通函数。且静态变量(静态new对象)仅会被初始化一次。在首次生成这个类的一个对象或者首次访问属于哪个类的静态数据成员时(及时从未生成过那个类的对象)。

5、static、final、static final区别

final:

final可以修饰:属性,方法,类,局部变量(方法中的变量)

final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。

final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。

final修饰的属性表明是一个常数(创建后不能被修改,可以未初始化,0 false null等)。

final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。

final可以在传参时声明参数是final类型的。如void add(final int a)。

对于基本类型数据,final会将值变为一个常数(创建后不能被修改);但是对于对象句柄(亦可称作引用或者指针),final会将句柄变为一个常数(进行声明时,必须将句柄初始化到一个具体的对象。而且不能再将句柄指向另一个对象。但是,对象的本身是可以修改的。这一限制也适用于数组,数组也属于对象,数组本身也是可以修改的。方法参数中的final句柄,意味着在该方法内部,我们不能改变参数句柄指向的实际东西,也就是说在方法内部不能给形参句柄再另外赋值)。

static:

static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类)

static修饰的属性的初始化在编译期(类加载的时候),初始化后能改变。

static修饰的属性所有对象都只有一个值。

static修饰的属性强调它们只有一个。

static修饰的属性、方法、代码段跟该类的具体对象无关,不创建对象也能调用static修饰的属性、方法等

static和“this、super”势不两立,static跟具体对象无关,而this、super正好跟具体对象有关。

static不可以修饰局部变量。

static final和final static:

static final和final static没什么区别,一般static写在前面。

static final:

static修饰的属性强调它们只有一个,final修饰的属性表明是一个常数(创建后不能被修改)。static final修饰的属性表示一旦给值,就不可修改,并且可以通过类名访问。

static final也可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用

类中所有private 隐式被指定为final 因为无法被更改。同样final修饰的类 无法被继承,内部所有方法隐式为final 无法被覆写。

6、类的加载

类是在创建它的第一个对象时才被加载的,但访问static域或对象时也会发生加载。static的东西只会被初始化一次。

Java编程思想—第三四五六七章相关推荐

  1. java编程思想学习笔记(第七章:复用类)

    复用代码是java众多引人注目的功能之一.但是要想成为极具革命性的语言,仅仅能够复制代码并对之加以改变是不够的,它还必须能够做更多的事情. 7.1组合语法 将对象引用置于新类中.每一个非基本类型的对象 ...

  2. 《Java编程思想》读书笔记 第十三章 字符串

    <Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...

  3. Java编程思想第四版第四章练习

    我正在读C++prime第六版,然后正好学到这个章节,简直太一致了吧. 闲话少说,直接上题.PS:编译器如期而至IDEA,熟悉了好久的编译系统,安装教程请看上一篇博客. 1.写一个程序,打印从1到10 ...

  4. Java编程思想第四版第十一章习题(下)

    这是第十一章最后一节,之后我会做前11章节的回顾(按着目录捋) 题目27-32,其中30-32因为我没有源代码,所以我贴的官网答案. 编译器:IDEA 27.写一个称为Command的类,它包含一个S ...

  5. Java编程思想第4版 第12章 课后习题

    练习1:编写一个类,在其main()方法的try块里抛出一个Exception类的对象.传递一个字符串参数给Exception的构造器.在catch子句里捕获此异常对象,并且打印字符串参数.添加一个f ...

  6. Java编程思想第4版 第13章 课后习题

    练习1:分析reusing/SprinklerSystem.java的SprinklerSystem.toString()方法,看看明确地使用StringBuilder是否确实能够避免产生过多的Str ...

  7. Java编程思想读书笔记_第6章(访问权限)

    四种访问权限: public private 包访问权限 protected 如果没有明确指定package,则属于默认包 1 package access.dessert; 2 3 public c ...

  8. 《JAVA编程思想》学习笔记:第8章(多态)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

  9. 《JAVA编程思想》学习笔记:第16章(数组)

    目录 Java编程思想(一)第1~4章:概述 Java编程思想(二)第5章:初始化和清理 Java编程思想(三)第6章:访问权限 Java编程思想(四)第7章:复用类 Java编程思想(五)第8章:多 ...

最新文章

  1. python实现字符串切片
  2. pm2集群模式mysql配置_配置 PM2 一键部署
  3. Taro小程序采坑记
  4. JS键盘字母相应的keyCode值
  5. 时间轴的实现(简单到爆炸)
  6. Hibernate面试总结
  7. Docker解析及轻量级PaaS平台演练(三)--Dockerfile编写
  8. Virtual DOM(虚拟dom-1)
  9. 在 Unity 多人游戏中实现语音对话
  10. 写入Visual Studio的输出窗口
  11. 小记 -- cadence安装记录
  12. 【区块链开发入门】(二) 以太坊的编程接口
  13. 修改密码 的测试用例(web)
  14. ubuntu20.04不能切换输入法
  15. Linux - 麒麟17.04 删除桌面图标(计算机,主文件夹,回收站)与 Cairo-Dock 安装配置
  16. Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type class redacted.BasicEnt
  17. 最后聊聊:备案需要注意的地方和域名的解析
  18. 高通MDM9628芯片数据参考
  19. html实现相册效果,图片播放(相册效果) - CSS实现
  20. canvas画布的基础用法

热门文章

  1. (转)linux下vi编辑器编写C语言的配置
  2. Wordpress SEO robots
  3. 解决MSDN安装正常,却无法访问。
  4. 判断一颗二叉树是否是二叉排序树
  5. 诗与远方:无题(七十一)- 雨季来了
  6. 诗与远方:无题(三十四)- 曾经写给妹子的一首诗
  7. Struts2中的全局结果集
  8. 添加一列_快速给电子书pdf添加书签
  9. 中imshow函数用法_5 OpenCV几个函数操作实例
  10. Report Builder 3.0连接ORACEL数据库