Think in java 读书笔记(一)

最近在读Think in java 这本书,发现里面有好多基础知识讲的很细致,很深刻,能让人从最底层了解java,个人整理了些读书笔记,就算是知识整理吧,方便以后查看。

  1. java访问控制的三个关键字及作用范围?默认的关键字及作用范围?
  2. 关于继承的理解:动态绑定 静态绑定。
  3.  向上转型:将导出来看做是它的基类的过程成为向上转型(upcasting),向上转型是安全的(为什么是安全的?);向下转型:将基类看做是具体导出类的过程;几乎不安全(为什么不安全?)。
  4. Java 方法中参数的理解:第一:java方法基本数据类型是传值,对象类型传引用,这是千真万确的。第二:当参数是对象时,无论方法体内进行了何种操作,都不会改变实参对象的引用。第三:当参数是对象时,只有在方法内部改变了对象的内容时,才会改变实参对象内容。
  5.  对象存储的地方 a) 寄存器:最快的存储区,处理器内部。不可直接控制。b)   堆栈:位于通用ARM(随机访问存储器),通过堆栈指针从处理器获得直接支持。向下移动则分配内存,向上移动则释放内存。速度仅次于寄存器,java的对象引用存储于此,但java对象不存储于此。 c)  堆:通用内存池(也位于ARM内),用于存放所有的java对象,堆不同于堆栈的好处是编译器不需要知道存储的数据在堆里存活多长时间。 d)  常量存储:常量值通常存放在程序代码内部,安全,因为永远不会被改变。 e)   非RAM存储。流对象和持久化对象。把对象存放于其他媒介。
  6. 基本类型:并非是引用的“自动”变量,直接存储“值”,并置于堆栈中,因此更加高效。Boolean,byte(8 bits ,2字节),short(16bits,4字节),int(32bits,8字节), float(32字节,8字节), long(64bits,16字节),double(64bits,16字节),char(16bits,4字节),void.基本类型具有的包装器类,使得可以再堆中创建一个非基本对象,用来表示对应的基本类型。JavaSE5具有自动包装功能,将自动的将基本类型转换为包装器类型。Java还提供了两个高精度计算的类。BinInteger和BigDecimal。二者大体属于包装类范畴,但是没有基本类型。
  7.  数组:当创建一个数组对象时,实际上是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字null,代表这个引用没有指向某个对象。
  8. 若类的某个成员是基本类型,即使没有进行初始化,java也确保它获得一个默认值。
  9. Static关键字:只想为某特定域分配单一存储空间,不考虑究竟创建多少对象,甚至根本不创建对象;希望某个方法不去包含他的类的任何关联对象在一起。也就是说没有创建对象,也能够调用这个方法。
  10. 什么是别名机制?
  11. equals()和==的区别 ==和!=比较的是对象的引用,如果想比较两个对象的内容是否相同,使用equasl()方法,但这个方法不适用与基本类型,基本类型直接使用==和!=即可。但是需要注意,在自己定义的类中如果使用equals()方法,默认是比较引用,需要在自己的新类中覆盖equals()方法。
  12. &&和&的区别:&&具有短路功能,即在上一个逻辑为假时,下一个判断条件则不会执行,直接输出false,该短路功能可以提升程序的性能。而&是按位或操作符,只有左右边的都为真,才是真。
  13. 类型转换,涉及数字问题,截尾和舍入:int(0.7)=0;如果想要得到舍入的结果,需要使用Math中的Round方法,此方法可以进行四舍五入。

 

 

 

 

你可能感兴趣的:(java,对象存储,think in java,基本类型)