【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升

【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升_第1张图片

博主简介:是瑶瑶子啦,一名大一计科生,目前在努力学习C进阶,JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛!
所属专栏:爪洼岛冒险记
✈往期博文回顾:【爪洼岛冒险记】第2站:带你学会:Java中三种输出语句,java中基本数据类型,学会变量,常量,类型转换知识点
️‍♂️近期目标:成为百粉小博主。持续输出JavaSE、C进阶、数据结构、算法相关的优质博客,
‍♀️写博客理念:力求用自己的语言加上自己的理解去阐述知识知识、技术。喜欢画图、思维导图去描述过程和知识之间的联系。
您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!
:“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”

爪洼岛冒险记-第3站

  • 上一站快速回顾:
  • 本站任务:
  • 任务1:int和String之间的转换
    • int转String
    • String转int
  • 任务2:Java中的运算符
    • 1,算术运算符
      • 除法运算符:
      • 取模运算符:--取余数
      • 复合赋值运算符需注意
    • 2,关系运算符
    • 3,⭐逻辑运算符
    • 4,位运算符
    • 5,位移操作符
    • 优先级问题:
  • 任务3:Java中的类型提升
    • 1:隐式类型提升(自动类型转换)---只涉及除布尔类型外的7种数据类型
    • 2:强制类型转换(有风险)

上一站快速回顾:

【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升_第2张图片

上一站重点学习Java中的基本数据类型有关的知识点,我们来快速回顾一下:
这里由一道牛客网上最近的一道百度面试题一道经典面试题带着我们复习一下:

百度面试题:‍♂️:请你所说Java中基本数据基本数据类型和引用类型:(由于引用类型在后期会讲,但是为了之后学完整个JavaSE之后能更好的复习,这里还是说一下)

‍♀️:【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升_第3张图片

  • Java中有8种基本数据类型,根据类型所描述的数据性质不同,分为4小类:整形,浮点型,字符型,布尔类型.其中整形根据数据描述范围不同,分为:字节类型(byte)占8bit位,短整形(short)占16bit位,整形(int)占32bit位.浮点型根据精度不同,分为单精度浮点数:float,双精度:double.字符类型是:char,占16bit位,与Unicode表对应.布尔类型boolean,只有两个取值,false,true,由于JDK规范中没有明确规定布尔类型所占内存大小,不同的JVM有不同的实现机制.除了boolean类型外,其他7基本数个数据类型都可以看作数字类型,他们之间可以进行类型转换.
  • 8种基本数据类型的变量的值是在程序运行时才被放到变量中的,在编译时期并不知道变量中存放了什么,在程序运行后,变量向内存的上申请空间.即8种基本数据类型的的变量的值存放在栈内存中.
  • 引用数据类型包括数组,类,接口类型,还有一个特殊的null类型,引用数据类型就是对一个对象的引用,对象包括实例和数组两种.引用类型变量存放的被引用对象的地址,堆内存中才是对象真正的值.

‍♂️经典面试题 2:
为啥有时会出现 4.0 - 3.6 = 0.40000001 这种现象?

  • 首先,浮点数在内存中是依据按照二进制形式来存储的,二进制的小数部分无法总是精确的表示十进制的小数,只能无限接近.所以导致浮点数的存储不精确(根本原因).所以取出的时候就会表现的不精确.
    【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升_第4张图片

好啦,快速复习完上一站的知识,赶紧整装待发,咱们直冲下一站!!

本站任务:

‍♀️write int the front:
此站路途较为轻松,可不要小看基础知识哦,把这些基础和细节收入囊中,后来的路途也不会那么艰辛,现在就出发吧~

  • 学会int和String之间的转换
  • 将Java运算符全部收入囊中~
  • 拿下Java中的类型提升

任务1:int和String之间的转换

(❤ ω ❤)在上一站中,最后我们所讲的"类型转换",其实是8种基本数据类型种,除了boolean类型的其他7种数据类型(都可以看作的数字类型)的之间转换.任务1,我们将学习int和String之间的转换(不用太扣细节,关于包装类,如Integer会在后期讲到).

int转String

		int num=55;
        String str=String.valueOf(num);
        System.out.println(str);

String转int

		String str="55";
        int num=Integer.valueOf(str);
        System.out.println(num);

任务2:Java中的运算符

1,算术运算符

运算符 说明
+ 加法
- 减法
* 乘法
⭐/ 除法
⭐% 取模
%= 复合赋值运算符;a%=b即a=a%b(下面同理)
/=
+=
–=
%=
++ 自增运算符:前置时,先自增,后使用(表达式的值);后置式,先使用,再自增
– – 自减运算符:前置时,先自减,后使用(表达式的值);后置式,先使用,再自减

这里着重讲一下除法运算符,和取模运算符的注意事项

除法运算符:

  • java中除数不能为0.否则会抛出异常.(异常在后期讲,这里需要明白的是,抛出此算术异常则程序终止运行)
		int b = 3 / 0;
        System.out.println(b);

【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升_第5张图片

  • int/int结果是int(这点和C中是一样的),不能得到小数

取模运算符:–取余数

  • 和C中不同的是.java中的取模运算符的操作数可以为小数
 		double c=3.14/2;
        System.out.println(c);

在这里插入图片描述

  • a%b得到结果的正负取决于a的正负,和b无关
 		int a=6%4;
        System.out.println(a);//2
        a=-6%4;
        System.out.println(a);//-2
        a=6%(-4);//直接当作6%4
        System.out.println(a);//2
        a=-6%(-4);//当作-6%4
        System.out.println(a);//-2

复合赋值运算符需注意

  • Java中使用复合运算符在运算时,自动进行了强制类型转换
    如:
char c=25+c;

//报错,在上一站也提到过,CPU的整形运算器,默认操作字节长度为4,为了适应CPU,这里的25+c会在编译时提升为int.所以报错

‍♀️"想要不报错,怎么办?"----强制类型转换(打包票)

char c=(char)25+c;

看下面这个代码,没有报错,虽然相当于c=c+25,但是由于Java中的符合运算符自动进行了强制类型转换,所以不报错.

char c+=25;

2,关系运算符

  • java中,使用关系运算符进行运算,运算后表达式的结果的数据类型为布尔类型:ture或者false
运算符 说明
== 判断左右操作数是否相等
!= 不相等
<=
>=
<
>

3,⭐逻辑运算符

  • 用逻辑运算符运算后,表达式的结果同样也是布尔类型
运算符 说明
&& (逻辑与) 一假则假,全真则真
|| (逻辑或) 一真则真,全假则假
! 逻辑非

❗注意:

  1. 逻辑运算符要求运算数均为布尔类型.
  2. 逻辑与(&&)存在短路现象:
expr3=expr1&&expr2;

如果expr1的值为false,则expr2不执行,expr3=false;

  1. 逻辑或(||)存在短路现象
expr3=expr1||expr2;

如果expr1的值为true,则expr2不执行,expr3=true

4,位运算符

和C中一样,Java中对数据操作的最小单位是位(bit),而不是字节(byte)

运算符 说明
& 按照二进制位与
| 按照二进制位或
^ 按照二进制位异或(一样的是0,不一样的是1)–>本质:找不同

‍♀️:“怎么用?”
移位操作符、位操作符详解–图解演示、例题讲解、经验总结
❣关于位操作符和移位操作符,Java和C语言都是一样的使用,我之前写的这篇博客已经介绍得很清晰了,这里我就不重复造轮子了.

5,位移操作符

运算符 说明
<<(左移) 左边丢弃,右边补0
>> (右移) 右边丢弃,左边补符号位对应的数字
>>> (无符号右移)(Java特有) 右边丢弃,左边补0

关于二进制位具体咋移动的,可戳移位操作符、位操作符详解–图解演示、例题讲解、经验总结

优先级问题:

不必刻意取记优先级,根据逻辑,适当加括号即可~

任务3:Java中的类型提升

(其实在前一战有提到过,这里具体是系统总结一下~0

1:隐式类型提升(自动类型转换)—只涉及除布尔类型外的7种数据类型

  • 当数据类型范围大的变量和数据类型范围小的变量进行混合运算时,结果自动提升为大的那个变量.(具体原因上一站有讲)
 		long a=12;
        int b=a+2;

在这里插入图片描述

  • 特别地的是,byte,char,short,三种基本数据类型的字节数在4字节以下,所以当它们进行运算时,为了适应CPU,会自动转换成int.

2:强制类型转换(有风险)

//格式:
数据类型a 变量名=(目标类型) (被转换的变量/数据)

以上就是第3站的所有知识点了~希望对大家有所帮助.
如果有用,还请关注+三连.您的关注和三连能给瑶瑶子带来无穷的动力~~~
可以订阅专栏爪洼岛冒险记(free),和瑶瑶子一起,穿梭Java岛,学习java,一起努力,从小白变大牛~‍♀️

往期blog回顾:

  1. 【爪洼岛冒险记】第2站:带你学会:Java中三种输出语句,java中基本数据类型,学会变量,常量,类型转换知识点
  2. 【爪洼岛冒险记】第1站:Java重要特性,JDK,JRE,JVM区别和联系,环境变量
    【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升_第6张图片

你可能感兴趣的:(java,面试,jvm)