0
点赞
收藏
分享

微信扫一扫

day03日常笔记

夏木之下 2022-03-31 阅读 28

day03

上篇

自增自减运算符:

  1. 单独使用

  2. 参与运算使用(面试里的笔试用到) int b = a++;

    ++, – 只适用于变量

面试题:

int a = 3;
int b = (++a) + (a++) + (a * 10);
System.out.println(a);
System.out.println(b);

类型转换

隐式转换

  1. 取值范围小的赋值给取值范围大的,即小给大。
  2. 转换过程不是明面的,而是程序内部自己完成,所有称隐式。
  3. 细节:小给大是指取值范围。
    • 取值范围 byte < short < int < long < float < double
    • float 占4字节,但比占8字节的long更大。(因为两者存储的机制不一样,float是按照压缩存储。小数和整数存储原理不一样,小数是压缩存储,整数是按照2的几次幂存储。IEEE754算法原理。)
      • 原因:小数的二进制存储,比整数更加节省内存。
  4. Java中,数据类型不统一,没法直接计算。取值范围小的,会提升为大的。
  5. byte、short、char 三种数据在运算时,都会提升为int,然后再运算。
byte a = 10;
byte b = 20;
byte c = a + b;     //在这里会发生报错,因为被提升为int了
char a = 'a';
char b = 'b';
int c = a + b;		//字符串会转换为对应int类型

强制转换

  • 把取值范围大的赋值给取值范围小的,不允许。需要进行强制转换。
  • 尽量减少强转的使用,因为有可能造成精度的丢失。
    • ​ IDEA快捷键:alt + enter 给出红色波浪线的解决方案,即代码修正键。

面试题

注意常量优化机制

byte b1 = 3;
byte b2 = 4;
byte b3 = (byte)(b1 + b2);

byte b = 3 + 4;   //这里不会报错
	原因:Java存在常量优化机制,34是两个常量
        - 在编译的时候(javac),就会将34运算出一个7的结果
        - 字节码文件(.classbyte b = 7;
		- 检查运算结果,是否在byte的取值范围内
            不在:编译出错
            在:编译成功   

赋值运算符

  1. 基本赋值运算符 =

  2. 扩展赋值运算符 += 、-=、*=、/=、%=

    • 注意事项:扩展运算符,自带强转效果
int a = 10;
double b = 12.3;
a += b;					// a = (int)(10 + 12.3)
System.out.println(a);	// 22

关系运算符

  • 也叫比较运算符 > 、< 、>=、<=、 ==、 !=

三元运算符

  • 也叫三目运算符,根据一个判断条件,达成二者选其一的效果。既有判断又有执行。

  • 格式: 判断条件 ? 值1 :值2;

    • 执行流程:
      1. 执行判断条件,看其返回结果是true ,还是false
      2. true:返回值1;
      3. false:返回值2。
  • 案例

/* 
	需求:键盘录入3个整数,求出最小值,中间值,最大值,并按照从小到大的顺序打印出控制台。
*/
//1.键盘录入
System.out.println("请输入三个值:");
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
//2.求出三个值
int sum = num1 + num2 + num3;
int tem = num1 < num2 ? num1 : num2;
int min = tem < num3 ? tem : num3;
tem = num1 > num2 ? num1 : num2;
int max = tem > num3 ? tem : num3;
int mid = sum - min -max;
//3.打印
System.out.println("您输入的三个值从小到大为:"+min+"\t"+mid+"\t"+max);

彩蛋

  • 格式化输出快捷键 变量.soutv
    a.soutv  =====  System.out.println("a = " + a);
  • 参与运算:

    a++ :先用后加(先把a原来的值取出来参与运算,再对a自增)

    ++a:先加后用(先把a在内存自增,再取出来运算)

  • 类型转换:自动类型转换(小转大) 强转类型转换(大转小)

  • 取值范围小到大的顺序

    byte -> short -> int -> long ->float -> double

  • 表达式类型提升

    1. byte、short、int 参与运算会转为int类型
    2. 不同类型参与运算,会转为最高类型

备注:老师的总结往往是难点和易错点。



下篇

逻辑运算符

  • 代码层面,连接布尔类型的表达式,或者值
  • 理解层面,可以用来整合多个条件,为一段整体的逻辑
  • 分类, & | !^ (与,或,非,异或)
  • 异或特点:相同为false,不同为true(几乎不怎么用,了解即可)

单与双的区别:

  • 单不具有短路效果,而双具有短路效果。短路即判断出结果以后,不再执行后面代码。即双效率更高。

结论:逻辑运算符最常用的是 &&、||、!

运算符优先级

  • && > || , 掌握小括号使用

分支语句

  • 顺序结构(默认) 分支结构(if、switch) 循环结构(for、while、do……while)

彩蛋

注意:写了一段逻辑之后,先调试,看是否有问题。不要等到写了很多代码之后,发现出问题了。

IDEA操作:split and move right 分屏到右侧

举报

相关推荐

redis笔记-day03

day03

Day03

Day03~pink老师笔记

Day03(

Linux Day03

0 条评论