最近在看Java核心技术这本书,这里对第三章个人认为的重难点做一个总结。方便以后回顾,个人能力有限,本人菜鸟,大神勿喷,请大家多多指教。
一、位运算符 指定 A = 66(0100 0010); B = 22 (0001 0110)(这里为了简化说明支取一个字节即8位来运算)
位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能。如果要开发高效率程序,位运算符是必不可少的。位运算符用来对二进制位进行操作,包括:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、按位左移(<<)、按位右移(>>)。下面就给大家介绍位运算符的详细用法。
按位与(&)(双1为真)
(A & B) 结果为 2, 二进制为 0000 0010
按位或(|)(有1为真)
(A | B) 结果为 86, 二进制为 0101 0110
按位异或(^)(不同为真)
(A ^ B) 结果为 84, 二进制为 0101 0100
按位取反(~)
按位左移(<<)
将操作数的所有位向左移动指定的位数。
(A << 2)结果为 8, 二进制为 0000 0100
按位右移(<<)
A >> 2 结果为 15, 二进制为 0000 1111
二、枚举类型
有时候,变量的取值只在一个有限的集合内,例如服装的尺码只有S,M,L,X四个号码。针对这种情况,可以使用自定义枚举类型。
三、不可变字符
Java的String类是不可变类,并且被final修饰,无法继承。 字符串对象都是不可变对象,所以对字符串进行操作时,都是返回新的字符串对象,原有字符串不会改变。如同数字3永远是数字3。
四、equals与==
操作符==比较的是变量值是否相同,因为字符串是引用类型,所以操作符==只能检测两个字符串是否指向同一个引用(对象地址),但无法检测字符串对象的内容,完全有可能将内容相同的多个字符串拷贝放置在不同的位置上(对象地址)。操作符==只能用于判断基本类型以及引用类型是否为null。
要判断两个字符串变量是否相同,应该使用equals()方法来判断。两个对象指向同一引用,则说明内容相等。否则开始循环比较字符串内容。String的equals()方法实现细节
五、String的常用API
六、String、StringBuilder与StringBuffer的区别
String:
是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.(对内存与性能有极大的消耗)
String 是final类,即不能被继承.
StringBuffer:
StringBuilder :
在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
七、Java中的“goto”语句
首先在java中对标签的要求非常严格
java基础知识难点 标签必须在一个循环的前面,意思是这个循环的名字叫outer(假设标签名为outer),并且这一行后面不能有任何语句了;
而break和continue是和循环语句结合使用的,因此实际上语句标签的使用也是和循环紧密结合的。
事实上,可以将标签应用到任何语句中,如if语句或者快语句,注意:只能跳出语句块,而不能跳入语句块
因此 个人总结
带标号的break、continue局限于循环体中跳转
带标号的goto 可以在整个方法中(c语言函数)跳转
goto比带标号的break、continue用法灵活 正因为太灵活了
使程序的逻辑结构变的复杂,流程不够清晰,程序的可读性下降
所以java中把goto 保留了
八、Arrays类的常用方法
九、不规则数组的本质
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/3088.html