Java基础03:基本运算符

Java基础03:基本运算符


基本运算符

Java语言支持如下运算符

  • 算术运算符:+,-,*,/,%(取余,模运算),++,--
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>(了解就好)
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

运算符优先级

  1. 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
  2. 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。
  3. instanceof作用是判断对象是否为某个类或接口类型。
  4. 注意区分正负号和加减号,以及按位与和逻辑与的区别。

各运算符使用方法及特例

不同数值类型相互运算,无long或更高优先级类型则自动转换为int类型。

算术运算符


//二元运算 +,-,*,/,%,++,--
int m = 10;
int n = 20;
long a = 123456789;
int b = 123;
short c = 10;
byte d = 8;
float e = 1.23f;
double f = 4.56d;
System.out.println(m/n);//输出为0,因为是int类型
System.out.println(m/(double)n);//输出为0.5,将int类型强转为double将int类型强转为double
System.out.println(a+b+c+d);//long类型
System.out.println(b+c+d);//int类型
System.out.println(c+d);//int类型,无long或更高优先级类型,自动转换为int类型
System.out.println(d+e);//float类型
System.out.println(d+f);//double类型
System.out.println(a+f);//double类型
System.out.println(b%m);//取余,模运算,int类型,输出为:3

++(自增)、--(自减)运算符

自增/自减运算符运算时相当于隐藏了一行代码,例子如下:

int a = 3;
//自增/自减运算隐藏着一行代码 a = a + 1/a = a - 1
int b = a++;//执行完a++这行代码后,先给b赋值 b = a,再自增执行隐藏代码a = a + 1
System.out.println(a);//输出为:4
int c = ++a;//执行完++a这行代码前,先给a自增执行隐藏代码a = a + 1,再给c赋值c = a
System.out.println(a);//输出为:5
System.out.println(b);//输出为:3
System.out.println(c);//输出为:5

小拓展初识Math类

/*小拓展初识Math类
        幂运算 2*2*2 = 8 很多运算,我们会使用一些工具类来操作
        变量声明快捷键,Math.pow(2,3)输入完按Alt+回车,按住Ctrl左键点击Math可查看Math类源代码
*/
double pow = Math.pow(2, 3);
System.out.println(pow);//输出为:8

逻辑运算符

boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//逻辑与运算,输出为:false
System.out.println("a || b:"+(a || b));//逻辑或运算,输出为:true
System.out.println("!(a && b):"+!(a&&b));//逻辑非运算,输出为:true

//短路运算
int c = 5;
//证明:如果执行了(c++<4)则System.out.println(c);输出为6证明后半段语句被执行,结果为5则证明后半段未被执行短路了
boolean d = (c<4) && (c++<4);//在逻辑与运算中第一个变量就是false则触发短路运算,后一个变量不再执行,输出结果false
System.out.println(d);//输出为:false
System.out.println(c);//输出为:5

位运算符

A = 0011 1100
B = 0000 1101
-------------------------------
A&B = 0000 1100 //与运算对应位置相同则为该数,不同则为0
A|B = 0011 1101 //或运算对应位置相同则为该数,不同则为1
A^B = 0011 0001 //异或运算对应位置相同则为0,不同则为1
~B = 1111 0010 //将B 01取反
  • 面试题:2*8怎么运算最快?

    /*
    <<  >> 左移/右移(箭头指向那边往哪边移动) 优点:运算效率极高!
      << *2 //乘2
      >> /2 //除以2
      2*8 = 2*2*2*2
    */
    System.out.println(2<<3);//输出为:16
    

扩展赋值运算符符

int a = 10;
int b = 20;
a+=b; //a = a+b;
a-=b; //a = a-b;

//字符串连接符  + 从左到右的顺序,只要+号左侧出现了String类型,则会把其他类型的转化为String类型
System.out.println(""+a+b);//输出为1020
System.out.println(a+b+"");//输出为30

字符串连接符 + 从左到右的顺序,只要+号左侧出现了String类型,则会把其他类型的转化为String类型。

条件运算符

//x ? y : z 如果x==true,则结果为y,否则为z
int score = 50;
String type = score < 60 ? "不及格":"及格";//必须掌握,精简代码,便于理解
System.out.println(type);//输出为:不及格
posted @   lurenj  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示