Java中的byte门类及用if-else对三个数排序
Java中的byte类型及用if-else对三个数排序
1、byte类型是Java的基本数据类型,占一个字节,2^8,表数范围:-128~127
b1 = b1 + 1;
^
需要: byte
找到: int
1 个错误
是因为 b1 + 1 中的常量 1 是默认为一个 int 类型数据,相加结果不能赋给 byte 类型
3 行和4 行的区别:编译器在编译时,在判断右边数值的时候发现是 int 类型(是“常量”),但会判断是不是在 byte 类型(-128~127)范围之内,如果在这个范围之中的话,会给右边的 int 类型做默认的强制转换,把最后的一个字节赋值到了 b3 这个变量当中,b1 和 b2 是“变量”意味着这两个值不确定、可能随时变化,编译器无法检查,也无法确定是否在 byte 类型范围之内,检查不了就会报错(可能丢失精度),如果是“常量”编译器就能够判断。
2、输入 3 个数,再按从小到大的顺序输出
过程:
1,导入类 util.java
2,创建 scanner 对象
3,调用 scanner 对象的 nextInt() 方法返回一个 int 类型数据
4,排序,先对 num1 和 num2 排序,num1 存放小的,num2 存放大的,num3 就只有三个可能
?num3? num1 ?num3? num2 ?num3?
----------------+----------------------+--------------->
1、byte类型是Java的基本数据类型,占一个字节,2^8,表数范围:-128~127
public class TestByte { public static void main(String[] args) { byte b1 = 1; b1++; b1 = b1 + 1; } }
编译时出现以下错误:
TestByte.java:5: 错误: 可能损失精度b1 = b1 + 1;
^
需要: byte
找到: int
1 个错误
是因为 b1 + 1 中的常量 1 是默认为一个 int 类型数据,相加结果不能赋给 byte 类型
byte b1 = 1; byte b2 = 1; byte b3 = 1 + 1; byte b4 = b1 + b2; //可以改为byte b4 = (byte)(b1 + b2)编译时第 4 行还是出现同样的问题,因为 byte 在计算时首先要转换为 int 类型,其结果也不能赋给 byte 类型。
3 行和4 行的区别:编译器在编译时,在判断右边数值的时候发现是 int 类型(是“常量”),但会判断是不是在 byte 类型(-128~127)范围之内,如果在这个范围之中的话,会给右边的 int 类型做默认的强制转换,把最后的一个字节赋值到了 b3 这个变量当中,b1 和 b2 是“变量”意味着这两个值不确定、可能随时变化,编译器无法检查,也无法确定是否在 byte 类型范围之内,检查不了就会报错(可能丢失精度),如果是“常量”编译器就能够判断。
2、输入 3 个数,再按从小到大的顺序输出
过程:
1,导入类 util.java
2,创建 scanner 对象
3,调用 scanner 对象的 nextInt() 方法返回一个 int 类型数据
4,排序,先对 num1 和 num2 排序,num1 存放小的,num2 存放大的,num3 就只有三个可能
?num3? num1 ?num3? num2 ?num3?
----------------+----------------------+--------------->
小 大
code list:
import java.util.Scanner; public class TestSort { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("num1="); int num1 = scanner.nextInt(); System.out.print("num2="); int num2 = scanner.nextInt(); System.out.print("num3="); int num3 = scanner.nextInt(); int tmp; if (num1 > num2) { tmp = num1; num1 = num2; num2 = tmp; } if (num3 > num2) { System.out.print(num1 + " " + num2 + " " + num3); } else if (num3 > num1) { System.out.print(num1 + " " + num3 + " " + num2); } else { System.out.print(num3 + " " + num1 + " " + num2); } } }