Java day3 小结

昨日查漏:

  1. 定义long类型和float类型的变量要注意什么?
    需要标记long和float类型 (建议在值的末尾跟上大写字母L以及F)
    long x = xxxx L ;
    float f = xxxxF;
    因为java默认 整数型是int,小数浮点型是double所以需注意标注
  2. 变量的 含义 及 变量的注意事项:
    1)变量:在程序执行过程中,其值发生不断变化的量.
    2)Java是一种强类型语言,
    不能重复定义变量:
    int x = 10 ;
    int x = 20 ;
    但是可以对x变量重新赋值
    int x = 10 ;
    x = 20 ;

今日内容:
一.比较运算符[又称关系运算符](两个数据之间比较)
注: 结果只能为 true / false
Eg: a>=b → true/false
1:赋值的时候要注意类型问题
int x = 10; int y = 10;
boolean flag = (x == y); 对
boolean flag = (x = y); 错,boolean 不进行类型转换
批注:Boolean和Boolean相似却不是同一个类型,Boolean的表现形式也是true/false(jdk5以后的新特性:自动拆装箱)

二.逻辑运算符 [ 常常结合if(表达式){…}else{…} ] (四个数据之间的比较)
分类: 1>基础运算符
2>拓展运算符
1>基本的运算符:
1.逻辑与 & : 有false,则false
2.逻辑或 | : 有true,则true
3.逻辑异或^: 相同则为false,不同则为true
4.逻辑非 ! : true,则false; false,则true
2>扩展的运算符
1.短路与&&: 前为false,后不执行.
2.短路或||: 前为true,后不执行.
eg:逻辑双与&&和逻辑单与&的区别?逻辑双或||以及逻辑单或|,同理
共同点:
都可以表示并列关系,有false,则false
区别: && ||具有短路效果

三.位运算符
分类: 1>基本位运算符
2>移位运算符
1>基本的位运算符 :
1.位与&:有0则0
2.位或|:有1则1
3.位异或^:相同则为0,不同则为1
注:一个数据位异或另一个数据两次,其值是它本身
Eg: int a = 10 ;
int b = 20 ;
System.out.println(a ^ b ^ b) ;//10
System.out.println(a ^ b ^ a); //20
或者 a=a^b;
b=a^b; // b=abb; b=a=3
a=a^b; // a=aba; 注:此处的b为开始运算时的int b=4;而不是第二个语句中赋值后b=a=3的b
4. ~(反码):每个位按位取反,1变0,0变1

2>移位运算:
1.>>,右移 :
快捷运算:当前 数据 除 (/) 以 2 移动次幂.
注: 当 快捷运算 遇到数据除不尽时: 正数: 舍余取整 ; 负数 : 余数补齐凑1
2.<<,左移:
快捷运算:当前 数据 乘(*) 以 2 移动次幂.
3.>>>:无符号右移 (换二进制计算) (Java原码中会见到这种符号)
无论最高符号位是1还是0,左边补齐0
都应该计算出当前数据二进制---->原码---->反码---->补码
使用补码进行移动 将移动后的 补码---->反码---->原码
Eg:
1.正数无符号位移: System.out.println(24 >>> 2);
24>>> 2 //结果:6
00000000 00000000 00000000 00011000 (原码—反码---->补码)

00000000 00000000 00000000 00011000
0000000000 00000000 00000000 000110(00)
00000000 00000000 00000000 00000110(补码---->反码---->原码)→6

2.负数无符号位移:System.out.println(-24 >>> 2);
-24 >>> 2 // 结果:1073741818
(原码) 10000000 00000000 00000000 00011000
(反码) 11111111 11111111 11111111 11100111
+1
-------------------------------------------------------------
(补码) 11111111 11111111 11111111 11101000
无符号右移
11111111 11111111 11111111 11101000
0011111111 11111111 11111111 111010(00)
0111111111111111111111111111010(补码---->反码---->原码一样)

四.三元运算 (三目运算)
1.单目:~3
2.双目:3+4
3.三目:
1>格式: (表达式?) 表达式1 : 表达式2
结果为true输出:表达式1
结果为false输出:表达式2
五.键盘录入数据
Scanner 类 (文本扫描器)
(System.in) (io流)
nextInt() (方法)
键盘录入数据的使用步骤:
java.util.Scanner; 在Java语言中,只要不是java.lang包下的类,都需要导包(目录)
1)创建键盘录入对象 固定格式写法:sc变量名 可以自己定义(见名知意)
Scanner sc = new Scanner(System.in) ;
2)导包,位置是在class的上面
格式:import java.util.Scanner;
3)接收键盘录入的数据
int 变量名 = 对象名sc.nextInt() ; //录入下一个int类型的数据
4)输出变量名

.Eg : 三目运算及键盘嵌入:
求三个数的最大值 与 三个数是否相等
import java.util.Scanner;
class ScannerDemo{
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(“请您再输入一个数据:”) ;
int c = sc.nextInt();
//三个数的大小比较
int laoer=(a>b?a:b);
int max1=(c>laoer?c:laoer);
System.out.println(“您输入的三个数中最大的为:”+max1);
//三个数是否相等
boolean laoer1= (a= =b);
if(laoer1true){
boolean xiangdeng= (c= =a);
if(xiangdeng
true){
System.out.println(“相等”);
}
}else{
System.out.println(“不相等”);
}
方法二: System.out.println("-------------");
System.out.println(ab?ac?“相等”:“不相等”:“不相等”);
}
}

六.流程语句
分类: 1 > 顺序结构语句
2 > 选择结构语句
3 > 循环结构语句
1>顺序结构语句:
加载类的时候,由Jvm识别main方法,从有效代码开始由上而下进行加载.
2>选择结构语句
1.if(){};
2.if(){}
else{};
3.if(){}
else if{}
else{};