没有引言,单纯做笔记。
运算符
逻辑运算符
&&
二方都为true,则为true;||
一方为true,则为true;
位运算符
&
一方为0/false,则为0/false|
一方为1/true,则为1/true
String
String 在实例化完成后不可变,自带final修饰符。
字符串池
在JVM中有一块内存区域,专门用于存储字符串,即字符串池(String Pool)。
字面量和引用
String xxx = new String("...")
和
String xxx = "..."
不同。
String xxx = new String("...")
直接在JVM的堆(Heap)创建全新的对象;String xxx = "..."
先检查池中有无相同字符串,有则获取相同引用。
equals(Object)
-
equals(Object)
方法检查字符串内容。 -
==
检查字符串引用
若是用==
,则两个字符串有可能指向同或不同引用,导致与预期结果不一致。
String a = "相同内容";
String b = new String("相同内容");
System.out.println(a == b);
System.out.println( a.equals(b) )
第一个为false
,引用不同;
第二个为true
,引用不同,但内容相同
intern()
intern()
复制一个字符串,保持引用相同。
String a = new String("Hello"); // 堆中
String b = a.intern()
String c = "Hello"; // 池中
System.out.println(a==b); // false
System.out.println(b==c); // true
对象地址
一些对象的地址一般以 A@bbbbbbbb
形式打印出来
- A 是类的名称
- b 是对象的哈希值
方法传参的方式
- 基本数据类型:按值
- 引用数据类型:按引用