一、运算符
- 算数运算符
(1)自增自减运算符:注意前缀和后缀,是使用之前还是使用之后
(2)一元“+”和“-”运算符:前者的结果是数值本身,后者的结果是数值的相反数
(3)取模运算符
double a=14.0%3.0;//2.0
double b=-14.0%3.0;//-2.0
double c=-14.0%-3.0;//-2.0
(4)四则运算符“+” ,“-”, “*”, “/”
- 关系运算符
(1)int和boolean不能比较
(2)a<b<c或者a==b ==c这俩种比较法都是不正确的
(3)引用类型比较的时候看俩个引用类型变量是否指向同一个对象实例,即是否指向同一个内存
例:
Integer a1 = 127;
Integer a2 = 127;
Integer a3=new Integer(127);
Integer a4=new Integer(127);
Integer a5=a4;
System.out.println(a1==a1);//true
System.out.println(a3==a4);//false
System.out.println(a2==a3);//false
System.out.println(a5==a2);//false
System.out.println(a4==a5);//true
(4)不同引用类型之间不能比较
(5)引用类型值的相等关系比较,比较俩个引用类型变量的值是否相等,使用equals(Object obj)方法,用于实现比较俩个类的值是否相等的算法,简单来说俩个类的值一样则true
Java中值传递
public class c {
public static void main(String[] args) {
String str = "6";
test(str);
System.out.println(str);
}
public static void test(String str) {
str += "10";
}
}
//6
字符串拼接
字符串拼接时,只有纯常量的拼接("+")不会转为StringBuilder,直接在常量池内寻找是否存在已有值。否则,只要存在一个字符串变量的"+",都会转为StringBuilder调用append(),”==“是false
例题一:
public class StringDemo1 {
// 5个
public static void main(String[] args) {
// 2
String str1 = new String("abc");
// 1
//此时只需要开辟一个内存new一个对象,不需要,已经有str的值了
String str2 = new String("abc");
// 2
String str3 = new String("abcd");
}
}
例题二:
String str1 = "abc";
String str2 = "ab";
String str3 = "c";
// String -> StringBuilder.append()
// toString()
String str4 = str2 + str3;
String str5 = str2 + str3;
String str6 = new String("abc");
String str7 = "ab" + "c";
String str8 = str2 + "c";
System.out.println(str1 == str6);//false
System.out.println(str1 == str4);//false
System.out.println(str4 == str5);//false
System.out.println(str1 == str7);//true
System.out.println(str1 == str8);//false
- 逻辑运算符
优先级顺序:!(逻辑非)>&(逻辑与)>^(逻辑异或)>|(逻辑或)>&&(条件与)>||(条件或)
(1)&和&&都是同真才真
(2)|和||都是一真则真
(3)"^":只有一真一假为true,就是"相同为假不同为真"
(4)需要注意条件与(&&)和条件或(||)的短路问题
4.位运算符
(1)~ 按位求补运算符
(2)<<左移运算符,简单来说左边的舍去,然后右边补0,左移一位相当于乘以2
(3)>>右移运算符 :算数移位,每移一位右边的舍去,然后左边补符号位,右移一位相当于除以2,
(4)>>>无符号右移运算符:逻辑移位,每移一位右边的舍去,然后左边补0,无符号右移运算一般对负数计算,负数符号位是1,对于正数来说这种运算没有意义,左边始终都补0,十六进制4个一位
例:~0xff00等于 ~0x0000ff00 ,结果是ffff00ff
例:0xf0<<4等价于0x000000f0<<4,结果是0xf00
例:0xf0>>4等价于0x000000f0>>4,结果是0xf;
例:0xffffffff>>1,结果是0xffffffff
例:0xf0>>>4,结果是0xf
例:0xffffffff>>>1,结果是0x7fffffff
(5)按位&、|、^运算符
例:11110101&01000111,结果是01000101
例:11110101 | 01000111,结果是11110111
例:11110101 ^ 01000111,结果是 10110010
5.赋值运算符、条件运算符
6.字符串运算符
(1)当其中的一个或者俩个操作数是字符串类型时 ,"+"用来拼接俩个字符串
(2)boolean类型(true+false)不能相加
String s="java"+"A"+2020;
System.out.println(s);//javaA2020
7、o instanceof T测验对象o是否为T类的实例
8、x.m访问对象的实例成员或者类的静态成员
二、运算符优先级
1.基本运算符:x.m 、f(x)、a[x]、x++、x–、new、instanceof
2.一元运算符:+、-、!逻辑求反、~按位求补、++x、–x、(T)x
3.*、/、%
4.+、-
5.<<、>>、>>>
6.<、>、<=、>=、instanceof
7.==、!=
8.&>^>|>&&>||>x? y:z
9.赋值运算符
1628

被折叠的 条评论
为什么被折叠?



