二进制:由0和1组成,代码中以0b开头
逢二进一
借一当二
十进制中的0——二进制中的0
十进制中的1——二进制中的1
十进制中的2——二进制中的10
十进制中的3——二进制中的11
十进制中的4——二进制中的100
十进制:由0~9组成,前面不加任何前缀
八进制:由0~7组成,代码中以0开头
十六进制:由0~9还有a-f组成,代码中以0x开头
任意进制转十进制
右往左 相乘相加
十进制转任意进制
取余法 除以?进制直到商为0 余数从下往上写
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
//创建对象
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数字");
//接收数据
int number1=sc.nextInt();
System.out.println("请输入第二个数字");
int number2=sc.nextInt();
System.out.println(number1+number2);
}
}
% 取模、取余
键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
//个位:数字%10
//十位:数字/10%10
//百位:数字/100%10
//千位:数字/1000%10
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个三位数");
int number=sc.nextInt();
int ge=number%10;
int shi=number/10%10;
int bai=number/100%10;
System.out.println("个位是:"+ge);
System.out.println("十位是:"+shi);
System.out.println("百位是:"+bai);
算术运算符
隐式转换:取值范围小的转换成大的,byte,short,char都会先提升为int,再进行运算
强制转换:…大变小
取值范围从小到大:byte-short-int-long-float-double
byte:-128~127
ascii码表:a对应97,A对应65
自增自减运算符
++ 加 变量的值加1 - - 减 变量的值减1
++和- -可以放变量前面,也可以放变量后面
int x=10;
//后++:先用后加
//先把x变量中的值拿出来用,赋值给y,然后再进行自增
//赋值给y的值是自增前的
int y=x++;//x=11 y=10
//先++:先加后用
//先把x进行自增,然后把自增后的结果赋值给左边的变量
//先把x自增,变成12,然后再把自增之后的12赋值给z
int z=++x;//x=12 z=12
System.out.println("x:"+x);//12
System.out.println("y:"+y);//10
System.out.println("z:"+z);//12
赋值运算符
+=,-=,*=,/=,%=底层都隐藏了强制类型转换
+=:将左边和右边进行相加,然后把结果赋值给左边
a += b;
//等同于a=a+b
int a=10;
int b=20;
System.out.println(a);//30
System.out.println(b);//20
关系运算符
结果都是boolean类型,成立为true,不成立为false
== !=
逻辑运算符
& 逻辑与 并且,两边都为真,结果才为真(两边都要满足)
| 逻辑或 或者,两边都为假,结果才为,有一个为真则真(两边满足一个)
^ 逻辑异或 一真一假为真,其他为假
! 逻辑非 取反
使用场景:登录
用户名正确并且密码正确
短路逻辑运算符
&& 短路与 结果和&相同,但有短路效果
|| 短路或 结果和|相同,但有短路效果
当左边的表达式能确定最终的结果,那么右边就不会参与运行了。
int a=10;
int b=10;
boolean result = ++a<5&&++b<5;
System.out.println(result);//false
System.out.println(a);//11
System.out.println(b);//10,如果改为单个&,则b为11
三元运算符
格式:关系表达式?表达式1:表达式2;
整个三元运算符的结果必须要被使用
计算规则:首先计算关系表达式的值,如果值为true,表达式1的值就是运算结果,如果值为false,表达式2的值就是运算结果
e.g. 求两个数的较大值
int max=a>b?a:b;
System.out.println(max);
运算优先级
()优先于所有
原码、反码、补码(见计组)
原码:0为正,1为负
反码:正数的反码是其本身,负数的反码是符号位保持不变,其余位取反
补码:正数的补码是其本身,负数的补码是在其反码的基础上+1(取反+1)
练习
1.键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
package test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个三位数");
int number=sc.nextInt();
//获取个位,十位,百位
//个位:数字%10
//十位:数字/10%10
//百位:数字/100%10
//千位:数字/1000%10
int ge=number%10;
int shi=number/10%10;
int bai=number/100%10;
System.out.println("个位是:"+ge);
System.out.println("十位是:"+shi);
System.out.println("百位是:"+bai);
}
}
2.键盘录入两个整数,表示你和你约会对象衣服的时髦度。 (手动录入0~10之间的整数,不能录入其他)如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true,否则输出false
package test;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
// Scanner sc=new Scanner(System.in);
// System.out.println("请输入你的衣服的时髦度:");
// int a=sc.nextInt();
// System.out.println("请输入你约会对象的衣服的时髦度:");
// int b=sc.nextInt();
// System.out.println(a>=b);//错在这里,不是>=,题目>
//答案:
//1.键盘录入两个整数表示衣服时髦度
Scanner sc=new Scanner(System.in);
System.out.println("请输入我们自己的衣服时髦度");
int myFashion =sc.nextInt();
System.out.println("请输入相亲对象衣服的时髦度");
int girlFashion=sc.nextInt();
//2.进行对比
boolean result=myFashion>girlFashion;
//3.打印结果
System.out.println(result);
}
}
3.键盘录入两个整数,如果其中一个为6,最终结果输出true,如果它们的和为6的倍数,最终结果输出true,其他情况都是false
package test;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入两个整数");//答案是拆开输入
int a=sc.nextInt();
int b=sc.nextInt();
boolean result=a==6||b==6||(a+b)%6==0;
System.out.println(result);
}
}
4.动物园有两只老虎,体重分别通过键盘录入获得,请用程序实现判断两种老虎的体重是否相同
package test;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一只老虎的体重:");
Double weight1=sc.nextDouble();
System.out.println("请输入第二只老虎的体重:");
Double weight2=sc.nextDouble();
//比较
//true false,下面只能判断boolean类型
//System.out.println(weight1==weight2);
String result = weight1==weight2?"相同":"不同";
System.out.println(result);
}
}
5.一座寺庙里住着三个和尚,已知他们的身高分别为150cm,210cm,165cm,请用程序实现获取这三个和尚的最高身高
package test;
public class Test5 {
public static void main(String[] args) {
/*一座寺庙里住着三个和尚,已知他们的身高分别为150cm,210cm,165cm,
请用程序实现获取这三个和尚的最高身高
*/
//1.定义三个变量记录三个和尚的身高
int height1=150;
int height2=210;
int height3=165;
//2.拿着第一个和尚和第二个和尚进行比较
//再拿着结果跟第三个和尚进行比较
int temp = height1>height2?height1:height2;
int max = temp>height3?temp:height3;
System.out.println(max);
}
}