java运算符

时间:2023-02-03 19:06:36

1.概述

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

1) 算术运算符

2) 赋值运算符

3) 关系运算符 [比较运算符]

4) 逻辑运算符

5) 位运算符 [需要二进制基础]

6) 三元运算符

2.算数运算符

算数运算符是对数值类型的变量进行运算的,在java程序中使用的非常多

java运算符

2.1 除号 /

//算数运算符 /号
public class Test6
{
public static void main(String[] args)
{
System.out.println(10/4);//2,从数学来看是2.5,但是从java来看就是2
System.out.println(10.0/4);
double d1 = 10/4;
System.out.println(d1);//2.0
}
}

2.2 取模% 63

2.2.1在java中%的本质,看一个公式a%b=a-a/b*b

//取模%
//在java中%的本质,看一个公式a%b=a-a/b*b
public class Test6
{
public static void main(String[] args)
{
System.out.println(10%3);//1
System.out.println(-10%3);//-1, -10-(-10)/3*3=-10+9=-1
System.out.println(10%-3);//1, 10-10/(-3)*(-3)=10-9=1
System.out.println(-10%-3);//-1, (-10)-(-10)/(-3)*(-3)=-10+9=-1

}
}

2.3 运算符++

--与++规则一致

前置++,先++后使用

后置++,先使用后++

//运算符++
//前置++,先++后使用
//后置++,先使用后++

public class Test6
{
public static void main(String[] args)
{
int i = 10;
i++;//11
++i;//12
System.out.println("i="+i);//12
//前置++
int j = 8;
int k = ++j;
System.out.println("j="+j+" k="+k);// 9 9
//后置++
int a = 8;
int b = a++;
System.out.println("a="+a+" b="+b);//9 8

}
}

3.面试题练习

例1

注意:i=i++;//后置++三步走:(1) temp=i;(2) i=i+1;(3)i=temp;

public class Test6
{
public static void main(String[] args)
{
int i=1;
i=i++;//三步走:(1) temp=i;(2) i=i+1;(3)i=temp;
System.out.println(i);//1
}
}

例2

i=++i;//前置++三步走:(1)i=i+1;(2)temp=i;(3)i=temp;注意此式三步走与上式顺序不同

//例2
public class Test6
{
public static void main(String[] args)
{
int i=1;
i=++i;//三步走:(1)i=i+1;(2)temp=i;(3)i=temp;注意此式三步走与上式顺序不同
System.out.println(i);//2
}
}

测试输出

//测试输出
public class Test6
{
public static void main(String[] args)
{
int a1=10;
int a2=20;
int a=a1++;
System.out.println("a="+a);//10
System.out.println("a2="+a2);//20
a=--a2;
System.out.println("a="+a);//19
System.out.println("a2="+a2);//19
}
}

4.练习 66

练习1

2.思路分析

(1) 使用 int 变量 days 保存 天数

(2) 一个星期是 7 天 星期数 weeks: days / 7 零 xx 天 leftDays days % 7

(3) 输出

//课堂练习1
//假如还有 59 天放假,问:合 xx 个星期零 xx 天
public class Test6
{
public static void main(String[] args)
{
int days=59;
int weeks = days/7;//多少个星期
int leftdays = days%7;//零多少天
System.out.println(weeks+"个星期零"+leftdays+"天");//8个星期零3天
}
}

练习2

课堂练习2

定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。 [234.5]

2 思路分析

(1) 先定义一个 double huaShi 变量保存 华氏温度

(2) 根据给出的公式,进行计算即可 5/9*(华氏温度-100)

考虑数学公式和 java 语言的特性

(3) 将得到的结果保存到 double sheShi

3 走代码

//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。 [234.5]
public class Test6
{
public static void main(String[] args)
{
double huashi = 234.5;
double sheshi = 5.0/9*(huashi-100);//5/9*(华氏温度-100) 这里的5/9计算机直接认为的0了所以要用5.0/9
System.out.println("华氏温度"+huashi+"对应的摄氏温度是"+sheshi);
}
}

5. 关系运算符

1) 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false

2) 关系表达式 经常用在 if 结构的条件中或循环结构的条件中

5.1 关系运算符概图

java运算符

5.2 例1

//关系运算符
public class Test7
{
public static void main(String[] args)
{
int a = 9;//提示: 工作开发中,不要将变量写的这么简单例如 a, b
int b = 8;
System.out.println(a>b);//T
System.out.println(a>=b);//T
System.out.println(a<=b);//F
System.out.println(a<b);//F
System.out.println(a==b);//F
System.out.println(a!=b);//T
boolean flag = a>b;
System.out.println("flag="+flag);//true
}
}

关系运算符注意细节

2) 关系运算符组成的表达式,我们称为关系表达式。 a > b

3) 比较运算符"=="不能误写成"="

6. 逻辑运算符

用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值

6.1 说明逻辑运算规则:

1) a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false

2) a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false

3) a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false

4) a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false

5) !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true

6) a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

6.2 概图

java运算符

7. &&(短路与)和&(逻辑与)的使用 71

7.1 规则

名称 语法 特点

短路与&& 条件 1&&条件 2 两个条件都为 true,结果为 true,否则 false

逻辑与& 条件 1&条件 2 两个条件都为 true,结果为 true,否则 false

7.2 &&(短路与)和&(逻辑与)的区别

1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高

2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低

//&&(短路与)和&(逻辑与)的使用
public class Test7
{
public static void main(String[] args)
{
//&&(短路与)的使用
int age = 50;
if(age>20 && age<90)
{
System.out.println("ok100");
}

//&(逻辑与)的使用
if(age>20 & age<90)
{
System.out.println("ok200");
}

//区别
//1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
//2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
int a = 4; int b = 9;
//if(a < 1 && ++b < 50)
// {
//System.out.println("ok300");
//}
//System.out.println("a=" + a + " b=" + b);// 4 9

if(a < 1 & ++b < 50)
{
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);// 4 10
}
}

8. ||(短路或)和|(逻辑或)的使用 72

8.1规则

名称 语法 特点

短路或|| 条件 1||条件 2 两个条件中只要有一个成立,结果为 true,否则为 false

|逻辑或 条件 1|条件 2 只要有一个条件成立,结果为 true,否则为 false

8.2||(短路或)和|(逻辑或)区别

(1)||短路或:如果第一个条件为 true, 则第二个条件不会判断,最终结果为 true,效率高

(2)| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低

public class Test7
{
public static void main(String[] args)
{
//||(短路或)的使用
int age = 50;
if(age>20 || age<30)
{
System.out.println("ok100");
}

//|(逻辑或)的使用
if(age>20 | age<30)
{
System.out.println("ok200");
}

//区别
//(1)||短路或:如果第一个条件为 true, 则第二个条件不会判断,最终结果为 true,效率高
//(2)| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低

int a = 4; int b = 9;
// if(a > 1 || ++b >4 )//短路或
// {
// System.out.println("ok300");
// }
// System.out.println("a=" + a + " b=" + b);// 4 9

if(a > 1 | ++b > 4)//逻辑或
{
System.out.println("ok300");
}
System.out.println("a=" + a + " b=" + b);// 4 10
}
}

9. 取反!和^异或 73

9.1 规则

!取反,真变假,假变真

异或,相同为假,不同为真

9.2 例

//取反!和^异或
public class Test7
{
public static void main(String[] args)
{
//!取反,真变假,假变真
System.out.println(60>20);//T
System.out.println(!(60>20));//F

//异或,相同为假,不同为真
boolean b1 = (10>1)^(3<5);
System.out.println("b1="+b1);//F

boolean b2 = (10>1)^(3>5);
System.out.println("b2="+b2);//T
}
}

10. 逻辑运算符练习 74

java运算符

10.1 例1

public class Test7
{
public static void main(String[] args)
{
// int x = 5;
// int y = 5;
// if(x++==6 & ++y==6)
// {
// x=11;
// }
// System.out.println("x="+x+"y="+y);//6 6

int x = 5;
int y = 5;
if(x++==6 && ++y==6)
{
x=11;
}
System.out.println("x="+x+"y="+y);//6 5
}
}

10.2 例2

public class Test7
{
public static void main(String[] args)
{
int x = 5;
int y = 5;
if(x++==5 | ++y==5)
{
x=11;
}
System.out.println("x="+x+"y="+y);//11 6

// int x = 5;
// int y = 5;
// if(x++==5 || ++y==5)
// {
// x=11;
// }
// System.out.println("x="+x+"y="+y);//11 5
}
}

10.3 例3

java运算符

public class Test7
{
public static void main(String[] args)
{
boolean x = true;
boolean y = false;
short z=46;
if((z++==46)&&(y=true))
z++;
if((x=false)||(++z==49))
z++;
System.out.println(z);//50

}
}