java核心技术卷Ⅰ笔记(2)

对之前学习的Java基础进行补充

  • 数值类型之间的转换
    如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。
    否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。
    否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。
    否则, 两个操作数都将被转换为 int 类型
  • 转换图
    转换图

有 6 个实心箭头,表示无信息丢失的转换;有 3 个虚箭头, 表示可能有精度
损失的转换

  • 位运算符
    只说两个常用的位运算符 & (“and”) | (“or”)
    &&|| 运算符采用 "短路方式” (遇到true就跳出判断语句)
    &运算符不采用“ 短路” 方式(遇到true也继续往后判断)
    >> 和 << 运算符将位模式左移或右移
    >>> 运算符会用 0 填充高位,这与>>不同,它会用符号位填充高位。不存在<<<运算符
  • 补充: += 是右结合运算符(右边优先级高)
  • 字符串
    字符串不可变,但是也有一个优点就是编译器可以让字符串共享(只有字符串常量才共享!substring操作产生的结果不能共享)
String greeting = "Hello";
if (greeting == "Hello")...  
// true
if (greeting.substring(0, 3) == "Hel") . . .
// false
  • 共享解释
String s = "123";
String d = "123";
String f = new String("123");
/**
* 老基础注解了,但是我还是想写
* 1:== 判断地址
* 2:equals 方法检测两个字符串是否相等
*/
System.out.println(s == d);  // true  s与d地址相同
System.out.println(s == f);  // false s与f地址不同
System.out.println(d == f);  // false s与f地址不同

Java 的设计者认为共享带来的高效率远远胜过于提取、 拼接字符串所带来的低效率

  • 码点与代码单元
    大多数的常用 Unicode 字符使用一个代
    码单元就可以表示,而辅助字符需要一对代码单元表示
// 要想得到实际的长度,即码点数量,可以如下调用
String temp = "你好";
System.out.println(temp.codePointCount(0,temp.length()));
// 2 "你好" 有两个码点

// 获得第1个码点
int index = temp.offsetByCodePoints(0,1);
int codePoint = temp.codePointAt(index);
System.out.println(codePoint);
// 22909

// 遍历“你好”的码点
int[] codePoints = temp.codePoints().toArray();
for (int point : codePoints) {
     System.out.println(point);
}
//20320
//22909

今天就先到这!虽然不多 但要坚持 晚安

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值