类型转换
-
由于JAVA是强类型语言,所以要进行有些运算的时候需要用到类型转换
-
类型转换分为两种
- 强制类型转换:(类型)+变量名,高–》低
- 自动类型转换: 低—》高
-
低--------------------------------------------------------》》》高
-
byte、short、char、–>int–>long–>float–>double
public class Demo04 { public static void main(String[] args) { int i=127; byte i1=(byte)i; int i3=15; float i4=i3; System.out.println(i);//127 System.out.println(i1);//127 System.out.println(i3);//15 System.out.println(i4);//15.0
注意点
- 不能对布尔值进行转换,boolean只能等于false或true
boolean i5=false;
boolean i6=true;
-
不能把对象类型转换为不相干的类型
-
把高容量转换成低容量的时候强制转换,反正自动转换
-
转换的时候可能存在内存溢出或者精度问题
System.out.println((int)253.5);//253 System.out.println((int)125.525f);//125
常见的问题
- 操作比较大的时候注意溢出问题
- JDK新特性,数字之间可以用下划线分割,而且并不会被输出
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(total3);//200_0000_0000
变量
- 变量就是可以变化的量
- Java是个强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包含变量名,变量类型,作用域
- 数据类型+变量名=值;可以使用逗号隔开来声明多个同类型变量,但不建议这样样写
public class Demo05 {
public static void main(String[] args) {
//long a,b,c;
//long a=1,b=2,c=3;不建议这样写,要注重程序的可读性
long a = 1L;
long b = 2L;
long c = 3L;
char d = '4';
float e = 3.215f;
double f = 3.215;
String i = "Holle World";
- 注意事项
- 每个变量都有类型,类型可以使基本类型,也可以是引用类型
- 变量名必须是合法的标识符,关键字不可作为变量名
- 变量声明是一个条完整的语句,因此每一个声明都必须以**分号(;)**结束。
变量作用域
- 类变量:在方法外,在类里面,以static为关键字
public class Demo08 {
//类变量:加入关键字Static
static byte salary=120;
static String two="2";
public static void main(String[] args) {
System.out.println(two);
System.out.println(salary);
}
}
- 实例变量
- 在方法外,在类里面,从属于对象
- 如果不自行初始化,就会输出默认值
- 数字类型的默认值为:0 0.0 \u000
- boolean类型的默认值为:false
- 除了基本类型,其他的默认值都为:null
public claas Demo06{
String name;
int age;
char money;
float years;
double flag;
boolean one;
public static viod main (string[] args){
//变量类型 变量名=new Demo06()
Demo06 demo06=new Demo06();
System.out.println(demo06.name);//null
System.out.println(demo06.age);//0
System.out.println(demo06.money);//\u0000
System.out.println(demo06.years);//0.0
System.out.println(demo06.flag);//0.0
System.out.println(demo06.one);//false
}
}
- 局部变量:在方法中,必须声明和初始化值
public class Demo06{
public static void main(String[] args) {
//局部变量:在方法中,必须声明初始化值
int i =1;
System.out.println(i);//1
}
}
常量
- 初始化后不能改变的值,不会变动的值
- 常量可以理解为一种特殊的变量,它的值被设定后再程序运行过程中不允许被改变
- 常量以final,为关键字进行使用、
- 常量名一般使用大写字符
public class Demo07 {
//修饰符:变量类型前的称为修饰符,不存在先后顺序
static final double PI=3.1415926;//常量
final static double PI1=3.1415926;//常量
public static void main(String[] args) {
System.out.println(PI);//31415926
System.out.println(PI1);//3.1415926