那些年我们掉过的java的坑(四)

那些年我们掉过的java的坑(四)

1.字符串的运算,从左往右,能计算便计算,否则输出
public class Test_1 {
	public static void main(String[] args) {
		System.out.println("hello"+'a'+1); //helloa1
		System.out.println('a'+1+"hello"); //98hello
		System.out.println("a"+1+"hello"); //a1hello
	}
}
2."-0"代表的是最小值,
short a = 128;
byte b = (byte)a;    //b为-128

short a = 0000 0000 1000 0000
byte b = 1000 0000(原码) = -0
b(反码) = 0111 1111
b(补码) = 1000 0000(就是-128的补码)

3.Math类中round()、ceil()、floor()

round():四舍五入
ceil():取最大
floor():取最小

4.假设int x=1,y=2,z=3;那么y+=z–/++x是1。注意int/int还是int,向下取整。y=y+((z–)/(++x)); (z–)/(++x)=3/2=1;
5.java中移位是a>>n,实际上是a>>(n%32)。防止超32位。>>带符号右移(移动的数为负数高位补1,正数补0)。>>>不带符号右移(高位补0)。移为的shor等类型会先转换为int类型再移位。

short -4 = 1111 1111 1111 1100(负数补码形式存)
转化为int = 1111 1111 1111 1111 1111 1111 1111 1100(高位补1)

6.String存中文时候
String st = "秃头";
st.length();                   //为2
st.getBytes().length(); //为4
7.new String(“abc”);new String(“abc”);的过程

new String(“abc”);//先常量区存放一个abc,再堆里创建一个对象new String
new String(“abc”);//发现常量区有abc,直接堆里创建一个对象new String

8.==、equals(Object)、hashCode()
  • ==:比较变量值是否相等
  • equals(Object):继承于Object,默认是使用了==,比较的是引用(地址),需要用户覆盖
  • hashCode():用于鉴定对象的内容是否相等。
9.String、StringBuffer、StringBuilder区别
  • StringBuffer:线程安全
  • StringBuilder:线程不安全
10.finally代码块声明时候执行
  • 先执行finally,再回来执行return
  • 如果先执行finally时候a++,再回来执行return a后,a的值是++之前的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值