1.树中结点数即为树中所有结点的度之和再加1
2、
3、
4、在任意一颗二叉树中,度为0的结点总是比度为2的结点多一个
5、
6、
7、swtich()变量类型只能是int、short、char、byte和enum类型(JDK 1.7 之后,类型也可以是String了)。当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况:
8、按位与(Bitwise AND),运算符号为&
a&b 的操作的结果:a、b中对应位同时为1,则对应结果位也为1
9、
10、
11、
12、
13、
14、
第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母
逻辑左移=算数左移(<<),右边统一添0
逻辑右移(>>>),左边统一添0
算数右移(>>),左边添加的数和符号有关 算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0
e.g:1010101010,其中[]是添加的位
逻辑左移(<<)一位:010101010[0]
算数左移(<<)一位:010101010[0]
逻辑右移(>>>)一位:[0]101010101
算数右移(>>)一位:[1]101010101
抽象类不能实例化,需要继承
String str=null;
声明了一个String的引用型变量并初始化为空,及未指向任何地址,不占用任何空间
String str;
只是声明了一个String的引用型变量,并未初始化(作为对象属性时会有默认的隐式初始化str=null),如果后面未用此变量编译会通过
String str=”“;
正常的字符串初始化,只不过字符串内容为空。
String str1 = “ABC”;可能创建一个或者不创建对象,如果”ABC”这个字符串在java String池里不存在,会在java String池里创建一个创建一个String对象(“ABC”),然后str1指向这个内存地址,无论以后用这种方式创建多少个值为”ABC”的字符串对象,始终只有一个内存地址被分配,之后的都是String的拷贝,Java中称为“字符串驻留”,所有的字符串常量都会在编译之后自动地驻留。
String str2 = new String(“ABC”);至少创建一个对象,也可能两个。因为用到new关键字,肯定会在heap中创建一个str2的String对象,它的value是“ABC”。同时如果这个字符串再java String池里不存在,会在java池里创建这个String对象“ABC”。
在JVM里,考虑到垃圾回收(Garbage Collection)的方便,将heap(堆)划分为三部分:young generation(新生代)、tenured generation (old generation)(旧生代)、permanent generation(永生代)。
字符串为了解决字符串重复问题,生命周期长,存于pergmen中。
JVM中,相应的类被加载运行后,常量池对应的映射到JVM运行时的常量池中。