类型转换
当把一种基本类型的数据赋值给另外一种基本数据类型的变量时,就会涉及到类型转换,类型转换仅局限于数值型类型内部
-
由于Java是强类型语言,所以进行有些运算的时候,需要用到类型转换
数据类型的优先级别的高低和所占内存字节数有关,所占字节数越多,优先级越高
优先级别由低到高的顺序排序:
byte—short—char—int—long—float—double
运算中,不同类型的数据先转化为同一类型,然后进行运算
-
Java中的基本数据类型转换分为
- 自动类型转换(隐式类型转换)
- 低到高自动转换
- 强制类型转换(显式类型转换)
- 自动类型转换(隐式类型转换)
数据类型转换
public class Demo3 {
public static void main(String[] args) {
int i = 18;
byte b = (byte)i ;
//强制转换int类型转换为byte类型 (类名)变量名
System.out.println(i);
System.out.println(b);
/*
* 注意点:
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 2.在把高容量转换为低容量的时候,强制转换
* 4.转换的时候可能存在内存溢出,或者精度问题!
* */
System.out.println("==========");
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45
System.out.println("==========");
char c= 'a';
int d = c+1;
System.out.println(d);
System.out.println((char) d );
}
}
注意问题:在整数之间进行类型转换时,数值不发生改变;而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失
数据转换溢出问题
public class Demo3 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以使用下划线分割
int money = 10_0000_0000;
int years = 20 ;
int total = money * years;//运行结果: -1474836480 计算的时候溢出了
long total2 = money* years;//默认是int ,转换之前就已经存在问题了
long total3 = money * ((long)years); //先把一个数转换为Long
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
变量
- 变量是什么:就是可以变化的量!
Java是一种强类型语言,每个变量都必须声明其类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型,作用域
变量声明的语法格式:
数据
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量生命刚刚是一条完整的语句,因此每一个声明都必须以分号结束
public class Demo4 {
public static void main(String[] args) {
// int a,b,c ;不建议这样定义,要保证程序可读性
int a=1 ;
String name = "挽姬" ;
char x = 'X' ;
double pi = 3.14 ;
}
}
作用域
- 类变量
- 实例变量
- 局部变量
public class Demo4 {
//类变量 static
static double salary = 2500;
//变量
//实例变量:从属于对象:如果不自行初始化,这个类型的默认值 0 0.0
//布尔值 : 默认是false
//除了基本类型,其余的默认值都是null
String name;//实例变量
int age ;
//主程序方法,main()方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 10 ;
System.out.println(i);
//变量类型 变量名字 = new Demo4
Demo4 demo4 = new Demo4();
System.out.println(demo4.name);
System.out.println(demo4.age);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add() {
// System.out.println(i);//这里就不能使用i
}
}
常量
常量:初始化后不能在改变值!不会变动的值
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
public class Demo5 {
//修饰符,不存在仙后顺序
//final代表常量
static final double pi = 3.14;
// final static double pi = 3.14;
public static void main(String[] args) {
System.out.println(pi);
}
}
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则 : monthSalary
- 局部变量:首字母小写和驼峰原则
- 类名:首字母大写和驼峰原则 : Man,GoodMan
- 方法名 : 首字母小写和驼峰原则 : run(),runRun()
变量的学习是程序编写的第一步,程序的编写往往都是从变量声明开始的