java运算符01_运算符(上)

1.赋值运算符

=,把等号右边表达式的结果赋值给等号左边的变量或final修饰的常量。

【随堂练习】

1、交换两个变量的值(用两种方式实现)。

方案一:定义一个零时变量来实现

public class OperatorDemo {
    public static void main(String[] args) {
        int num1 = 3, num2 = 5;
        // 方案一:定义一个零时变量来实现
        int temp = num1;
        num1 = num2;
        num2 = temp;
        // 交换之后:num1 = 5, num2 = 3
        System.out.println("num1 = " + num1 + " num2 = " + num2);
    }
}

该方式的优点:特别好理解,缺点:需要定义零时变量,浪费内存空间。

方案二:一加两减。

public class OperatorDemo {
    public static void main(String[] args) {
        int num1 = 3, num2 = 5;
        // 方案二:一加两减。
        num1 = num1 + num2; // num1 = 8
        num2 = num1 - num2; // num2 = 3
        num1 = num1 - num2; // num1 = 5
        // 交换之后:num1 = 5, num2 = 3
        System.out.println("num1 = " + num1 + " num2 = " + num2);
    }
}

该方式的优点:无需定义零时变量,节约内存空间,缺点:不太好理解。

2.算数运算符

算数运算符可分为:一元运算符和二元运算符

  • 二元运算符,需要两个操作数参与运算。

  • 一元运算符,只需要一个操作数参与运算。

2.1一元运算符

只需要一个操作数的运算符称为一元运算符,如++,-- 等。

++ 自增运算符

num++++num,都等价于num = num + 1

num++++num的区别:

  • ++num 先自增,后参与运算

  • num++ 先参与运算,后自增

-- 自减运算符

num----num,都等价于num = num - 1

num----num的区别

  • --num 先自减,后参加运算

  • num-- 先参与运算,后自减

【思考】

1、可以对常量进行递增或递减操作吗?例如:5++或++5。

【随堂练习】

1、int a = 3, b = 4; 求a++ / 3 + --b * 2 - a-- % 6 + b++ * 3 - ++b的值。

【经典面试题】

1、int num = 5; num = num++;请问代码执行后num的值为多少?

分析:很多学生以为num的结果为6,实际上num的结果为5,接下来我就给大家分析一下此题。

“num = num++;”底层操作
    第一步:定义一个零时变量,用于保存num的值。
          int temp = num; --> temp = 5;
    第二步:执行num的自增操作,也就是执行num++操作
          num = num + 1;    --> num = 6;
    --------------以上两步执行的是等号有边的操作-------------
    --------------最后一步,执行的是赋值操作-------------
    第三步:把零时变量的值赋值给等号左边的num。
          num = temp;   --> num = 5;

2.2二元运算符

二元运算符指的是需要两个操作数才能完成运算的运算符,例如:+,-,*,/,%。

+,加法运算,连接符操作,还可以表示正数。

-,减法运算,还可以表示负数。

*,乘法运算

/,除法运算

%,取模运算或取余运算,获得两个数相除的余数。

取模运算示例:

0 % 3,结果为:0 --> 强调,零模任何一个数,结果都为零。
1 % 3,结果为:1
2 % 3,结果为:2
3 % 3,结果为:0
4 % 3,结果为:1

取模运算的使用场合:判断m是否能被n整除:

  • 如果m能被n整除,则m%n的结果为零。

  • 如果m不能被n整除,则m%n的结果不为零。

【注意事项】

  1. 两个整数做除法运算,返回的结果肯定是一个整数。

  2. 两个数做除法运算,分母不允许为零,否则抛出算数异常。

【随堂练习】

1、获取整数987的百位数、十位数和个位数。

public class OperatorDemo {
    public static void main(String[] args) {
        // 2、获取整数987的百位数、十位数和个位数。
        int num = 987;
        // 个位数,7
        int bit1 = num % 10;
        System.out.println("个位数:" + bit1);
        // 十位数,8
        // 方案一:先获得98,然后再获得8
        // int bit2 = num / 10 % 10;
        // 方案二:先获得87,然后再获得8
        int bit2 = num % 100 / 10;
        System.out.println("十位数:" + bit2);
        // 百位数,9
        int bit3 = num / 100;
        System.out.println("百位数:" + bit3);
    }
}

3.扩展赋值运算符

扩展赋值运算符:是算术运算符和赋值运算符结合。

运算符 用法举例 等效的表达式
+= a += b a = a+b
-= a -= b a = a-b
*= a *= b a = a*b
/= a /= b a = a/b
%= a %= b a = a%b

【随堂练习】

1、获取三个学生的成绩,并计算三个学生成绩的平均分。

【常见面试题】

1、int num = 3; num *= 2 + 3; 请问num的结果为多少?

分析:很多同学认为num *= 2 + 3;等效于num = num*2 + 3,所以认为num的结果为9。

​ 而实际上,num *= 2 + 3;等效于num = num*(2 + 3),所以num正确的结果是15。

2、short num = 11; num = num + 1;short num = 11; num += 1;哪一个正确呢?

分析:short num = 11; num = num + 1;语法错误,因为num + 1的结果为int类型。
short num = 11; num += 1;语法正确,因为num += 1;等效于num = (short)(num + 1);

3、int sum += 30; 请问这行语句语法是否正确???

分析:int sum += 30; 等效于int sum; sum += 30;,num只声明未赋值,无法参与算数运算,所以该语句语法错误。

4.关系运算符

关系运算符用来进行比较运算,关系运算符的运算结果是boolean类型。条件成立,则返回true。条件不成立,则返回false。。

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

==(相同):比较左右两边的数值是否相同。相同则返回true,否则返回false。

!=(不相同):比较左右两边的数值是否不相同。不相同则返回true,相同则返回false。

注意事项:

1、请问以下代码执行的结果是什么???

boolean flag = false;
if(flag = true) { 
    System.out.println("flag等于true");  // 此行语句输出
}
else {
    System.out.println("flag等于false");  
}   

注意:在if的条件表达式中,”flag = true“做了赋值操作,而不是比较操作。

建议:常量放在”==“的左边,变量放在”==“的右边。

好处:如果“==”误写为“=”,那么问题就提前暴露在编译时,避免把问题暴露在运行时。

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容