java:运算符(一) day8

活动地址:CSDN21天学习挑战赛

运算符是一种特殊符号,用来表示数据的运算、赋值、关系等;

一、算术运算符

优先级运算符名称功能
4+,-加、减加减法运算
3*,\乘、除乘除法运算
3%取模(取余)相除取余数(必须是整数)
1(除括号外最高)++,--自加自减(前)先++,后参与运算
++,--自加自减(后)先参与运算,后++

注:作为单目运算符,自增自减的优先级极高,在所有运算符中仅次于分隔符和括号;但由于自增自减(后)是要在所有运算(赋值以前)结束后才会进行运算,所以我们可以认为它的优先级排序为无限大,即运算中永不计算。

曾经的我是这么想的,但后来我发现,运算的优先级并非是运算的先后顺序,而是与变量或常量的结合力,自增自减(后)的运算虽然相对靠后,但它与变量的结合力强,所以优先级依然很高。

1、+、-、*的运算与加法无异

2、/的使用:由于java中存在着整数与浮点数的区分,所以除法可能会存在10÷4=2······2(余数被舍弃)。

(1)、int a = 10 / 4; ==> a = 2

原因:整数除不尽

(2)、double a = 10 / 4;==> a = 2.0

原因:10/4是整数运算,由于除法优先级高于赋值语句,所以10/4先运算,得到一个整型的“2”,整型的2赋值给双精度浮点型的“a”。

public static void main(String[] arg){
		//“/”的使用
		int a = 10 / 4; //整数的除法,
		System.out.println(a);
		double d1 = 10 / 4; //整数除法赋值给浮点型变量
		System.out.println(d1);
	}

2

2.0

3、取模(取余数):  a % b == a - (int)a / b * b.

a % b = ca > 0a < 0
b > 0c > 0c < 0
b < 0c > 0c < 0

模运算不止可以在整数中进行,即a%b(a可以是小数)

4、自增自减:

(1)自增在前:先自增,再运算;

(2)自增在后:先运算,后自增;

(3)i = i++;  ==>temp = i; i++; i =temp即运算过程中:i++ == i;  ++i == i +1;

int i1=1,i2=1;
		System.out.println(++i1);   //先自增,再参与语句的运算
		System.out.println(i2++);   //先参与语句的运算,结束后再运算
		System.out.println(i1);
		System.out.println(i2);
		//但无论如何,在最后都会进行自增运算。

int i3 = 1;       
		i3 = i3++;           //先将i赋值给一个临时变量temp,i++,将临时变量temp的值重新赋给i
		System.out.println(i3);
		i3 = ++i3;           //先i++,再将i赋值给一个临时变量temp,将临时变量temp的值重新赋给i
		System.out.println(i3);

2

1

2

2

1

2

5、练习:

 * 题目一:

59天合多少星期零几天?
 * 题目二:

将华氏温度(235℉)转换成摄氏温度注:转换公式  摄氏度 = 5 / 9 * (华氏温度 - 100)

/* 题目一:
 * 59天合多少星期零几天?
 * 题目二:
 * 将华氏温度(235℉)转换成摄氏温度
 * 注:转换公式  摄氏度 = 5 / 9 * (华氏温度 - 100)
 */
/*
 * 需求分析:
 * 题目一:59天合多少星期多少天==》59 / 7 == x………y;
 * 其中x = 59 / 7; y = 59 % 7;其中x,y必须是整数;
 * 题目二:转换公式为5/9*(华氏温度-100)
 * 其中摄氏温度和华氏温度都为double类型变量,
 * 5和9也需要为double类型,所以需要用他们的浮点形式:5.0和9.0
 * 若还想继续用5和9,则需要写成(华-100)*5/9,即阻止这两个数间的运算。
 */
public class examine2 {
	public static void main(String[] arg){
		int week = 59 / 7;
		int day = 59 % 7;
		System.out.println("59天合"+week+"星期又"+day+"天");
		
		double c = 0,f = 235;
		c = 5.0 / 9.0 * (f - 100);
		System.out.println(c);
	}
}

二、关系运算符

优先级关系运算符意义运算结果
8==等于关系运算符的运算结果只有两个false和true,满足条件为true,不满足条件为false.所以结果只能赋值给boolean
8!=不等于
7>大于
7<小于
7>=大于等于
7<=小于等于

1、关系运算符常用于条件语句 if 等。

2、关系表达式:关系运算符和变量组成的表达式

public static void main(String[] arg){
		int i1 = 1,i2 = 2;
		System.out.println(i1==i2);
	}

false

三、逻辑运算符

优先级99.29.11010.1
名称逻辑与逻辑或逻辑异或短路与短路或取反
作用a且ba或bab不同a且ba或ba取反值
表达式aba&ba|ba^ba&&ba||b!a
结果TTTTFTTF
TFFTTFTF
FTFTTFTT
FFFFFFFT

1、短路与和短路或:

短路与&&、短路或||与&、|从结果上看是一样的,但对于短路与&&,若判断玩第一个条件后发现为false,则不再判断第二个条件,直接输出false;对于短路或||,若判断第一个条件后发现为true,则不再判断第二个条件,直接输出true。

短路与、短路或的效率比之与或的效率更高。

public static void main(string[] args){
		system.out.printIn(5>3 & 5>2) \\结果为true
		system.out.printIn(5>3 & 5>6) \\false
		system.out.printIn(5>3 | 5>6) \\true
		system.out.printIn(!false) \\true
		system.out.printIn(!true)  \\false
		system.out.printIn(true ^ false)  \\true
		system.out.printIn(true ^ true)  \\flase
		system.out.printIn(false^ false)  \\flase
	}

总结:运算符中最困惑的部分还是自增自减,处于一种懂了但没有完全懂得状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值