1.运算符
1.1三元运算符
注意事项:
1.关系表达式为true,显示表达式1的结果否则显示表达式2的结果。
2.整个三元运算符的结果必须要被使用,要么赋值给变量要么打印。不能单单显示使用这一句。
自己先做一遍。
public class SanyuanTest {
public static void main(String[] args) {
System.out.println("请输入第一只老虎的体重");
Scanner a = new Scanner(System.in);
int number1 = a.nextInt();
System.out.println("请输入第二只老虎的体重");
Scanner b = new Scanner(System.in);
int number2 = b.nextInt();
String result= number1==number2 ? "体重相同":"体重不同";
System.out.println(result);
}
}
和老师做的一样,但需要注意:
1.Scanner中的S一定要大写!!!
2.录入键盘的代码中Scanner sc=new Scanner(System.in)语句只需要输入一遍就可以了。
自己做的
public class SanyuanTest2 {
public static void main(String[] args) {
int number1 =150;
int number2 =210;
int number3 =165;
int a = number1>number2?number1:number2;
int b = a>number3?a:number3;
System.out.println(b);
}
}
PS:
1.Ctrl+D是向下复制上一行代码;
2.Ctrl+ALT+L自动格式化代码,使其对齐。但此快捷键可能与其他软件冲突。
1.2运算符优先级
小括号优先于所有。养成加小括号的习惯就可。
1.3原码、反码、补码
1.正数的原码、反码、补码都一样。
2.二进制中一个数字是一个比特位,八个二进制数字是一个字节。一个字节的大小范围是-128到127。
3.byte(1个字节)<short(2个字节)<int(4个字节)<long(8个字节)。
4.不管是几个字节的情况,只要是有符号整数,第一位都是符号位,所以一个字节的最大值是2^7-1=127。不是一个字节的情况下,就算是只有后面8位有数字,倒数第八位也不是符号位,还是按照幂相加计算。
5.隐式转换是在前面补0,强制转换是删掉前面多的字节,所以超过1个字节的取值范围以后强制转换很有可能数值变化了。
1.4其他的运算符
逻辑或:0为false 1为true以后,还是只有两个都是true才true才是1.也就是说相同的比特位上两个都是1才是1。
逻辑与:只要两个对应的比特位上有1个是1就是1
关于右移的高位补0或1取决于正负数,补的是符号位。
2.判断和循环
2.1 if的三种格式
if语句的第一种格式
PS:
1.int a =10,其实是两个语句。声明和赋值,所以大括号尽量不要省略。
2.给布尔类型变量赋值容易少写一个等号,影响if语句的正常判断。
public class test2 {
public static void main(String[] args) {
System.out.println("how much money you have");
Scanner sc=new Scanner(System.in);
int money=sc.nextInt();
if (money>=100){
System.out.println("吃大餐!!");
}
else{
System.out.println("吃路边摊");
}
}
}
PS:
1.注意if后面的执行语句被包在一个大括号中,else后面的执行语句也是。但else及其后内容不是包含在if后面的大括号中的。
public class test3 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("how much you pay");
int pay= sc.nextInt();
if (pay>=600){
System.out.println("OK");
}else{
System.out.println("NO");
}
}
}
这里键盘录入的数字只能是整数,如果是小数就wrong:
1.不是关系运算符的问题,它两边可以一边是整数一边是小数。整数类型(
int
,long
等)和浮点数类型(float
,double
)可以直接比较,因为整数可以自动转换为浮点数。2.nextInt()这里面暂时只接受录入整数。
public class test4 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("票号");
int number = sc.nextInt();
if (number>=0 && number<=100){
if (number%2==0){
System.out.println("right");
}else{
System.out.println("left");
}}else {
System.out.println("wrong");
}
}
}
&&与||和单个的&与|的使用结果没有任何区别。只不过很有可能只执行半边就出结果,节省效率。
else用不到的时候可以省略不写。比如一个if和两个else if.
public class test5 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("会员级别");
int grade=sc.nextInt();
if (grade==1) {
double price = 1000 * 0.9;
System.out.println(price);
}else if (grade==2){
double price = 1000 * 0.8;
System.out.println(price);
}else if (grade==3){
double price = 1000 * 0.7;
System.out.println(price);
}
else {
System.out.println("原价支付");
}
}
}