Java运行符
原创约 1914 字大约 6 分钟...
187-Java运行符.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
概念















示例代码
package com.tencent.chapter02;
/**
* <p>Title: YunSuanFun_05</p>
* <p>
* Description:
* </p>
* @author xianxian
* @date 2023年1月3日
*/
public class YunSuanFun_05 {
/**
* <p>Title: main</p>
* <p>
* Description:
* </p>
* @param args
*/
public static void main(String[] args) {
/**
* 算数运算符
*/
// + 可以为加法运算符 ,也可以为字符串拼接符号
int num = 10;
int num2 = 20;
System.out.println(num + num2); //30
System.out.println(num + num2 + "AB");//30AB
System.out.println("AB" + num + num2);//AB1020
// /除法: 若是两个整数相除,只保留整数部分
int num3 = 10;
int num4 = 3;
int result = num3/num4;
System.out.println(result);//3
float num5 = 10;
int num6 = 3;
float result2 = num5/num6;
System.out.println(result2);//3.3333333
// % 取余,求模: 被模数为正,结果为正,被模数为负,结果为负
System.out.println(10%3); //1
System.out.println(10%-3); //1
System.out.println(-10%3); //-1
System.out.println(-10%-3);//-1
// ++ 自增 num++,先计算,再加1,++num,先加1,再计算
int num7 = 10;
System.out.println(num7++);//10
System.out.println(num7); //11
// -- 自减 num--,先计算,再减1,--num,先减1,再计算
int num8 = 20;
System.out.println(--num8);//19
System.out.println(num8); //19
/**
* 赋值运算符
*/
int x = 10;
int y = 20;
// +=,等同于 x = x+y
x += y;
System.out.println(x);//30
// -=,等同于 x = x-y
x -= y;
System.out.println(x);//10
// *=,等同于 x = x*y
x *= y;
System.out.println(x);//200
// /=,等同于 x= x/y
x /= y;
System.out.println(x);//10
/**
* 关系运算符(比较运算符):
* "=="判断是否相等,不要写成 "="赋值运算符
* "!="判断是否不相等,不要写成"<>"SQL语法
*/
int num9 = 10;
int num10 = 20;
System.out.println(num9 = num10); //20
System.out.println(num9 == num10);//true
System.out.println(num9 != num10);//false
//System.out.println(num9 <> num10);//错误
/**
* 逻辑运算符(布尔运算符)
*/
// &&(and):所有条件返回true,结果才为true,只要任意结果为false,结果即为false
System.out.println(true && true); //true
System.out.println(true && false);//false
System.out.println(false && true);//false 短路运算
System.out.println(false && false);//false 短路运算
//短路运算
int num11 = 10;
boolean result3 = (num11 > 20) && (++num11 >= 11);
System.out.println(num11); //10
System.out.println(result3); //false
// ||(or) :只要任意结果为true,结果即为true,如果所有条件返回false,结果才为false
System.out.println(true || true); //true 短路运算
System.out.println(true || false);//true 短路运算
System.out.println(false || true);//true
System.out.println(false || false);//false
// ! (not):对原有的结果取反
System.out.println(!true); //false
System.out.println(!false);//true
/**
* 位运算(只对byte、short、char、int、long有效)
*/
// & :所有条件返回true,结果才为true,只要任意结果为false,结果即为false
System.out.println(true & true); //true
System.out.println(true & false);//false
System.out.println(false & true);//false 非短路运算
System.out.println(false & false);//false 非短路运算
//非短路运算
int num12 = 10;
boolean result4 = (num12 > 20) & (++num12 >= 11);
System.out.println(num12); //11
System.out.println(result4); //false
//位运算 1 true 0 false
System.out.println(1 & 1);//1
System.out.println(1 & 0);//0
System.out.println(0 & 1);//0 非短路运算
System.out.println(0 & 0);//0 非短路运算
// |:只要任意结果为true,结果即为true,如果所有条件返回false,结果才为false
System.out.println(true | true); //true 非短路运算
System.out.println(true | false);//true 非短路运算
System.out.println(false | true);//true
System.out.println(false | false);//false
//位运算 1 true 0 false
System.out.println(1 | 1);//1
System.out.println(1 | 0);//1
System.out.println(0 | 1);//1 非短路运算
System.out.println(0 | 0);//0 非短路运算
/**
* 逻辑运算符(&& 、||)与位运算符(& 、|) 的异同点:
*
* 相同点:都可以进行逻辑运算
*
* 不同点:
* ① 做逻辑运算时,逻辑运算符(&& 、||)可以做短路运算,位运算符(& 、|)不可以做短路运算,逻辑运算符效率 > 位运算符效率
*
* ② 位运算符可以做按位运算,但是逻辑运算符不可以
*/
// ^ 异或运算符,两者不同返回true,两者相同返回false
System.out.println(true ^ true); //false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true
System.out.println(false ^ false);//false
//位运算 1 true 0 false
System.out.println(1 ^ 1);//0
System.out.println(1 ^ 0);//1
System.out.println(0 ^ 1);//1
System.out.println(0 ^ 0);//0
//按位运算,按位与 &、按位或 |、按位异或^
int num13 = 3;
int num14 = 4;
System.out.println(num13 & num14);//0
System.out.println(num13 | num14);//7
System.out.println(num13 ^ num14);//7
//3 0 0 1 1
//4 0 1 0 0
//& 0000 | 0111 ^ 0111
/**
* 左移和右移运算相当于实现整数乘以或除以2的n次方
*/
// << 左移位,将整数的二进制值,往左移动指定N位,右边空出位置默认补0
int num15 = 4;
System.out.println(num15 << 2);//num14 * 2^2 = 16
// >> 右移位:a>>b,将a的二进制数据右移b位,如果最高位是0(正数),则左边移空的部分补0,如果最高位是1(负数),则左边移空的部分补1
int num16 = 4;
System.out.println(num16 >> 2);//num16 / 2^2 = 1
int num17 = -4; //1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1100
System.out.println(num17 >> 2);//-1
// >>> 无符号右移位:a>>>b,将a的二进制数据右移b位,左边移空的部分补0,
int num18 = -4; //1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1100
System.out.println(num18 >>> 2);//1073741823
/**
* 思考:MD5加密算法:
* 123456 -> 加密 -> 16个字节的数组[-8,34,-12,....] -> 将长度为16的字节表示成32位的十六进制字符串 -> F834567890ABCDEF1234567890ABCDEF
*
* 34: 0010 0010 -> 表示为2个十六进制值 ——>0010 (2) 0010(2)
* 123: 0111 1011 -> 表示为2个十六进制值 ——>0111 (7) 1011(A)
*/
byte b = -8;
//二进制
System.out.println(Integer.toBinaryString(b)); // 111111111111111111111111 1111 1000
System.out.println(Integer.toBinaryString(b >>> 4));// 111111111111111111111111 1111 --无符号右移四位,将左边四位移出
//& 000000000000000000000000 1111 ---与十六进制F做与运算,为了去除前面所有的1
// 000000000000000000000000 1111
System.out.println(Integer.toBinaryString(b >>> 4 & 0XF));//1111 左边四位
System.out.println(Integer.toBinaryString(b & 0XF));// 111111111111111111111111 1111 1000
//& 000000000000000000000000 0000 1111 ---与十六进制F做与运算,为了去除前面所有的1
// 000000000000000000000000 0000 1000
// 1000 右边的四位
//十进制
System.out.println(b >>> 4 & 0XF); //15
System.out.println(b & 0XF); //8
//十六进制
System.out.println(Integer.toHexString(b >>> 4 & 0XF));//f 左边四位
System.out.println(Integer.toHexString(b & 0XF)); //8 右边四位
/**
* 三元运算符:表达式1?表达式2:表达式3
*/
/*System.out.println(5 > 3 ? true : false);//true
System.out.println(5 < 3 ? "是的" : "不是的");//不是的
//二元运算符:= < + &&等
System.out.println(5 + 3);//8
//一元运算符: !
System.out.println(!true);//false
System.out.println(++num18);//3*/
}
}
练习题
package com.tencent.chapter02.lianxiti;
/**
* <p>Title: LianXiTi</p>
* <p>
* Description:
* </p>
* @author xianxian
* @date 2023年1月3日
*/
public class LianXiTi {
/**
* <p>Title: intSum</p>
* <p>
* Description:
* 2、给定一个0~1000的整数,求各位数的和,例如345的结果是3+4+5=12
* 注:分解数字既可以先除后模也可以先模后除(知识点:变量和运算符综合应用) [必做题]
* </p>
* @param num
*/
private void intSum(int num) {
//1.给定一个0~1000的整数
// int num = 345;
//2.求得各位数
int one = num % 10;//个位 5
int two = num /10 % 10 ;//十位
int three = num /100;//百位
//3.求各位数的和
System.out.println(one);
System.out.println(two);
System.out.println(three);
System.out.println(one + two +three);
}
/**
* <p>Title: tempConversion</p>
* <p>
* Description:
* 3、华氏温度和摄氏温度互相转换,从华氏度变成摄氏度你只要减去32,乘以5再除以9就行了,
* 将摄氏度转成华氏度,直接乘以9,除以5,再加上32即行。[选做题]
* </p>
* @param degree
*/
private void tempConversion(int degree) {
// TODO Auto-generated method stub
//华氏温度
// int degree= 93;
//华氏温度 -> 摄氏温度
double degree2 = (degree - 32) * 5 /9.0;
System.out.println("华氏温度:" + degree);
System.out.println("摄氏温度:" + degree2);
//--------------------------------------------------------------
//摄氏温度
int degree3 = 34;
//摄氏温度 -> 华氏温度
double degree4 = degree3 * 9 / 5.0 + 32;
System.out.println("摄氏温度:" + degree3);
System.out.println("华氏温度:" + degree4);
}
/**
* <p>Title: main</p>
* <p>
* Description:
* </p>
* @param args
*/
public static void main(String[] args) {
LianXiTi lxt = new LianXiTi();
lxt.intSum(345);
lxt.tempConversion(93);
}
}
分割线
相关信息
以上就是我关于 Java运行符 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4