java第三天笔记及总结

Ⅰ.运算符
分类: 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三目运算符

算术运算符分为:
基本算数运算符:+(正号) ,-(负号) ,+(加号) ,-(减号) , *(乘号) , /(除号) , %(取模) +(字符串连接符)
扩展运算符:
++(自增前) , ++(自增后) , --(自减前) ,–(自减后)

注意 : 整数相除,只能得到整数 要想得到小数,可以*1.0

Ⅱ.赋值运算符:
赋值运算符分为 :基本赋值运算符: =
扩展赋值运算符: +=, -= , /= , %=
!!!: +=运算符的特点: 有一个隐含的默认转换功能。 实际上等价于: short s = 1; s+=1等价于 s=(s的数据类型)(s+1);

Ⅲ关系运算符: ==(相等于) ,!=(不等于) , <(小于) , >(大于) , <=(小于等于) ,>=(大于等于)
注意:比较运算符的结果都是boolean(类型),true,false.

Ⅳ.逻辑运算符:
& , | , ^ , ! , &&(短路) , || (短路)
& 和&& 的区别:
&运算时,左边无论真假,右边都进行运算
&&运算时,若左边为真,右边参与运算,若左边为假,那么右边不参加运算
| 和 || 的区别:
同上, 双或时,左边为真,右边不参与运算

!!!总结
&:有false,则false;
| :有true,则true
^ :相同false,不同true
! :非false则true,非true则false

Ⅴ.位运算符:
<< 左移 , >> 右移 ,>>> 无符号右移 , & 与运算 , | 或运算 , ^ 异或运算 , ~ 反码:
运算:直接对二进制进行运算
总结:1)<<:就是将左边的操作数在内存中的二进制数据左移右边操作数指定的位数,右边被移空的部分 补0。相当于乘与2的倍数
2)>>:右移稍微复杂一点,如果最高位是0,左边被移空的位就填入0;如果最高位是1,左边被 移空的位就填入1。相当于除以2的倍数
:无论最高位是1还是0,左边被移空的高位都填入0。
总结:*位运算符总结图解*
运算细节:
<< 空位补0,被移除的高位丢弃。

被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,最高位补1。

被移位二进制最高位无论是0或者是1,空缺位都用0补。
& 任何二进制位和0进行&运算,结果是0;和1进行&运算结果是原值。
| 任何二进制位和0进行 | 运算,结果是原值;和1进行 | 运算结果是1。
^ 任何相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1。

左移运算证明图解
右移运算证明图解
无符号右移运算证明图解
计算题例子:
计算下面结果,列出具体过程
System.out.println(6 & 3);
System.out.println(6 & 2);

	   System.out.println(6 | 3);
	   System.out.println(6 | 2);
	
	   System.out.println(6 ^ 3);
	   System.out.println(6 ^ 2);
	
	   System.out.println(~6);

答: 1)十进制6的二进制为:
00000000 00000000 000000000 00000110
十进制3的二进制为:
00000000 00000000 000000000 00000011
有0则0
所以,00000000 00000000 000000000 00000010
结果:2

2)十进制6的二进制为:
00000000 00000000 000000000 00000110
十进制2的二进制为:
00000000 00000000 000000000 00000010
有0则0
所以,00000000 00000000 000000000 00000010
结果:2

3)十进制6的二进制为:
00000000 00000000 000000000 00000110
十进制3的二进制为:
00000000 00000000 000000000 00000011
有1则1
00000000 00000000 000000000 00000111
结果:7

4)十进制6的二进制为:
00000000 00000000 000000000 00000110
十进制2的二进制为:
00000000 00000000 000000000 00000010
有0则0
所以,00000000 00000000 000000000 00000110
结果:6

5)十进制6的二进制为:
00000000 00000000 000000000 00000110
十进制3的二进制为:
00000000 00000000 000000000 00000011
相同为0,不同为1
所以,00000000 00000000 000000000 00000101
结果:5

6)十进制6的二进制为:
00000000 00000000 000000000 00000110
十进制2的二进制为:
00000000 00000000 000000000 00000010
相同为0,不同为1
所以,00000000 00000000 000000000 00000100
结果:4

7)十进制6的二进制为:
00000000 00000000 000000000 00000110(逐位取反)
11111111 11111111 111111111 11111001(补码)
符号位:1 数值位:1111111 11111111 111111111 11111001
1 1111111 11111111 111111111 11111000(反码)
1 0000000 00000000 000000000 00000111(原码)(符号位不变,按位取反)
Ⅵ.三元运算符(三目):
格式:(关系表达式) ? 表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;

关于上述概念涉及一种例题:
实现对两个整数变量的值进行互换。
方式一:使用中间变量,最常用的方式
class demo{
public static void main(String[] args){
int a=100;
int b=200;
int temp=a;
a=b;
b=temp;
System.out.println(“a:”+a);
System.out.println(“b:”+b);
}
}

方式二:使用位异或的特点:
class demo{
public static void main(String[] args){
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
System.out.println(“a:”+a);
System.out.println(“b:”+b);
}
}

方式三:使用变量相加减:
class demo{
public static void main(String[] args){
int a=100;
int b=200;
a=a+b;
b=a-b;
a=a-b;
System.out.println(“a:”+a);
System.out.println(“b:”+b);
}
}

关于使用三元运算符以及键盘录入数据知识点涉及题型:
键盘录入一个数,判断这个数是否是偶数!
比较两个数是否相等
获取两个数中最大值
获取三个数中最大值
答: 1)class demo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println(“请输入一个整数:”);
int m=sc.nextInt();
boolean number=(m%20);
System.out.println(number);
}
}
2)class demo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println(“请输入第一个整数:”);
int m=sc.nextInt();
System.out.println(“请输入第二个整数:”);
int n=sc.nextInt();
boolean result=(m
n);
System.out.println(result);
}
}
3)class demo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println(“请输入第一个整数:”);
int m=sc.nextInt();
System.out.println(“请输入第二个整数:”);
int n=sc.nextInt();
int max=((m>n)? m:n);
System.out.println(“两个数中最大值为:”+max);
}
}
4)class demo{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println(“请输入第一个整数:”);
int m=sc.nextInt();
System.out.println(“请输入第二个整数:”);
int n=sc.nextInt();
System.out.println(“请输入第三个整数:”);
int t=sc.nextInt();
int temp=((m>n)? m:n);
int max=((t>temp)? t:temp);
System.out.println(“三个数中最大值为:”+max);
}
}
Ⅶ.键盘录入数据:
实现键盘录入:
步骤:
1. 导包(位置放到class定义的上面): import java.util.Scanner;
2. 创建对象: Scanner sc = new Scanner(System.in);
3. 接收数据: int x = sc.nextInt();

流程控制语句的分类:
顺序结构语句:按照顺序执行,总的来说,写在前面的先执行,写在后面的后执行
选择结构语句分为 : if语句 switch语句
1. if语句有三种格式:
(1)if语句格式1
if(关系表达式){ 语句体;
}
(2)if语句格式2
if(关系表达式) { 语句体1; }else { 语句体2; }
(3)if语句格式3
if(关系表达式1) { 语句体1; }else if (关系表达式2) { 语句体2; } … else { 语句体n+1; }
switch语句
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;

default:
语句体n+1;
break; }
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),jdk7以后可以接收字符 串。
注意事项:
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的 default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)
break可以省略吗?可以省略,一般不建议。否则结果可能不是你想要的 default的位置一定要在最后吗?可以出现在switch语句任意位置。
switch语句的结束条件: 遇到break
执行到程序的末尾

!!! case穿透性
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束。

if语句和switch语句的区别:
if语句使用场景:
针对结果是boolean类型的判断 针对一个范围的判断 针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断

循环结构语句:for循环语句 while循环语句 do while循环语句

!!!循环结构语句接第四天笔记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值