类型转换(强制类型转换,自动类型转换)
由于java是强类型语言,所以在进行有些运算时,需用到类型转换。
运算中,不同类型的数据先转化为同一类型,然后进行运算。
低-----------------------------------------------------高
byte,short,char->int->long->float->double
int i=128;
byte b=(byte)i; //内存溢出
//强制转换 (类型)变量名 高-----低
//自动转换 低-----高
System.out.println(i);
System.out.println(b);
/*
注意点:
1、不能对b布尔值进行转换。
2、不能把对象类型转换为不相干的类型。
3、在把高容量转换到低容量的时候,强制转换。
4、转换的时候可能存在内存溢出,或者精度问题。
*/
操作比较大的数字时,注意溢出问题。
JDK7新特性,数字之间可以用下划线分割。
例:
int i=10_0000_0000;
System.out.println(i);
相乘类型转换实例:
public static void main(String[] args) {
int i=10_0000_0000;
int year=20;
int total=i*year;
//long to2=i*year;
//System.out.println(to2);
long to3=((long)i)*year;
System.out.println(to3);
System.out.println("----------------");
long to4=i*((long)year);;
System.out.println(to4);
System.out.println("----------------");
long to5=Long.valueOf("20000000000");
System.out.println(to5);
}
to2报错,其他均成功输出。
注意点:输出long类型数值需在数值后加L。
如果想对浮点数进行舍入运算,以便得到最接近的整数(在很多情况下,这种操作更有用),那就需要使用Math.round方法:
public static void main(String[] args) {
float x = 7.8999f;
int n = (int)x;
System.out.println(n);
System.out.println("-----------------");
int m = (int)Math.round(x);
System.out.println(m);
}
输出:n = 7 ;m = 8;
当调用round的时候仍然需要进行强制类型转换。因为round方法返回的结果为double类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够转换成int类型。
变量
每个变量都应先定义再使用。
Java变量是程序中最基础的存储单位,其要素包括变量名、变量类型和作用域。
注意事项:
- 变量名必须是合法的标识符。
- 每个变量都有类型,类型可以是基础类型,也可以是引用类型。
- 变量声明是一句完整的语句,因此每一个声明都必须以分号结束。
- 不建议在代码中使用$
声明格式:数据类型 变量名 = 值; //可以用逗号隔开来声明多个同类型变量(不建议)。
eg1. int a; a = 4;
或 int a = 4;
常量
在Java中用final定义常量,常量一旦被赋值就不能够再更改了。
- 常量名通常使用全大写。
eg.final double m = 2.54;
在Java中,经常希望某个常量可以在一个类中的多个方法中使用,通常把这些常量称为类常量。可以使用关键字static final设置一个类常量。
public class demo1 {
public static final int AGE = 18 ;
public static void main(String[] args) {
Scanner n = new Scanner(System.in);
System.out.print("name:");
String name = n.nextLine();
System.out.println(name+"说她永远"+AGE+"岁");
}
}
- 类常量的定义位于main方法的外部。因此,在同一个类的其他方法中也
可以使用这个常量。而且,如果一个常量被声明为public,那么其他类的方法也可以使用这个常量。