表达式中自动变换:
在表达式中,小的和大的类型的变量会自动转换成大的类型的变量
(byte、short、char)->int ->long->float->double
字节大小:1、2、2、4、8、4、8
注意:
表达式的最终结果是由表达式里的最高类型决定的;
在表达式中char short byte 自动转换成int参与运算。
表达式的自动类型转换是怎么样的?
小范围变量类型自动转换为大范围变量类型
表达式的最终结果类型是由谁决定的?
当中最大、最高的变量类型
表达式的有哪些变量类型是需要注意的?
(byte/char/short)自动转换为int
那么大类型的变量不能转换为小类型嘛?
可以使用强制转换、数据类型 变量名=(数据类型)值;
场景:
int a=功能1();
功能2(byte);
需要将a的变量类型转换为byte
a=byte(1);
int a=10;
byte b=a;
这样会报错的 a的变量类型是int b的变量类型是byte 讲道理大的数据类型不能转给小的数据类型,不然会溢出,得不到想要的真实的数据。
所以,强制转换会有一定的差错~~~
强制转换类型:
可以将变量类型范围大的数据赋值给变量范围小的变量。
数据类型 变量名=(数据类型)变量名、数据
有些数据强制转换会出现问题造成数据丢失(溢出):
j输出的结果是-36,可以看到这就是数据溢出了!
why?
i是int类型占32bit位 j是byte类型占8个bit位。j是装不在i这么多数据,只能存储8位,后期根据原反补码的知识可以更好理解。
j占8位就是 11011100(补码)最高位是1 说明是负数利用原反补码的知识
11011011 反码 原码 10100100 (-36) 原码负责打印 反码过度 补码一般用来存储。
浮点型数据转换成整形,直接丢掉小数部分,保留整数部分。
什么是强制转换?
可以强行将变量范围大的转化为小的
数据类型 变量名=(数据类型)变量、数据;
强制类型转换有哪些需要注意的?
可以出现数据丢失
小数转换成整数是直接截断小数保留整数。
运算符有哪些?
+ - * / %
注意java的除法/:
这个除法是整除/ python的整除是//
如果两个整数做除法,其结果一定是整数,因为最高类型是整数所以不会出现比int变量类型还高的double 如何让除法结果得到double类型?添加double 类型的变量、例如在被除数后*1.0
//需求:将一个三位数分别拆各位十位百位
很简单 %10 /10的知识了。
接下来看看‘+’做连接符:
+做连接符,结果依然是一个字符串;
能算就算,不能算就在一起;计算机真的很聪明。
拼接的时候注意一下细节,字符' ' 字符串" "
能算就算,不能算就在一起 ascii码+数字是可以计算的 按照ascii码对应的整数来算。
自增自减运算符:
++ --
区别:
++a a++ 前面一个先++后使用 后面一个先使用后++
注意:
++和--既可以放在变量的后面、也可以放在变量的前面
++ --只能操作变量,不能操作字面量。
自增自减运算符的作用是什么,有什么作用?
++ -- 对当前变量值+1 -1
自增。自减运算符在变量前后区别嘛?
如果单独使用放前后是没有区别的。
来看一到金典的面试题嘛?
慢慢来,冷静一点,不要慌张的,看是先使用还是先变化???
基本赋值运算符:
就是"=" Int a=10; //先看右边的表达式然后通过赋值=给左边的变量a存储
扩展赋值运行算符:
+= -= *= /= %=
注意:扩展的赋值运算符隐含了强制类型转换
a+=1;相当于 a=a+1; a++
作用是什么?
基本作用是赋值。
注意:
在做相等判断是,千万不要把==误写成=
==判断相等 =赋值表达
关系运算符:
== != > >= < <= 关系运算符返回布尔型 true / false
逻辑运算符:
可以把多个条件的布尔结果放在一起运算 最终返回一个布尔结果;
例如,屏幕尺寸 6.95英寸以上 运行内存:8GB
& 相当于and
| 相当于or
! 逻辑非 逻辑取反
^ 一真一假为真 相同为假 不同为真
短路逻辑运算符:
&& 左边结果为假 右边的表达式不算
|| 左边的结果为真 右边直接不算了
注意:
逻辑与'&' 、逻辑或'|' :无论左边是true/false 右边的表达式都要算。
例如:
notes:
针对两个表达式之间进行运算
逻辑与& :有一个为f就为f
短路逻辑与&&:左边已经是f了 右边表达式直接不执行 结果为f
逻辑或|:只要有一个t结果就是t
短路逻辑或||:左边已经为t了 右边表达式直接不执行,结果直接为t
逻辑非:! f=t
逻辑异或: ^ 相同是f 不相同是f
注意:
实际开发中,常用的逻辑运算符还是:&& || !
---------------------------------------------------------------------------------------
三元运算符介绍:
格式: 根据值的类型进行数据类型定义 表达式?值1(为真):值2(为假);
例如:判断成绩是否及格、两个数中的较大值
进阶:判断三个数的最大值
运算优先级:
在表达式中各个运算符有优先运算顺序 例如* /优先于+ -
优先级大致描述一下:
()
! ++ --
* / %
+ -
<< >> >>>
< <= > >= instanceof
== !=
& 单与
^
| 单或
&&
|| 双与和双或有短路规则
?:
= += -= *= /= %=....
例如:
api:
应用程序编程接口
java已经写好的程序,供我们使用(通俗来说)
键盘录入的三个步骤:
导包,自动导入
写一行代码常见扫描对象
Scanner sc=new Scanner(System.in);
等待用户输入数据
例如:
ApI是什么?
一个应用程序的接口,就是java已经帮我们准备好的的程序 等待使用 咱们直接调用就好!
键盘录入的步骤:
1、导包,自动导入 Scanner。。。
2、抄写代码得到扫描器对象 Scanner sc=new Scanner(System.in);
3、等待用户输入数据 sc.next() 支持字符串 sc.nextInt() 需要变量接收结果、
java基本语法总结:
不同类型的变量赋值或计算后的最终数据类型自动为最大范围的变量 例如 int 和 double 结果需要double接收 (byte、char,short)默认是int类型 小范围的变量直接赋值给大范围的变量,小的可以被大的存 不会有数据溢出的问题;强制转换 数据类型 变量名=(数据类型)变量/数据。
byte a=10; byte b=20; byte c=a+b; a b是byte但是在java中自动最终结果是int 保证了数据的稳定 性 可以使用赋值方式 a+=b; byte a=(byte)b;
浮点型强制转换会将小数部分直接丢掉
++ -- || | && & !true=false 。。。三目操作符 表达式 ? 真:假; 变量接收即可。键盘录入..
谢谢大家的观看,三连支持一下,下一期java基础知识再见!!!