变量交换
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
}
}