常用数据类型的兼容性
数值类型的兼容性
整数数据类型:byte short int long
浮点数数据类型:float double
自动数据类型转换规则:
由小范围的数据类型可以自动转换为大范围数据类型。因为大范围的数据范围包含小范围的数据范围。
注意:byte类型+short类型 最终也会默认得到int类型
不兼容:
布尔类型与数值类型(可以用三目运算符和类 Boolean.compare)
布尔类型与字符类型
通过实验现象理解数据兼容性
-
计算不同数值类型的加法,默认向高一级的数据类型转换。
-
计算布尔类型和整型的加法,
错误: 二元运算符 '+' 的操作数类型错误
理由:布尔类型无法自动转为数值类型。
-
计算字符类型与整型加法
会将字符类型转为ASCII码对应的整数值与整型相加
例如 ‘a’+1=98 因为 ‘a’ 对应的ASCII码的值是 97
关于强制类型转换规则和实验
大原则:为确保数据值最终正确,那么我们将大范围的数据类型转为小范围数据类型这个方向转换的时候,要注意这个数据应该是在小范围的数据类型的范围内的,否则就会出现不理想的结果。(取模后的结果)(时钟理论)
注意:浮点型向整型转换的时候,最终只截取整数部分作为结果。
强制类型转换格式:
(目标类型)变量 这样就能得到目标数据类型。(Java18)
Java运算符的分类以及含义简介
分类 具体运算符 算数运算符 + - * / %(取余) ++ -- 关系运算符 < > <= >= == != 位运算符 >> << >>>(右移补零) ~ & | ^ 逻辑运算符 ! && || 条件(三目)运算符 ? : 分量运算符 . 下标运算符 [] 实例运算符 lnstanceof 内存运算符 new 强制运算符 (类型) 方法调用运算符 () 精通使用算数运算符
基本运算符
符号主要有+(加),-(减),*(乘),/(除)
我们特别要注意除法/
-
整数除法 System.out.print(10/4);
输出结果 2 ,注意这个除法只保留了整数位,说明最终数据转为了int类型
-
小数除法 System.out.print(10.0/4);
输出结果 2.5 ,这样结果是正确的,说明如果想要得到准确的小数,那么我们就要让数值使用默认的小数(double类型)
-
除以0 System.out.print(2/0);
输出结果 Exception in thread "main" java.lang.ArithmeticException: / by zero
取余运算符
符号为:% 也可以理解为取模
-
通过实验观察%结果
System.out.print(10%3);//取余数部分,得到1
-
2.除以0 System.out.print(10%0);
输出结果 Exception in thread "main" java.lang.ArithmeticException: / by zero
3. 负数取余的情况
A%B 这样的类型,其实在系统内运行的时候,会运行A%|B|(绝对值)
递增递减运算符以及实验理解
符号:++(递增) --(递减)
使用:A++ 相当于A=A+1 A--相当于A=A-1
理解:递增发生在变量使用之前还是之后?
be=8888
System.out.print(be++) 输出结果 8888 递增发生在变量使用之后 先使用后递增
System.out.print(++be) 输出结果 8889 递增发生在变量使用之前 先递增后使用
关系运算符
什么是关系运算符?
A 与 B 的关系 得到一个布尔值
有哪些关系运算符?
==(等于) !=(不等于) >(大于) <(小于) >=(大于等于) <=(小于等于)
如何使用关系运算符?
注意:只有数值才能使用关系运算符比较
格式:数值A 关系运算符 数值B
最后将返回的布尔值运用到实际业务中
比较数字实验
boolean be=5>6 结果是false
可以直接根据我们的常识来判断最终布尔类型的结果。
运算符在的优先级,在赋值运算的右侧先进行运算,然后得到结果
比较字符实验
boolean be2='a'>'b'; System.out.print(be2);
输出结果 false 比较的时候,字符会被转为ASCII码值(数值),然后进行比较
如何比较字符串?
需要特别的判断才能比较。
我们举例字符串是否相等的例子。
如果说直接只有==或!=不会报错,jdk可以比较
(不推荐这种方法进行字符串的比较,推荐使用equals方法
使用举例:String bestr="ccc"; Boolean be5=bestr.equals("ccc");System.out.print(be5);输出结果 true)