运算符Day04-2019-03-28

赋值运算符

基本的赋值运算符 =
扩展的赋值运算符 += -= *= /= %=

注:1.扩展的赋值运算符,其实内涵强制类型转换。 b += 20; //b = (byte)(b + 20);  
    2.赋值运算符的是从右到左结合的
    3.连续赋值的时候,在编译的时候会用初始值替代中间变量

算术运算符

        A:+  -  *  /  %  ++  --
        B:+的用法
            a:正号
            b:加法
            c:字符串拼接
        C: / 和 %
            a:结果是整数,向0取整
                * 1.0
            b: 判断一个数是否是奇数
                a % 2 != 0   (a & 1 == 1)
                a % 2 = (a - (a / 2) * 2)   
        D:++和--的用法
            a:使用
                **单独使用
                    a++
                    ++a 
                **参与操作使用
                    int b = a++;
                    int b = ++a;
                    后++ --,是先参与运算,再自增自减
                    前++ --,是先自增自减,再参与运算
            b:底层原理
                b = a++;
                temp = a;
                a = a + 1;
                b = temp;
                
                b = ++a;
                a = a + 1;
                b = a;

关系运算符

== ,!= ,< , > ,<= , >= , instanceof
关系运算符的结果是boolean类型,并且不会改变操作数的值
instanceof 是用来判断对象是否能被某个类接收


三目运算符

格式:(关系表达式) ? 表达式1 : 表达式2
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;

应用:获取三个整数中的最大值(三目运算符的嵌套)
比较两个整数是否相同


自增运算符

前++,先自增,再参与运算

int b = a++; 
int temp = a;  // int b = a++;的实现原理,先赋值给temp,再自增
a = a + 1;
b = temp;
    
a = a++;
temp = a;
a = a + 1;
a = temp;

逻辑运算符

&(逻辑与)(长路与,两边都计算),&&(短路与),
|(逻辑或)(长路或,两边都计算),||(短路或)
^(异或)
!(非) (单目运算符)
操作数必须是boolean表达式


位运算符

位运算符只能对整数进行操作(char可以看做是特殊的整数)

&(按位与)

a & 0xffffffff = a;
a & 0 = 0;

|(按位或)

a | 0xffffffff = 0xffffffff;
a | 0 = a;

^(按位异或)

a ^ a = 0;
a ^ 0 = a;
a ^ b = b ^ a;
a ^ b ^ b = a;

~(按位非)

 <<(左移): 空位补0,被移除的高位丢弃

 >>(右移): 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,最高位补1

 >>>(无符号右移)(只有无符号右移): 被移位二进制最高位无论是0或者是1,空缺位都用0补。

注意事项:
    左移几位,就相当于乘以2的几次方
    右移几位,就相当于除以2的几次方位数,
    如果移除的位数大于等于数据类型的位数,就是对他进行取余操作
        a << m
        a << m(mod n)
                注:mod和%的区别,mod无正负之分

面试题

1.请用最有效率的方式写出计算2乘以8的结果
2<<3
2.请自己实现两个整数变量的交换

1.临时变量的交换
2.加法的互逆(a + b - b = a)
3.按位异或的互逆(a ^ b ^ b = a)
    a = a ^ b;
    b = a ^ b;  // b = (a ^ b) ^ b;
    a = a ^ b;  // a = (a ^ b) ^ a
4.把2,3写成一行
    a = ( a + b ) - ( b = a );
    a = ( a ^ b ) ^ ( b = a );

3.判断一个数是否是2的n次幂

(1)方法一:是否能被2整除,时间O(logn)
(2)方法二:关键分析2的n次幂的特点,二进制表示只有1位1
a:      00000100000000000000000000
a-1:    00000011111111111111111111
        
a:      00000100000001000000000000
a-1:    00000100000000111111111111
利用按位与
2的n次幂能被整除的条件:(a & (a-1)) == 0

4.一堆整数中都是成双存在,只有一个数是单独存在,请找出这个数?
提示:用 ^ (按位异或)运算

5.%运算符是一个比较复杂的操作,对于正整数a而言,怎么替换a%b运算 (b 必须是 2^n次幂)?

a % b == a & (b - 1)

6.求一个数的绝对值

int i = a >> 31;  //取符号位,正数 i = 0,负数 i = -1
return i == 0 ? a : (~a + 1); 

改进版:
int i = a >> 31;  
return ((a ^ i) - i);

键盘录入

1.导包

import java.util.Scanner;

2.创建对象

Scanner sc = new Scaner(System.in);

3.接受数据

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

推荐阅读更多精彩内容

  • 党玲芬:何为心安?我的心安,是拥有专业自信和人生自信。在教学上、班级管理上、对生命的理解上,以及在课程的规划与开发...
    雪松_d0e3阅读 79评论 0 1
  • 重阳节思乡 身在山西亦早行,晓光菊苑露晶莹。 秋云怜影飘鹾海,红叶知时归舜城。 欲敬醇醪家已远,未登崤岭意何平。 ...
    悠雲晨曦深处阅读 175评论 0 1
  • 前言:总结了学习中遇到的几种NSDate和NSString比较的情况 pragma mark -- 01 时间字符...
    浮桥小麦阅读 486评论 0 2
  • 阳光明媚的下午。 王者峡谷里,红蓝双方十位英雄猥琐发育,该清兵的清兵,该刷野的刷野,没有爆发一次团战,气氛一片祥和...
    小黯影阅读 500评论 0 3
  • 我亲爱的宝贝 你为什么这么傻? 为了爱情 你忘却了生命
    止儿徐子阅读 333评论 3 7