Java SE(16) 变量2

 

目录

 变量的数据类型

整数类型变量

浮点数类型变量

字符类型变量

布尔类型变量

变量的类型转换

         自动类型转换

强制类型转换


 变量的数据类型

    Java是一种强类型语言,每个变量都必须声明其数据类型。 
    Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。

    整数类型变量

1. 作用:整数类型变量用来存储整数数值,即没有小数部分的值。

2.分类

    

   在java中,为了给不同大小范围内的整数合理的分配存储空间,整数类型分为4种不同的类型。

  • 整数类型默认就是int类型的。
  • 在为一个long类型的变量赋值时,所赋值的后面要加上一个字母L(或小写l),说明赋值为lonh类型。

       如果赋的值未超出int类型的取值范围,则可以省略字母L(或小写l)。

       如:long num=2200000000L;     //所赋值超出int型的取值范围,后面必须加上字母L

              long num=189L;                   //所赋值未超出int型的取值范围,后面可以加上字母L

              long num=189 ;                   //所赋值超出int型的取值范围,后面可以省略字母L

 实例1:不同数制(进制)类型使用方式

public class TestVar1{
	public static void main(String[] args){
		//定义整数类型的变量
		//给变量赋值时,值可以为不同进制的
		int num1=12;    //默认情况下赋值就是十进制数
		System.out.println("num1"+"="+num1);
		
		int num2=0b10;  //前面加上0b或0B,这个值就是二进制数
		System.out.println("num2"+"="+num2);
		
		int num3=012;   //前面加上0,这个值就是八进制数
		System.out.println("num3"+"="+num3);
		
		int num4=0x12;  //前面加上0x或0X,这个值就是十六进制数
		System.out.println("num4"+"="+num4);
	}
}

运行结果:输出都为十进制类型

实例2:不同整数类型使用方式

public class TestVar2{
	public static void main(String[] args){
		//定义byte类型的变量
		byte b=12;    //定义了一个byte类型的变量,名字叫b,赋值为12
		System.out.println("b"+"="+b);
		
		short s=30000;  //定义了一个short类型的变量,名字叫s,赋值为30000
		System.out.println("s"+"="+s);
		
		int i=1234;   //定义了一个int类型的变量,名字叫i,赋值为1234
		System.out.println("i"+"="+i);
		
		long l=12;  //定义了一个long类型的变量,名字叫l,赋值为12
		System.out.println("l"+"="+l);
		
		//整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,它超出范围了
        //要想把一个数给long类型变量,那么后面加上L(推荐)或者l就可以了
        long L = 12345678910L;
        System.out.println("L"+"="+L);
	}
}

  运行结果:

  

    浮点数类型变量

1. 作用:浮点数类型变量用来存储小数数值

2. 分类:

    在 java中,浮点数 类型分为两种:单精度浮点型(float)和多精度浮点型(double)。

PS:有效数字指的是从左开始第一个不为0的数到最后一个数

  •  在java中,一个小数会被默认double

    因此,在为一个float类型的变量赋值时,需要在所赋值后面加上字母F(或小写f)

     而double类型的变量赋值时,可以在所赋值后面加上字母D(或小写d),也可不加

         如:float f=123.4F;         //为一个float类型的变量赋值,后面必须加上字母F(或小写f)

                double=110.1D;       //为一个double类型的变量赋值,后面可以加上字母D(或小写d)

                double=112.5;          //为一个double类型的变量赋值,后面可以不加上字母D(或小写d)

  • 在程序中也可以为一个浮点数类型变量赋予一个整数数值,例如下面的写法也可以。 

                float f=100;            //声明一个float类型的变量并赋整数值

                double=100;            //声明一个double类型的变量并赋整数值

实例1:浮点数两种表示形式的使用

public class TestVar3{
	public static void main(String[] args){
		//浮点数类型常量的两种形式
		//十进制小数法
		double num1=2.14;  
		System.out.println("num1"+"="+num1);
		//科学计数法
		double num2=214E-2;
		System.out.println("num2"+"="+num2);
	}
}

运行结果:

实例2:浮点数两种类型的声明、赋值方式

public class TestVar4{
	public static void main(String[] args){
			/*浮点数类型的变量
			注意:浮点数类型默认是double类型,要想将一个double类型的数赋给
			float类型后面必须加上F(或小写f)
			*/
			//声明并赋值一个float类型变量,后面必须加上F(或小写f)
			float f1=3.1415926784F;
			System.out.println("f1"+"="+f1);
			//声明并赋值一个double类型变量,后面的D或者d一般省略不写
			double d1=3.1415926784;
			System.out.println("d1"+"="+d1);
			
			//注意:最好不要进行不同浮点数类型的比较
			float f2=0.3F;
			double d2=0.3D;
			System.out.println(f2==d2);
	}
}

运行结果:

    字符类型变量

        字符类型变量用于存储一个单一字符,Java中用char表示,每个char类型的字符变量占用2个字节

  • char 类型用来表示在Unicode编码表中的字符。 (Unicode兼容了ASCII码,Unicode的前128位置ASCII)

  • 在给char类型的变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来。

  •  也可将char类型的变量赋值为0~65535范围内的整数(不需要加单引号),计算机会自动将这些数字转化为所对应的字符。如数值97对应的字符为'a'。
  • char类型底层在进行计算的时候,实际上是按照ASCII进行计算的

    布尔类型变量

       boolean类型有两个常量值,truefalse,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。 boolean 类型用来判断逻辑条件,一般用于程序流程控制 。


变量的类型转换

    在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据类型转换方式可分为两种:自动类型转换强制类型转换

不同变量的取值范围大小排序:double>float>long> int>short>char>byte

兼容性:char不能赋值给short和byte。

              boolean与其他数据类型没有兼容性。

    自动类型转换

       自动类型转换也叫隐式类型转换,指的是两种数据类型在转换过程中不需要显示的进行声明。

       要实现自动类型转换,必须同时满足两个条件:第一是两种数据类型彼此兼容,第二是目标类型的取值范围大于源类型的取值范围。

  • 格式: 源类型  源类型变量名=值1;

                  目标类型 目标类型变量=源类型变量名;

例如:byte b=6;

           int i=b;    //程序把byte类型的变量b转换成了int类型,无须特殊声明

    强制类型转换

    强制类型转换也叫显式类型转换,指的是两种数据类型在转换过程中需要显示的进行声明。

    需要进行强制转换的要求:两种数据类型彼此不兼容或者目标类型取值范围小于源类型。

  • 声明格式:目标类型 变量名=(目标类型)值;

例如:byte b=(byte)值;

  • 注:在进行强制类型转换时,当源类型的值大于目标类型的取值范围时会造成数据精确的丢失。

     byte的取值范围为-128~127

补充

1. 表达式类型自动提升

        所谓表达式是指由变量和运算符组成的一个算式。变量表达式在进行运算时,也有可能发生自动类型转换,这就是表达式数据类型的自动提升。

如一个byte型的变量在运算期间类型会自动提升为int型。

原因:表达式b1+b2运算期间,变量b1和b2都被自动提升为int型,表达式的结果也就成了int型,这时如果将结果赋值给byte型的变量就会报错,需要进行强制类型转换。

解决办法:将第五行代码改为byte b3=(byte)b1+b2;

2. 在同一个表达式中,有多个数据类型的时候,按照当前表达式中级别最高的类型进行计算。

猜你喜欢

转载自blog.csdn.net/wqh101121/article/details/111468659