以前有零散地阅读过TIJ,可是都是针对本身的问题去有针对性的阅读,没有从头梳理过Java的一些基础知识。从前段时间开始本身也开始了总体性地学习TIJ的过程,也从这篇博客开始把本身的一些感悟和理解总结起来,也但愿能对你们和我本身都有些帮助。html
第一章大体都是一些面向对象语言或针对JAVA的特性的一些介绍,在后面的每一章中都有详细的介绍,因此从读书总结从第二张开始。java
对于这一块,JVM的内存模型是必需要清楚的内容,这个博客对于JVM内存模型的介绍很是全面,能够参考学习。 简略的说,内存能够分为虚拟机栈,本地方法栈,程序计数器,堆,方法区(包含运行时常量池)等部分。学习
Java在任何平台上每种基本类型所占空间的大小都一致,这也是Java跨平台特性的缘由之一。 编码
参考2.2.1中可知,java基本类型不存储在堆中,而基本类型对饮的包装类的实例对象存储在堆中,java提供了自动包装机制来处理基本类型和实例对象的转换问题。spa
特别的是:基本类型的包装类和String类都是final的,不可变,因此每次操做都会生成一个新的对象,看起来和基本类型的传值操做很类似。 且String类在初始化时JVM针对其初始化的方式的不一样会有不一样的处理,后面专门讲解String的章节会详细介绍。code
java中主要是用花括号来控制做用范围。 基本类型的做用域:htm
{ int x = 12; /* only x available */ { int q = 96; /* both x & q available */ } /* only x available */ /* q “out of scope” */ }
而下面的方式是不容许的,在C++中是能够的,但在Java中是不被容许的。对象
{ int x = 12; { int x = 96; /* illegal */ } }
对象的做用域: new的对象能够存活在做用域以外,只要有引用一直指向它,那么对象就不会消失,但在范围外引用会失效。blog
类的成员变量在实例化时会自动初始化,在没有指定的状况下,基本类型会初始化成为默认值,类对象会设置成为null。继承
<table> <tr> <td>类型 </td> <td>值</td> </tr> <tr> <td>Boolean </td> <td>false</td> </tr> <tr> <td>Boolean </td> <td>false</td> </tr> <tr> <td>char </td> <td>false</td> </tr> <tr> <td>Boolean </td> <td>'\u0000'(null)</td> </tr> <tr> <td>byte </td> <td>(byte)0</td> </tr>
<tr> <td>short </td> <td>(short)0</td> </tr> <tr> <td>int</td> <td>0</td> </tr> <tr> <td>long</td> <td>0L</td> </tr> <tr> <td>float</td> <td>0F</td> </tr> <tr> <td>double</td> <td>0D</td> </tr> </table> 可是局部变量不会设置默认初始值!须要本身初始化,若是忘记了,那么在编译时会范围错误。
p.s. 这里初始化的问题在后面类的初始化和加载的时候会详细讨论,涉及继承,多态等状况时,初始化会变得较为复杂。
在注释内按照标准的格式输入,能够利用JavaDoc提取文档。 独立文档标签是一些@开头的命令。
静态导入:其实很好理解,和普通import的区别就在于静态导入后使用对应类的静态方法时不须要使用类名.静态方法的方式,能够直接使用方法名。但其实我我的认为通常用import就能够了,由于静态方法多的时候,使用静态import一旦出现重名的状况很容易发生冲突。
这是java里使人很迷惑的部分,能够参考17章的笔记~
对char, byte, short类型的数值进行移位处理,在移位进行以前,会被转换成int类型,而且最终也会获得int。
基本类型的类型转换中,窄化转换必需要强制类型转换,可是扩辗转换不须要显示的类型转换。
布尔类型不支持类型转换!
截尾与舍入
goto在C,C++中是不推荐使用的,在java中没有goto关键字,java经过另外一种加了限定的方式实现了受控的goto。
label1: //外部循环 { //内部循环 { //... break; //1 //... continue; //2 //... continue label1; //3 //... break label1; //4 } }
上面伪代码中若是执行到3处,那么会跳转到循环外label1处继续进行迭代;
若是进行到4出那么会跳转到label1处,而且不会从新进入迭代。
前三章相对来讲都是很是基础的内容,在以前的工做中基本都已经熟悉了。可是有几点须要注意: