ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

4.Java运算符与表达式

2026/8/19 22:57:53 拓冰建站 浏览量
4.Java运算符与表达式 运算符与表达式运算符就是操作数据的工具加减乘除、比较大小、逻辑判断、条件选择都靠运算符来完成。用元素安抚把变量和值连起来的十字叫做表达式表达式经过运算都会得到一个结果。一、算符运算符数值计算1.1 算数运算符运算符含义说明加法/拼接遇字符串变拼接-减法/取负单目时取负数*乘法注意整数溢出/除法整数相除取整%取模求余符号同被除数自增- -自减1.2 整数除法自动取整两个整数相除结果仍然是整数小数部分丢弃若其中有一个是浮点数那么结果就是浮点数。Syetem.out.println(10/4)//结果2System.out,println(10.0/4)//结果2.51.3取模运算取模运算的结果与被除数一致。Syetem.out.println(10/3)//结果1Syetem.out.println(-10/3)//结果-11.4 的双重身份遇到字符串时变成字符串拼接符从左到右依次执行inta10;intb20;Syetem.out.println(ab)//30纯加法Syetem.out.println(结果是ab)//结果是10201.5 字符的运算char类型参与算术运算时会使用它在Unciode表中对应的整数值Syetem.out.println(A1)//66二、赋值运算符等于号基本赋值运算符作用是把右边的值交给左边的变量运算符等价于abaab-aa-b*aa*b/aa/b%aa%b复合赋值运算符运算时会进行强制类型转换。byteb10;bb1;//会报错b1自动提升为int不能赋值给byteb1;//正确的等价于b(byte)(b1)三、自增自减让变量1–让变量-1.3.1 单独使用前后无差别让自增或自减独占一行放在前面和后面没有差别3.2 混合使用当自增自减混合使用时放在前面先加后用放在后面先用后加//前置a先自增再用新值参与运算inta5;intba;//a先变成6y再拿6//后置a先用原值参与计算再自增intca;//a先拿5c再变成6四、关系运算符比较大小关系运算符是用来比较两个值的大小是否相等结果一定是true或false。通常配合if判断使用。运算符含义等于不等于大于小于大于等于小于等于与是判断相等有两个等号是赋值一个等号。若是写错会报错String的比较方法对引用类型String比较的是内存地址是否相同不是内容是否相等。字符串内容比较使用.equals()方法Strings1newString(abc);Strings2newString(abc);System.out.println(s1s2);//false地址不同System.out.println(s1.equals(s2));//true内容相同五、逻辑运算符多条件组合逻辑运算符用来组合多个布尔条件结果仍是布尔值运算符名称规则短路短路与两边都true才true左边false右边不执行||短路或一边true就true左边true则右边不执行!逻辑非取反-逻辑与同两边都执行|逻辑或同||两边都执行^逻辑异或左右不同才true-5.1 、||vs、|与||具有短路特性——左边已经能确定结果时右边不在执行更高效也更安全与|使用时两边都要执行运行效率比和||低日常开发首先短路与与短路或。intx5;booleanr3(x0)||(x10);//左truex不执行x5booleanr4(x0)|(x10);//两边都执行x65.2 逻辑非用来翻转布尔值booleanatrue;System.out.println(!a);//false六、三元运算符简化的if-else格式条件表达式值1值2规则条件为true取值1条件为false取值2//求两个数最大值inta10,b20;intmax(ab)?a:b//max20七、位运算符了解即可位运算符直接操作二进制位日常开发用的不多但是在高性能计算、加密、位图、网络协议等场景会遇到运算符含义按位与|按位或^按位异或~按位取反左移右移无符号右移八、表达式类型自动提升当表达式里出现多种数据类型混合运算时java会自动做类型提升。规则1byte/short/char统一提升为int只要有byte、short、char参与运算全部先变成int再算结果也是intbyteb110,b220;intb3b1b2;//int直接接收byteb4(byte)(b1b2);//需要强制转换规则2整体提升到表达式中最高等级类型类型大小等级byte-short-int-long-float-doubleinta10;doubleb3.14;doublecab;//a自动提升为double结果是double建议开发中整数直接用int不够long小数直接用double。byre/short/char只在特殊场景如网络协议文件IO等使用可以大幅度减少类型转换问题。九、运算符优先级优先级运算符说明1最高()、[]小括号、下标2、–、!、~单目运算符前置3*、/、%乘除取模4、-加减5、、移位6、、、、instanceof关系比较9^按位异或10|按位或11逻辑与12||逻辑或13? :三元14最低、、-、*、/、%赋值十、坑整数相除丢小数号字符串拼接顺序自增自减前后设置混淆把写成用比较String内容短路运算导致右边代码没执行复合赋值运算的隐式强制转换浮点数用比较