第一节、java运算符
https://baike.baidu.com/item/JAVA%E8%AF%AD%E8%A8%80%E8%BF%90%E7%AE%97%E7%AC%A6/8699618?fr=aladdin
除了赋值运算符外,其余运算符均为从左向右运算
赋值运算符优先级最低,三目运算符次之
大致优先级条件单目>双目>三目
扩展运算符++,--
推荐使用扩展运算符,扩展运算符效率高,可以自动强制转型,但是不易阅读
<>=><=关系运算符只能比较数值型
==和!=可以比较数值型和引用,引用型比较的是地址值
逻辑运算符& | !
连接两边如果是Boolean类型则实现与、或、非作用
连接两边为数值型,则按位与、或、非
不存在短路
逻辑运算符&& || !
有短路功能,&&:同true为true,其余false
||:有true为true,无true为false
!:取反true-->false
第二节、循环语句
if循环语句:if(表达式){选择执行语句}:表达式为Boolean类型的数值或者也可以给Boolean赋值,当Boolean数值为true时,才会选择执行语句
if循环语句有单行、双分支和多分支
双:if(){}else{}
多:if(){}else if(){}else{}
switch语句:switch(表达式){
case:
语句;
break;
case:
语句;
break;
default:
语句;
break;
}
switch与if不同,if是区间判断,而switch是定值判断,switch需要break来防止case穿透
default可以在循环体内任意位置
switch表达式只能是一个具体的数值,默认是int,不支持小数
在JDk1.5后表达式支持枚举,JDK1.7后支持字符串
第三节、String(个人理解,待验证)
String str = new String("123"); 在java堆new一个对象,在方法区也有一个对象,两个引用,对象有常量池中String的引用,栈中有对象str的引用
String str = "123" 因为方法区有123,所以不需要新对象,只有一个新引用