当前位置: 首页 > article >正文

Java菜鸟养成计划(java基础)--java运算符

java中的运算符

  • 1、java中的运算符
    • 1.1 、+ 、-、 * 、/ 、 %
    • 1.2 、+=、-=、 *=、/=、%=
    • 1.3 、++、--【自增\自减运算符】
    • 1.4、`>、 <、 >= 、<= 、== 、!= 、! =`
    • 1.5、&&、||、|、&
    • 1.6、&、|、~、^
    • 1.7、>> 、 <<、>>>位运算
    • 1.8、`?:`三目运算符

1、java中的运算符

  • 最小单位是int

1.1 、+ 、-、 * 、/ 、 %

  • +运算

    • 算数加法
      • 在基本数据类型使用时做加法
      • 运算结果如果赋值给取值范围小于int的数据类型时,注意强转
       int x = 10;
       char c1 = 'c'+x; //注意此时需要强转,因为此时已经声明变量x为int 
    
    • 追加连接
      • String + String
  • -运算

    • 算数减法
  • *运算
    - 防止计算过程越界=>及时更换取值范围大的类型

  • /运算

    • 除法运算过程中不要出现0
  • %【模运算】

    • 运算结果的符号取决于参与运算的第一个数字的符号【%运算符左侧的数字】
	System.out.println(5%2);//1
	System.out.println(-5%2);//-1
	System.out.println(5%-2);//1
	System.out.println(-5%-2);//-1

1.2 、+=、-=、 *=、/=、%=

  • 这一组运算符保证左侧类型不变 ----- 底层可能隐式强转
	short x = 45;
	x = x + 10;// 报错 int => short
	// 解决:x = (short)(x+10);
	
	short y = 45;
	y += 10; // 底层隐式强转
	
	
	int x = 45;// 【*】 类似
	// x = x + 10; 
	x+=10;
	// x = 10 + x;// 变成x=x+10
	x+=10;
	
	int y = 55;// 【/类似】
	y = y - 10;
	y -= 10;
	
	/**
		y = 10-y;
		不能改写 y-=10;
	*/

1.3 、++、–【自增\自减运算符】

	x++:先取值 再运算
	++x:先运算 再取值

	x--:先取值 在运算
	--x:先运算 再取值

1.4、>、 <、 >= 、<= 、== 、!= 、! =

  • 成立/不成立
  • !=
    • 判断左右两侧的数据是否不相等
  • = 和 == 有什么区别
    • =:赋值运算符,将符号右侧的内容交给左侧变量保存
    • == :条件判断 判断左右两侧的内容是否一致
      • 在进行基本数据类型的比较时比较的是内容
      • 引用数据类型的比较时比较的是地址
  • !取反运算符【用在boolean】
    • !true => false
    • !false => true

1.5、&&、||、|、&

面试题:&&和&的区别
相同点:都是逻辑与
不同点:&&又叫“短路与”,具有短路特性,当&&左侧运行结果为false时,右侧不在执行;&不具备短路特性,当左侧为false时,右侧依然执行

||和|的区别
相同点:都是逻辑或
不同点:||又叫短路或,具有短路特性,当||左侧的结果为true时,右侧不在执行;|不具备短路特性,左侧为true右侧仍然执行

1.6、&、|、~、^


&按位与【逢009&5
    00001001
    00000101 &
    00000000 => 1

|按位或【逢119|5
    00001001
    00000101 |
    00001101
~按位取反 【1->0 0->1~9
    ~00001001
     11110110
^按位异或【想通为0 不同为100001001
    00000101^
    00001100 => 12

  • 在某种情况下&可以取代%运算
%2 %4 %8 %16 ... %2(n)
&1 &3 &7 &15 ... &2(n)-1
如果(num&num-1) == 0 就表示num是2的n次方
  • 交换两个变量的内容
    • 开辟第三块空间
int x = 10;
int y = 1;
int temp = x;
x = y;
y = temp;
  • 不开辟第三块空间
//使用三次异或
int x = 10;
int y = 1;
x = x ^ y;
y = x ^ y;
x = x ^ y;

1.7、>> 、 <<、>>>位运算

byte x = 10;
x >> 2
00001010 >> 2
00000010
    
byte y = 7;
y << 2
00000111 << 2
00011100
    
** 效率取代[* /]
    << 取代 *
    *2 *4 *8 ... *2(n)
    <<1 <<2 <<3 .. <n
    
    00001010 << 1
    00010100 => 4+16 = 20
	
    >> 取代 /
    /2 /4 /8 ... /2(n)
    >>1 >>2 >>3 ... >>n
	10/2=5
    00001010 >> 1
    00000101 => 5
  • 效率取代
num%2(n) => num&2(n)-1
num*2(n) => num<<2(n)-1
num/2(n) => num>>2(n)-1

1.8、?:三目运算符

  • boolean?2:3
    • 第一部分肯定为boolean类型
    • 如果第一部分为true执行2
    • 如果第一部分为false执行3

boolean?2:3
    2/3有数字有char
    检验数字有没有在char范围内
    在char范围内 2/3char类型转
    不在char分为内 将数字直接理解为int 2/3int转【char类型变成对应的ASCII

http://www.kler.cn/a/514931.html

相关文章:

  • 大华前端开发面试题及参考答案 (下)
  • OGG 19C 集成模式启用DDL复制
  • 将UI界面交给第三方库
  • Redis的Windows版本安装以及可视化工具
  • 使用Websocket进行前后端实时通信
  • “大模型横扫千军”背后的大数据挖掘--浅谈MapReduce
  • import.meta.globEager详解
  • k8s基础(7)—Kubernetes-Secret
  • YOLOv10改进 | YOLOv10引入AKConv(轻量)
  • YOLO 安装 并且命令行指定配置文件
  • 文件快递柜:匿名口令分享工具,轻松安全地存取文本与文件
  • Centos 修改历史读录( HISTSIZE)
  • 力扣-数组-414 第三大的数
  • 蓝桥杯备考:红黑树与map和set
  • 【Block总结】PConv风车卷积,更大的感受野,提高特征提取能力|即插即用
  • K8S中Service详解(一)
  • gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
  • docker安装elk6.7.1-搜集nginx-json日志
  • docker安装elk6.7.1-搜集java日志
  • SparkSQL函数综合实践
  • jinja2.exceptions.UndefinedError: ‘enumerate‘ is undefined
  • 汽车OEMs一般出于什么目的来自定义Autosar CP一些内容
  • 2501,进度控件
  • Unity3D项目开发中的资源加密详解
  • jenkins-pipeline 动态生成参数
  • Codeforces Round 1000 (Div. 2)(前三题)