JavaEE基础:java常量、变量、数据类型、数据类型转化、运算符-第二个学习日_dragonl2d的博客-CSDN博客
代码:
class Demo01 { public static void main(String[] args) { int i = 10; System.out.println(i << 1);// i * 2 System.out.println(i << 2); int j = 32; System.out.println(j >> 1); System.out.println(j >> 2); int m = -8; System.out.println(m >> 1); int n = 16; System.out.println(n >>> 1); } }
class Demo02 { public static void main(String[] args) { // 布尔表达式1 ? 表达式2 : 表达式3; //需求:比较两个整数的大小 获取最大的一个 int a = 10; int b = 3; //布尔表达式1:比较a和b的值谁大 int max = a > b ? a : b; System.out.println("最大值为:" + max); // 三元表达式最终会有值产出 产出的值一定是看表达式2和3的类型 //接受考虑表达式2和3是什么类型 String str = a > b ? "前一个数字大" : "后一个数字大"; System.out.println(str); // 判断一个数是奇数还是偶数 int num = 4; //判断一个数是奇数还是偶数, 对2进行取余运算,如果== 0 说明是偶数 String str1 = num % 2 == 0 ? num + "是偶数" : num + "是奇数"; System.out.println(str1); // 使用三元运算符判断一个年份是否是闰年 int year = 2001; // 布尔表达式 : String str2 = year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? year + "是闰年" : year + "不是闰年"; System.out.println(str2); } }
class Demo03 { public static void main(String[] args) { //二进制 int i = 0b10; System.out.println(i); //八进制 System.out.println(011); // 十六进制 System.out.println(0x11); } }
其他进制转十进制
class Demo04 { public static void main(String[] args) { //二进制转十进制 // 0b1010 // 基数 0b 1 0 1 0 基数要和每一个系数的n次幂进行相乘 最终再求和 // 系数 2 // 1 * 2^3 + 0 * 2 ^ 2 + 1 * 2^1 + 0 * 2 ^0 = 10 System.out.println(0b1010); // 八进制 0 7 0 3 // 7*8^2 + 3 * 8^0 = 451 System.out.println(0703); // 十六进制 //0x 3 a c // 3 ^ 16^2 + 10*16 + 12 = 940 System.out.println(0x3ac); } }
52 / 2 .................0
26 / 2 .................0
13 / 2 .................1
6 / 2 .................0
3 / 2 .................1
1
0b110100
class Demo05 { public static void main(String[] args) { //将十进制数据69 分别转为 二进制 八进制 十六进制 /* 69 / 2 = 34...1 34 / 2 = 17...0 17 / 2 = 8 ...1 8 / 2 = 4 ...0 4 / 2 = 2 ...0 2 / 2 = 1 ...0 1 */ System.out.println(0b1000101); /* 转为八进制 69 / 8 = 8 ...5 8 / 8 = 1 ...0 1 */ System.out.println(0105); /* 转为十六进制 69 / 16 = 4...5 4 */ System.out.println(0x45); } }
二进制转八进制: 从右往左,三位一组(2^3=8),不够 高位补0 每组用等值的八进制码代替
二进制转十六进制:从右往左,四位自足(2^4=16),不够 高位补0 每组用等值的十六进制码代替
class Demo06 { public static void main(String[] args) { /* 八进制:10110111011 010 110 111 011 2 6 7 3 */ System.out.println(0b10110111011); System.out.println(02673); /* 十六进制:10110111011 0101 1011 1011 5 b b */ System.out.println(0x5bb); } }
八进制转二进制,将每一位八进制数据转换成对应的3位二进制数,组合起来
十六进制转二进制,将每一位十六进制数转为对应的4位二进制数,组合起来
class Demo07 { public static void main(String[] args) { //八进制 552 /* 二进制 5 5 2 101 101 010 */ System.out.println(0b101101010); System.out.println(0552); // 十六进制 bc 转为二进制 /* b c 11 12 1011 1100 */ System.out.println(0xbc); System.out.println(0b10111100); //八进制转十六进制 /* 八进制 552 1 0110 1010 按4位一组 再组合 1 6 a */ System.out.println(0x16a); //十六进制转八进制 /* 十六进制 bc 010 111 100 2 7 4 */ System.out.println(0274); } }
& 与 按位进行与运算
| 或 按位进行或运算
~ 非 按位进行取反运算
^ 异或 按位进行异或运算
<< 左位移 按位左移,数值扩大2的倍数
>> 右位移 按位右移,值向右移动一位
>>> 无符号右移 只针对正数按位右移,数值缩小2的倍数
按位&:
4 100 1000 0100 -4
5 101 1111 1011 -4反码
100 结果为4 1111 1110 -4补码
0000 0101 5
0000 0100 结果为4
按位 | :
4 100 1000 0100 -4
5 101 1111 1011 -4反码
101 结果为5 1111 1110 -4补码
0000 0101 5
1111 1111 结果的补码
1111 1110 结果的反码 补码-1
1000 0001 结果为-1 反码符号位不变,其他取反
按位取反~:
0000 1011
1111 0100 结果的补码
1111 0011 结果的反码 补码-1
1000 1100 结果为-12 反码符号位不变,其他取反
按位异或^:
4 100 1000 0100 -4
5 101 1111 1011 -4反码
001 结果为1 1111 1110 -4补码
0000 0101 5
1111 1011 结果的补码
1111 1010 结果的反码 补码-1
1000 0101 结果为-5
0000 1011 1000 1011
0001 0110 结果:22 1111 0100 反码
1111 0101 -11的补码
1110 1010 结果的补码 舍弃最高位
1110 1001 结果的反码
1001 0110 结果为:-22
4>>1 -11>>1
0000 0100 1000 1011
0000 0010 结果:2 1111 0100 反码
1111 0101 -11的补码
1111 1010 结果的补码
1111 1001 结果的反码
1000 0110 结果为: -6
>>>不能操作负数
-1>>>1
1000 0001
1111 1111 补码
1111 1111 右移1位 右移不管多少都是1
class Demo08 { public static void main(String[] args) { System.out.println(-4&5); System.out.println(-5|6); System.out.println(-4^-5); System.out.println(~11); System.out.println("<<<<<<<<<<<<<<<<<我是分割线>>>>>>>>>>>>>>>"); System.out.println(11<<1); System.out.println(-11<<1); System.out.println(-11>>1); System.out.println(11>>>1); // -1 // 1000 0001 // 1111 1111 补码 // 1111 1111 右移1位 //右移不管多少都是1 //无符号右移只能操作正数,所以不存在不准确 } }
//1、在类的声明上方,导入键盘录入类所在的包 import java.util.Scanner; class Demo09 { public static void main(String[] args) { //2、在主方法内创建键盘录入对象 Scanner sc = new Scanner(System.in); //3、调用sc对象的nextInt() 方法 获取一个整数,并使用对应类型接受 int x= sc.nextInt(); //4、使用刚才录入的整数完成运算 System.out.println("键盘录入的整数为:" + x); //nextInt()方法可以重复调用 多次调用 //想要录入几个数,就调用几次这个方法 System.out.println("再录入一个整数:"); int x2 = sc.nextInt(); System.out.println(x2); } }
调用 Scanner对象中的next()方法 录入一段字符串,使用字符串类型接收
import java.util.Scanner; class Demo10 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一段字符串"); String str = sc.next(); System.out.println(str);//该录入方式中不能存在空格,如果有空格,只能录入空格之前的 } }
键盘还可以录入其他数据类型,常见的还有nextLine()、nextDouble() 、nextFloat()、 nextByte()······,具体的方式都一样。保证录入的数据类型和定义的数据类型相同即可~