变量交换
import java.util.Scanner; //测试 变量值的交换 public class Test4_Exchange { public static void main(String[] args) { //1,定义变量a和b int a = new Scanner(System.in).nextInt() ; int b = new Scanner(System.in).nextInt() ; System.out.println("交换前:a="+a+",b="+b); //2,开始交换 int c = a ;//创建c保存a的值 a = b ;//a没值了,找b要 b = c ;//b没值了,找c要 System.out.println("交换后:a="+a+",b="+b); } }基本类型的字面值(5条)
public class Test5 { public static void main(String[] args) { //1,整数字面值是int类型 int a = 10000 ; //2,浮点数的字面值是double类型 double b = 5.5 ; //3,byte,short,char三种比int小的整数可以用范围内的值直接赋值 char c = 65535 ;//char类型的取值范围是0~65535,不能超出,超出就报错 byte d = 127 ;//byte的取值范围是-128~127,不能超出,超出就报错 short e = 32767; //short的取值范围是-32768~32767,不能超出,超出就报错 //4,字面值的后缀 lL fF dD float f = 5.5f ; //右侧的5.5默认是double类型,但是加了后缀f就会变成float类型 long g = 10000000000L ; //右侧的10000000000默认是int类型,但是已经超出了int范围,直接赋值会报错 //解决方案是加后缀L,把右侧的int类型的值转成long double h = 3d ; System.out.println(h);//3.0 //3的字面值是int类型,加后缀d,从int转成double //5,进制前缀 //二进制的数据0b开始 -- 0b0011 //八进制的数据0开始 -- 0567 //十六进制的数据0x开始 -- 0x0987C //-- char类型是\\u开始 -- \u0000 } }一,基本类型的类型转换 –1,小转大 – 隐式转换 –2,大转小-- 显式转换 //测试 类型转化 public class Test1 { public static void main(String[] args) { //小转大—隐式转换 byte a = 10 ; //把右侧的小类型byte类型的a,转成左侧的大类型long类型的b–可以直接转 long b = a ;
//大转小---显式转换double->int double m = 9.9 ; //拿着右侧的大类型double类型的m,转成左侧的下类型int类型的n--不可以直接转 //解决方案是:强转/显示转化--加代码--(小类型) int n = (int)m ; //小类型long 大类型float //小转大 --可以直接转 long x = 10; float y = x; //大转小 -- 不能直接转,需要强转 float o = 9.9F ;//右侧的9.9字面值是double,非要变成float需要加后缀F long p = (long) o ;//右侧的o是float类型是大类型.给左侧的plong类型小类型赋值-- } }运算规则(5条) //测试 运算规则 public class Test2 { public static void main(String[] args) { //1, 计算结果的数据类型,与最大类型一致 System.out.println(3/2); //int/int–> int – 1 System.out.println(3d/2); //double/int --> double – 1.5
//2, byte,short,char三种比int小的整数,运算时会先自动转换成int byte a = 1 ; byte b = 2 ; byte c = (byte) (a + b) ; //右侧已经变成大类型int了,给左侧的小类型,不可以直接赋值---需要强转 //TODO 测试short或者char的现象,同byte... //3,计算:光速运行一年的长度是多少米 //整数运算时,已经超出了int的范围,就会出现溢出现象 //解决方案就是,把字面值是int类型,加后缀L转成long类型. System.out.println( 30000000L*60*60*24*365 ); //4, java 对于小数运算时会产生不精确的现象 System.out.println(1-0.8);//0.19999999999999996 //5, 小数运算时的特殊值 System.out.println(1.5/0);//Infinity System.out.println(0/0.0);//NaN -- not a number } }