这里写自定义目录标题
- 第五章 Java程序设计基础二
- 01 将MB转换为字节,将字节转换为MB
- 02 算术运算符
- 03 自增自减运算符
- 04 比较运算符
- 05 逻辑操作符
- 06 三元操作符
- 07 位操作符
- 08 练习
第五章 Java程序设计基础二
01 将MB转换为字节,将字节转换为MB
将MB转换为字节,将字节转换为MB 用 + - * /
//计算MB有多少字节
//1mb = 1024kb
//1kb = 1024byte
int mb = 16;
int b = mb * 1024 * 1024;
System.out.println(b);
//计算字节是多少mb
int c = 16777216;
//int d = c / 1024 /1024;
int d = c / (1024 * 1024);
System.out.println(d);
02 算术运算符
// 算术 运算符: 加减乘(TUXV)除
int a = 5;
// a = a + 5;
a += 5; // a = a + 5;
System.out.println(a); // 10
a *= 10; // a = a * 10;
System.out.println(a);// 100
a -= 5; // a = a - 5;;
System.out.println(a);// 95
a /= 5; // a = a / 5;
System.out.println(a);// 19
单目运算符
03 自增自减运算符
int x = 3;
x++; //自增运算符,相当于x = x +1;
System.out.println(x);//4
x--;//自减运算符,相当于x = x -1;
System.out.println(x);//3
System.out.println("******************************");
//++在前,变量先自增,然后参与其他运算
int a = 3;
int b = ++a;//a先自增,再赋值给b。 相当于a++; int b = a;
System.out.println(a);//4
System.out.println(b);//4
//++在后,变量先参与其他运算,然后自增
int c = 3;
int d = c++;//c先赋值给d,然后c再自增。 相当于int d = c; c++;
System.out.println(c);//4
System.out.println(d);//3
04 比较运算符
比较运算符的结果为boolean类型的值。(true,false)
比较运算符有:大于(>),小于(<),大于等于(>=),小于等于(<=),不等于(!=)
//判断是否相等使用==,注意与赋值运算符=的区分
System.out.println(1 == 2);//false,假
System.out.println(1 == 1);//true,真
int a = 1;
int b = 1;
boolean c = a ==b; //相当于boolean c = true;
System.out.println(c);//true
System.out.println("********************************");
//比较运算符有:大于(>),小于(<),大于等于(>=),小于等于(<=),不等于(!=)
System.out.println(1>2);//false
System.out.println(1<2);//true
System.out.println(1>=1);//true
System.out.println(2>=1);//true
System.out.println(1!=2);//true
05 逻辑操作符
逻辑运算符两边的数据都是boolean类型的,结果也是boolean类型的。
短路是指,当结果已经明确时,就停止往下执行了。
对于&&来说,当第一个表达式为false,结果就是false,第二个表达式就不会执行。
对于||来说,当第一个表达式为true,结果就是true,第二个表达式就不会执行。
短路与
//短路与操作符&&,只有操作符&&两边都是true,结果才是true
System.out.println(true && true); //true
System.out.println(true && false);//false
System.out.println(false && true);//false
System.out.println(false && false);//false
短路或
//短路或操作符,只要操作符||一边为true,结果就是true
System.out.println(true || true);//true
System.out.println(true || false);//true
System.out.println(false || true);//true
System.out.println(false || false);//fasle
//短路是指,当结果已经明确时,就停止往下执行了
//对于&&来说,当第一个表达式为false,结果就是false,第二个表达式就不会执行
//对于||来说,当第一个表达式为true,结果就是true,第二个表达式就不会执行
int i = 10;
System.out.println(true || ++i == 11);//
System.out.println(i);//10
& 和 | 跟&&和|| 类似,只不过不是短路的
操作符两边的表达式都执行
int j = 10;
System.out.println(true | ++j == 11);//true
System.out.println(false & ++j == 12);//false
System.out.println(j);//12
异或^
异或^,当操作符两边不同时结果为true,当两边相同时结果为false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
非!,表示取反
System.out.println(!false);//true
System.out.println(!true);//false
06 三元操作符
//三元运算符
int age = 18;
System.out.println(age >= 18 ? "成年了" : "未(FII)成年"); //成年了
age = 12;
System.out.println(age >= 18 ? "成年了" : "未成年"); //未成年
String str = age >= 18 ? "成年了" : "未成年";
System.out.println(str);//未成年
07 位操作符
位与,两个数都是 1则为1,否则为0
位或,两个数只要有一个为1则为1,否则为0
位异或,两个数不同则为1,否则为0
//位与,两个数都是 1则为1,否则为0
//0010
//0011
//0010
System.out.println("2 & 3:" + (2 & 3));//2 & 3 : 2
//位或,两个数只要有一个为1则为1,否则为0
//0010
//0011
//0011
System.out.println("2 | 3:" + (2 | 3));// 2 & 3 : 3
//位异或,两个数不同则为1,否则为0
//10
//11
//01
System.out.println("2 ^ 3:" + (2 ^ 3));//2 ^ 3 : 1
移位运算,取反~,左移<<,右移动>>,无符号右移>>>
二进制在计算机中是以补码形式存在的
原码,反码和补码
正数的原码反码和补码是一样的
//-2人原码: 10000000000000000000000000000010
//-2的反码: 11111111111111111111111111111101
//-2的补码: 11111111111111111111111111111110
//负数的反码是原码的按位取反(除云符号位)
//负数的补码是反码+1
//Integer.toBinaryString将10进制转变换成二进制字符串
System.out.println(Integer.toBinaryString(-2));
// 1 29个0 10? no 应为:11111111111111111111111111111110
取反符号位也取反
System.out.println(Integer.toBinaryString(-3));
//11111111111111111111111111111101
//取反:符号位也取反
System.out.println(~-3); //00000000000000000000000000000010
移位
移位是按照补码来进行的
左移,空位以0补,相当于乘2
右移,空位以位补,相当于除2
//移位是按照补码来进行的
//左移,空位以0补,相当于乘2
System.out.println(2 << 1);
//2的补码 00000000000000000000000000000010
//2左移1位 00000000000000000000000000000100
//
//右移,空位以位补,相当于除2
//2的补码 00000000000000000000000000000010
//2右移1位 00000000000000000000000000000001
System.out.println(2 >> 1);
//-2的补码 11111111111111111111111111111110
//-2左移一位 11111111111111111111111111111100
System.out.println(-2 << 1);//-4
//-2的补码 11111111111111111111111111111110
//-2右移一位 11111111111111111111111111111111
System.out.println(-2 >> 1);//-1
08 练习
1.将分钟数转换为小时和分钟。
int minutes = 150;//分钟数
//两个int进行算术运算,结果仍然是int
int hours = minutes / 60; //计算多少个小时
int ms = minutes % 60; //计算还剩(TUXJ)下多少分种
System.out.println(hours + "小时零" + ms + "分钟");
错误示例
//错误示例
int minutes = 150; //分钟数
float hours = minutes / 60; //2.0
System.out.println(hours + "小时");
//2.0小时, 与预期不符,预期是 2.5
能显示小数的代码为:
int minutes = 150; //分钟数
float hours = minutes / 60f;
System.out.println(hours); //2.5
2.根据半径计算圆的周长和面积
int r = 3;//半径
//声明PI为常量
final double PI = 3.14;
//圆的周长2πr
double x = 2 * PI * r;
System.out.println(x);
//圆的面积πr2平方米
//Math.PI会调用Math类的常量PI
double y = Math.PI * r * r;
System.out.println(y);
- 找出两个数中的最大值
//找出两个数中的最大值
int a = 10;
int b = 20;
int c = a >= b ? a : b;
System.out.println(c);
4.根据底和高判断两个三角形的面积是否相等,相等的话输出相等,否则输出不相等。
三角形面积: S = (1/2) a * h
a 底
h: 高
//根据底和高判断两个三角形的面积是否相等,相等的话输出相等,否则输出不相等 。
int a = 10;
int b = 5;
int c = 8;
int d = 6;
String str = (1/2)a * b == (1/2)c * d ? "相等" : "不相等";
//或者如以下
String str = a * b == c * d ? "相等" : "不相等";
System.out.println(str); //不相等