Day05
数据转换
基本类型从低到高等级划分
byte,char ,short->int->long->float->double
//byte 为字节型
//char 为字符型
//short 为短整型 int 为整型 long 为长整型
//float ,double 为浮点数类型
高>>低(强制转换 )
(类型)变量名 高>>低
①注意存储范围
例如:
public class Decom05 {
public static void main(String args[]){
int a1 = 125;
int a2 = 130;
byte b = (byte)a1;
byte c = (byte)a2;
System.out.println(b); //125
System.out.println(c); //-126
}
}
若用int类型转换为byte类型 数据超过-128~127的范围时 ,b输出未知.内存溢出.
强制转换需要注意存储范围
②浮点类型转整型
public class Decom05 {
public static void main(String args[]){
double a1 = 32.45;
float a2 = 28.36f;
int a3 = (int)a1;
long a4 = (long)a2;
System.out.println(a1);//32.45
System.out.println(a2);//28.36
System.out.println(a3);//32
System.out.println(a4);//28
}
}
可见,浮点类型强转为整型,小数部分将会丢失. 注意:并非四舍五入
低>>高(自动转换)
不需要复杂转换
public class Decom05 {
public static void main(String args[]){
int a5 = 464;
double a6 = a5;
float a7 = a5;
System.out.println(a5); //464
System.out.println(a6); //464.0
System.out.println(a7); //464.0
}
}
①字符与整型的转换
public class Decom05 {
public static void main(String args[]){
char a1 = 'c';
int b = a1+1;
System.out.println(b); //100
System.out.println((char)b); //d
}
}
字符型变量运算处理输出整型变量时,字母会转化为对应的Unic编码值,在进行运算.
整型变量转化为字符型会通过unic编码表转化为对应的字母.
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题!
对较大的数据进行操作时,注意存储范围
例如:
public class Decom05 {
public static void main(String args[]){
int money = 10_0000_0000;
int year = 20 ;
int total1 = money*year ;
long total2 = money*year;
long total3 = money*(long)year;
System.out.println(total1); //-1474836480
System.out.println(total2); //-1474836480
System.out.println((long)total2); //-1474836480
System.out.println(total3); //20000000000
}
}
两个较大的Int类型数据,进行乘法运算时,输出的结果超出int 存储范围,导致内存溢出
在打印输出时,将结果强转为长整型变量,结果仍然溢出,原因:money 和year都是int类型,运算结果也是Int类型,内存已经溢出.此时转化为长整型变量无济于事
解决溢出问题,在两个int类型进行运算时,对其中一个数据强转为长整型变量.输出结果为长整型变量,结果正确
数字后缀带L表示长整型数据
注意细节:长整型类型,数据后缀最好是大写L,避免使用小写l误解为数字1;
例如: long double i = 123456.0L; ✔
long double i = 123456.0l; ✖
变量
定义:
- 变量是什么:可以变化的量
- Java是一种强类型语言,每个变量都必须声明其类型;
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
分类:
- 类变量
- 实例变量
- 局部变量
public class Decom05I {
static int allClinks=0; //类变量
String str="Hello world"; //实例变量
public void method(){
int i =0 ; //局部变量
}
}
快捷键方法声明:psvm 取首字母
注:final用来定义常量,不在修改!
static 作为修饰符,代表类,随类文件存在
public class Decom05I {
static final double PI = 3.14; //类变量,可以在main方法中直接调用
public static void main(String[] args) {
System.out.println(PI);
}
}
sattic final double PI = 3.14;
等价于
final satic double PI = 3.14;
注意:
- 每个变量都有类型,类型可以是数据类型,也可以是引用类型;
- 变量名必须是合法标识符;
- 变量声明是一条完整的语句,因此每个声明都必须以分号结束;
常量
定义:
- 常量(Constant):初始化(initialize)后不能在改变值!不会变动的值。
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 变量名 = 值;
final double PI = 3.14;
- 变量名一般使用大写字符。
命名规范:
- 所有变量、方法、类名:易于识别,见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary,(除第一个单词,后面单词首字母大写)
- 局部变量:首字母小写和驼峰原则
- 常亮:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()