在写java代码的时候,所有的变量都需要声明一种数据类型,在java的代码中,数据类型分为基本数据类型和引用数据类型。下面先介绍基本数据类型
基本数据类型由8个:
1、byte字节数据类型,取值范围为-128到127。
2、short短整数数据类型,取值范围为-2^15到2^15-1。
3、int整数数据类型,取值范围为-2^31到2^31-1。
4、long长整数数据类型,取值范围为-2^63到2^63-1。
5、float单精度浮点型,取值范围为4个字节,当数值范围过大或者过小的时候,会出现数值精度的问题,因此对数据精度要求较高的,不推荐使用。
6、double双精度浮点型,取值范围为8个字节,同样的会发生数据计算过后数值精度的问题。
7、char字符数据类型,用单引号括起来的单个字符。
8、boolean布尔数据类型,这种数据类型只有两个值,true和false,true表示真,false表示假。
以下是定义变量,并声明数据类型的事例代码:
public void method_1(){ //byte字节数据类型:byte,取值只能是-128到127 byte b = 127; //short短整形数据类型,不常用 short s = 100; //int整形数据类型,常用 int i = 100; //long长整形数据类型,不常用,定义的值必须在后面加上一个L long l = 100L; //float单精度数据类型,取值范围为4个字节,在定义的值后面加上f float f = 100.1f; //double双精度数据类型,取值范围8个字节,值后面的d可以省略 double d = 100.1; //char字符数据类型,用单引号括起来的单个字符 char c = 'a'; //boolean布尔数据类型,只有两个值,true和false boolean bool = true; }
java一共只有8种基本数据类型,那么,对于一个变量,怎么进行数据类型的转换呢?比如,将int类型转换成long或者其他数据类型等。
对于数据类型的转换分为两种:隐式转换和显示转换(强制转换)。
1)隐式转换:数据类型自动的转换,这种方式是用在小范围的数据向大范围的数据进行转换,比如:int类型向long类型进行转换。
用图示举例:
以上图为例:比如int数据类型为一个容器,现在int里面是装满了水的,要将int里面的水,倒入long数据类型的容器里面,会发现,long的数据类型容量比int的数据类型容量要大,则可以将int容器里面的水装入long数据类型的水中,这就是long数据类型的取值范围比int数据类型的取值范围大,则虚拟机会自动的将int数据类型的变量,自动的转换成long数据类型。
事例代码:
public void method_2(){ //定义一个变量a,数据类型为int int a = 1000; //定义一个变量b,数据类型为long,并且将a的变量赋值给b long b = a; }
以上代码中,a的数据类型为int,b的数据类型为b,但是却能够将a的值直接赋值给b变量,这里面就涉及的是隐式转换,int b = a,就是将a的int型转换成long类型,再赋值给b。
2)显示转换(强制转换):
用图示举例:
如上图为例:还是将long数据类型和int数据类型分别看成一个容器,现在要将long数据类型里面的水,装入int数据类型中,显而易见,int数据类型可能并装不下long数据类型的所有水,这个时候就会发生溢出,数据也是一样,如果将大范围的数据类型转换成小范围的数据类型,就可能造成数据丢失。因此代码会报错,错误原因:
但是有可能是这种情况:
如上图所示,我们自己明确的知道,long数据类型里面的水,装入int数据类型中,也是不会出现溢出的,这个时候,就需要进行强制转换,将long数据类型的变量,强制转换成int。
事例代码:
1 public void method_3(){ 2 //定义一个变量a,数据类型为long 3 long a = 1000; 4 //定义一个变量为b,数据类型为int,并且将数据上面的a赋值给b 5 int b = (int)a; 6 }
如以上代码,想要将数据类型为long的变量a赋值赋值给数据类型为int的变量b,则需要先将a进行强制转换成int:(int)a,再赋值给b,否则会报错,导致编译失败