2018.9.11学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Haidaiya/article/details/82661219

1 java中的异或和位运算符

^ 异或表示相同为false,不同为true;例如 true ^ false为true;true^true为false。

&&  和 &  他们所得到的结果相同,但是前者表示短路与,即如果左边为false则右边就不再执行,同理,||  与 |  表示的意思相同

位运算符将所有的数都看作二进制计算,此时8421口诀就很方便了。

上述位运算符都很简单,但是按位取反有一定难度,这里解释一下^6如何求?

首先6的二进制,00000000        00000000     00000000   00000110

取反                    11111111          11111111       11111111    11111001(这里得到的是补码)

取反后我们发现这个数很大啊!!其实之前提到过,计算机计算都是按照补码进行计算的,所以我们在这里需要将补码还原回去,补码等于反码+1,所以反码等于补码-1

反码                    11111111              11111111      11111111       11111000

源码                    10000000             00000000      00000000   00000111

等于-7

一个数被另一个数据异或2次,这个数本身不变,例如System.out.println(5 ^ 10 ^ 10);结果还是5

面试题:交换2个变量

2 java中的左移和右移和无符号右移

注意一下,如果给的是负数,就要先求它的补码,再进行计算,得到的结果依然是补码,需要转换为原码,正数的原反补相同,补码——》反码:补码-1;反码——》原码:符号位不变,其余取反即可。

作用:

如果直接计算2 * 8,计算机会将2转化为2进制,8转换为2进制,但是我们知道左移几位,就等于当前数字乘2的几次方,所以2*8  等于2*2的三次方,就等于2向左移动3位。

3 java中的键盘输入

(1)导包

import  java.util.Scanner;

(2)创建Scanner对象

Scanner sc = new Scanner(System.in);

(3)输入数据

int x = sc.nextInt();

4 java的程序运行流程结构

有3种,顺序,选择(if,switch),循环(for,while)

这里需注意一点,当if后面不加{}时,if默认控制离他最近的一条语句。

那为什么这里int  x = 10;会出错呢?因为int x = 10;是2条语句,很重要,自己之前从来没有仔细思考过,所以if就报错了。

三元运算符和if语句作用是一样的,完全可以替代,以后注意多采用三元运算符实现代码,只有一种情况不能用三元运算符,就是当if语句中出现输出语句时,三元运算符不可以替代,因为三元运算符不能输出语句,但是我们用字符串代替。

关于switch语句,注意一下,switch可以接受的数据类型不是很多,首先他可以接受可以转化为int的数据类型,有byte,short,char,int。但是long不可以,其次它还可以接受char类型,还有枚举类型,除此之外,在JDK1.7之后,增加了一种类型就是String类型。

switch在运用的时候有2个地方新手经常犯错误,其一,每个case后面需要加上break;语句。其二,应该加上default:语句,加上的作用在于提示错误值。

猜你喜欢

转载自blog.csdn.net/Haidaiya/article/details/82661219