介绍:在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。需要一个 扫描器(对象), 就是Scanner
。
注意:
(1)导入该类的所在包, java.util.*
(2)创建该类对象(声明变量)
(3)调用里面的功能
import java.util.*;//键盘输入需要导入的包
public class Case3 {
public static void main(String[] args) {
// 新建类对象 myScanner 就是 Scanner 类的对象
Scanner myScanner = new Scanner(System.in);
// 3. 接收用户输入了, 使用 相关的方法
System.out.println("请输入名字:");
// 接收用户输入字符串
String name = myScanner.next();
System.out.println("请输入年龄:");
// 接收用户输入 int
int age = myScanner.nextInt();
System.out.println("请输入薪水:");
// 接收用户输入 double
double sal = myScanner.nextDouble();
System.out.println("人的信息如下:");
System.out.println("名字=" + name + " 年龄=" + age + " 薪水=" + sal);
}
}
对于整数,有四种表示方式:
二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
十进制:0-9 ,满 10 进 1。
八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大小写。
public class Case4 {
public static void main(String[] args) {
// n1 二进制
int n1 = 0b1010;
// n2 十进制
int n2 = 1010;
// n3 八进制
int n3 = 01010;
// n4 十六进制
int n4 = 0X10101;
System.out.println("n1=" + n1);
System.out.println("n2=" + n2);
System.out.println("n3=" + n3);
System.out.println("n4=" + n4);
System.out.println(0x23A);
}
}
进制 | 开头 |
---|---|
二进制 | 0b |
八进制 | 0 |
十六进制 | 0x |
分别是按位与&、按位或|、按位异或^、按位取反~,
它们的运算规则是:
按位与&:两位全为1,结果为1,否则为0
按位或|:两位有一个为1,结果为1,否则为0
按位异或|^∶两位一个为0,一个为1,结果为1,否则为0
按位取反~:0->1,1->0
还有 3 个位运算符 >>、<< 和 >>> , 运算规则:
(1) 算术右移 >>: 低位溢出,符号位不变,并用符号位补溢出的高位
(2) 算术左移 <<: 符号位不变,低位补 0
(3) >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
(4) 特别说明:没有 <<< 符号
int a=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 =0
int c=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4
public static void main(String []args)
{
int a=1>>2; // 1 向右位移 2 位
/* 这里就按一个直接推(int型一般是4个字节)
0000 0001 右移动2位,溢出的不要并用符号位补,
所以得到 0000 0000 (补码) 0的源码和补码一样,
即输出 0
*/
int b=-1>>2;//算术右移
/* 原 1000 0001 反 1111 1110 负数的补码 = 它的反码 +1;
补 1111 1111 右移动2位,溢出的不要并用符号位补,
得 1111 1111(补码)负数的反码 = 负数的补码 -1,
1000 0000(反),源码1000 0001 ,即输出 -1
*/
int c=1<<2;//算术左移
int d=-1<<2;//
int e=3>>>2;//无符号右移
//a,b,c,d,e 结果是多少
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
System.out.println("e="+e);
}
~2=? // 按位取反
2&3=?// 2 按位与 3
2 ^ 3=? //^ 按位异或
~-5=?
13 & 7=?
5 | 4=?
-3 | 3=?
public class Case6 {
public static void main(String[] args) {
int a = ~2;// 按位取反
//补 0000 0010 取反 1111 1101(补)
//负数的反码 = 负数的补码 -1
//1111 1100(反) 源码 1000 0011,即 -3
int b = 2 & 3;// 2 按位与 3
// 2 的补码 0000 0010
// 3 的补码 0000 0011 按位与&:两位全为1,结果为1,否则为0
// 0000 0010,即 2
int c = 2 ^ 3;// ^ 按位异或
// 2 的补码 0000 0010
// 3 的补码 0000 0011 按位或^:两位有一个为1,结果为1,否则为0
// 0000 0011,即 3
int d = ~-5;
int e = 13 & 7;
int f = 5 | 4;
//按位或|:两位有一个为1,结果为1,否则为0
// 5 补码 0000 0101
// 4 补码 0000 0100
// 0000 0101 即 5
int g = -3 | 3;
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
System.out.println("d=" + d);
System.out.println("e=" + e);
System.out.println("f=" + f);
System.out.println("g=" + g);
}
}