系列文章目录
【逆天OP懒狗的JAVA自学笔记–1.入门篇】已完结
【逆天OP懒狗的JAVA自学笔记–2.JAVA基础概念篇一】已完结
【逆天OP懒狗的JAVA自学笔记–2.JAVA基础概念篇二】已完结
【逆天OP懒狗的JAVA自学笔记–2.JAVA基础概念篇三】已完结
【逆天OP懒狗的JAVA自学笔记–3.IDEA扩展设置】已完结
【逆天OP懒狗的JAVA自学笔记–4.算数运算符初级】已完结
前言
本文是算术运算符的进阶使用介绍。
一、算术运算符高级用法(加法为例)
1.加法进阶使用
1.1数字相加
①隐式转换(自动类型提升)
程序自动提升数据类型,无需人为操作。下图的 a 由 int 转换为 double 。
两种隐式转换规则
隐式转换小结(核心)
隐式转换练习
练习2里的i先转int,然后i、n二者的和转double;练习3里的b转int,然后b、s的和转long。
②强制转换
大转小数据可能会发生错误。
强制转换练习
代码如下(示例):
byte a = 1;
byte b = 6;
byte c = a + b;
程序报错:
这个报错提示意味着在代码中出现了类型不匹配的错误。具体来说,这里是指你在某个地方使用了一个需要 byte 类型的值,但实际提供的是 int 类型的值。
修改代码:a和b分别强制转换为byte类型
byte a = 1;
byte b = 6;
byte c = (byte)a + (byte)b;
程序报错:
原因分析:
在Java中,表达式 (byte)a + (byte)b 中的 (byte) 是一种类型转换。尽管 a 和 b 都是 byte 类型的变量,但它们在表达式中被强制转换为 byte 类型。然而,在这种情况下,强制转换的操作符 (byte) 只适用于其后紧跟着的变量,因此 (byte)a + (byte)b 实际上等同于 (byte)a + b,这会导致编译错误。
再次修正:先让a+b,再为其整体转型
byte a = 1;
byte b = 6;
byte c = (byte)(a+b);
运行结果:
扩展:若将a、b的值取得略大,让其之和超过byte类型的取值范围会有什么情况。结果为负数
原因:
在Java中,byte的范围是从 -128 到 127。当你将两个byte类型的数相加时,如果结果超出了byte类型的范围,就会发生溢出。在这种情况下,100 + 60 的结果 160 超出了byte类型的范围。
Java中的溢出规则是,如果结果超出了byte类型的范围,那么结果会被截断为一个有效的byte值。由于byte的范围是从 -128 到 127,所以160会被截断为 -96。这是由于二进制补码表示法,160的二进制表示是10000000,截取最后一个字节后为 10000000,根据二进制补码规则,这个二进制数被解释为补码形式的负数,对应的十进制是 -96。
1.2字符串相加
字符串相加基础概念
练习
数值拆分练习
代码示例:
package test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//键盘录入一个三位数,获取其中的个位、十位、百位
//1.键盘录入
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数");
int number = sc.nextInt();
//2.获取个位,十位,百位
//公式
//个位: 数字%10
//十位: 数字%10%10
//百位: 数字%100%10
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 100;
System.out.println("个位数"+ge);
System.out.println("十位数"+shi);
System.out.println("百位数"+bai);
1.3字符相加
练习
示例代码:
char c = 'a';
int b = c + 0;
System.out.println(b);
运行结果:
97
字符串相加是寻找ASCII码表里字符对应的数字进行计算。
ASCII码表
练习
小结
字符串相加用 “ ”,字符相加用 ’ ’ 。字符串相加是字符拼接,字符相加是查表加值。
总结
哦啦咪咪大呀,我是懒狗,俺们明天见!(24.4.30)