今日学习内容罗列:
1.运算符
昨天简单介绍了算术运算符和赋值运算符,今天重点学习比较运算符、逻辑运算符、位运算符和三目运算符:
1.比较运算符:
主要有以下几类:>、<、==、>=、<=、!=;
boolean不进行类型转换的:-------->Boolean (引用类型) (jdk5以后新特性:自动拆装箱)
举例: int a = 100;
boolean f = a; //错误的, boolean类型的变量是:true 、 false;
注意:运算符连接的表达式无论是简单还是复杂,结果最终都是boolean类型!
2.逻辑运算符:实际开发中,逻辑运算符结合if(表达式){...}else{...};分为基本的运算符和扩展的运算符两大类,分别是:
1)基本的运算符:
逻辑单与&:
结论:并列关系,有false,则false
逻辑单或|:
结论:或的关系,有true,则true (有一个满足条件,则成立)
逻辑异或^:
结论:相同则为false,不同则为true
简单记忆:男女关系(男男 女女 男女 女男;同性恋受歧视)
举例:int a=3,b=4,c=5;
System.out.println((a<c)^(b>c)) ; //true(男) ^ false(女) 两表达式结果不同,输出结果为:true;
System.out.println((a<c)^(b<c)) ; //true(男) ^ true(男) 两表达式结果相同,输出结果为:false;
逻辑非!:
结论:
非true,则false
非false,则true
偶数个非是它本身! // int a=3,c=4; System.out.println(!!(a>c)) ;执行后为false
2)扩展运算符:实际开发中,基本的逻辑运算符使用少,经常会用到 && 逻辑双与,|| 逻辑双或,具体用法如下:
逻辑双与(&&):
和逻辑单与&特点一致,但是它如果左边表达式为false,右边不执行,具有短路效果;
逻辑双或(||):
和逻辑单|特点一致,左边表达式为true,右边不执行(短路效果);
注意点:逻辑双与(&&)和逻辑单与(&)的区别?
共同点:都可以表示并列关系,有false,则false;
区别:
1)逻辑双与&&,如果左边的表达式位false,则符号右边的表达式不会执行,称为扩展的逻辑运算符的短路效果;
2)同理逻辑双||,如果左边的表达式为true,则右边不执行,具有短路效果;
3.位运算符:分为基本运算符和扩展运算符两大类,分别是:
1)基本位运算: 连接的是具体的数值---->对应二进制数据
a. 位与&: 对应二进制数中,有0则为0;
b. 位或|: 对应二进制数中,有1则为1;
c. 位异或^: 相同则为0,不同则为1;
特点:一个数据被另一个数据位异或两次,其值是它本身;
举例:int a = 10 ,b = 20 ;
System.out.println(a ^ b ^ b); //输出结果为:10;
d. ~(数据): 每个位按位取反,1变0,0变1;
备注:一般以计算题的形式出现: 一些变量进行既有逻辑符号又有位运算符号;
2)移位运算:
1)>>:右移
特点:当前数据除以2的移动次幂; //System.out.println(24 >> 2);//24/2^2 = 6;
最高位如果是1,左边补齐1,如果为0,左边补齐0;
2)<<:左移
特点:当前数据乘以2的移动次幂; //System.out.println(3 << 2) ; //3 *2^2 = 12;
最高位丢弃掉,右边补齐0;
3)>>>:无符号右移 (Java原码中会见到这种符号)
无论最高符号位是1还是0,左边补齐0;
三元运算符:(三目运算符)-------->Java底层原码中会有三元运算符 / TreeSet集合中 (自然排序/选择器排序)
表达式? 表达式1:表达式2;
流程:判断表达式是true还是false;如果为true,执行表达式1,如果为false,执行表达式2;
举例:int a = 10,b=20 ;
int result = (a>b)? a:b;
System.out.println("result:"+result) ;
输出结果为:result:20
2.键盘录入数据
在键盘录入数据时,我们会用到 Scanner类;该类是由Jdk提供的;
键盘录入数据的使用步骤:
第一步:创建键盘录入对象:
固定格式写法:Scanner sc = new Scanner(System.in) ;
其中sc为定义的变量名,可以是其他的名称,但是还是要做到见名知义的原则;
第二步:导包:位置是在class的上面
(java.util.Scanner; 在Java语言中,只要不是java.lang包下的类,都需要导包(目录))
格式: import java.util.Scanner;(固定格式)
第三步:接收键盘录入的数据:
书写格式:int 变量名 = 对象名.nextInt() ; //录入下一个int类型的数据
注意:“nextInt() ; ”的意思是录入int型数据,其他类型的在之后的学习中再介绍;
第四步:输出结果:
举例:import java.util.Scanner; //导包,在class上面;
class ScannerDemo{
public static void main(String[] args){
Scanner sc = new Scanner(System.in) ; //创建键盘录入对象;
System.out.println("请您输入一个数据:");
int num = sc.nextInt() ; //录入下一个int类型的数据;
System.out.println("您输入的数据是:"+num) ;
}
}
3.流程控制语句
流程控制语句可分为三大类,分别是:顺序结构、选择结构、循环结构;今天重点学习顺序结构,其余结构明天详细介绍!
顺序结构:简言之就行是,代码由上而下加载;
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大 多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行;
4.tips
a. 在比较运算符中,注意 == 不能写成 = ;
b. 位运算都是针对二进制数来进行计算的;
c. 运算符优先级:括号 ----> 单目运算符 ----> 双目运算符 ----> 三目运算符 ----> 赋值运算符;(自己总结)
来源:CSDN
作者:loving-stranger
链接:https://blog.csdn.net/weixin_46084871/article/details/103719511