菜比之路

走菜比的路,让大牛说去吧
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

【JAVA基础】数据类型

Posted on 2020-04-16 07:20  毕加索的ma  阅读(161)  评论(0编辑  收藏  举报

基本数据类型:

  整数型:byte(-128-127)、  short 、int(-21亿-21亿)、 long(19位数字)

  浮点型   float double

  字符型   char 

  布尔型   boolean

 

引用数据类型:

  类、数组、接口、字符串、Lambda

 

注意事项:

1、字符串不是基本数据类型

2、浮点数默认类型是double,如果一定使用float类型,需要加一个后缀F

3. 整数型默认类型为int,如果一定使用long类型,需要加一个后缀L

4.float 类型取值范围比long类型还大

 

数据类型转换:当数据类型不一样时,会发生数据类型转换

1) 自动类型转换(隐式)

特点:代码不需要做特殊处理,自动完成

规则:数据范围从小到大

public class Demo01Datatype{
	public static void main(String[] args)
	{
		/*左边是long类型,右边默认是int类型,左右不一样
		   一个等号代表赋值,将右边的int常量赋值给左边的long类型变量存储
		   int-->long ,符合了数据范围从小变化
		   这行代码发生了数据类型自动转换
		*/
		long num1=100;
		System.out.println(num1);//100
		
		/*左边是double类型,右边是float类型,左右不一致*
		 float-->double,符合从小到大的规则
		 自动类型转换
		*/
		double num2= 3.5F;
		System.out.println(num2);//3.5
		
		/*左边是float类型,右边是int类型,左右不一致*
		 int-->float,符合从小到大的规则
		 自动类型转换
		*/
		float num3= 100L;
		System.out.println(num3);//100.0
		
	}
	
}

 2)强制类型转换

   特点:代码需要特殊的格式处理,不能自动完成。从大到小

 格式: 范围小的类型  范围小的变量名= (范围小的类型) 原本范围大的数据;  比如 int num=(int) 200L;

/*
左边是int类型,右边是long类型,不一样,
long--->int, 大到小,不会发生自动类型转换
格式: 范围小的数据类型 范围小的变量名=(范围小的数据类型)  范围大的数据
*/

public class Demo02Datatype{
	public static void main(String[] args){
		int num= (int)100L;
		System.out.println(num);
	}
}

 类型转换的注意事项:

1。强制类型转换一般不推荐使用户,因为可能发生精度损失、数据溢出

2.byte/char/short 这三种类型的数据都可以发生数学运算,例如‘+’

3.byte/short/char 这三种数据类型在运算时,都会被首先提升为int类型,然后在计算

4. boolean 类型不能发生数据类型转换

 

public class Demo02Datatype{
	public static void main(String[] args){
		int num1= (int)6000000000L;
		System.out.println(num1); //1705032704 发生数据溢出,因为60亿大于int类型最大范围
		
		
		int num2= (int)3.14F;
		System.out.println(num2); //3,发生了精度损失
		
		char num3='A';
		short num4= 34;
		int num5= num3+num4;
		System.out.println(num5); //99 , char和short 类型在运算时默认会提升为int类型
	}
}

  

在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,
那么编译器javac将会直接将若干个常量表达式计算得到结果。
short result = 5 + 8; // 等号右边全都是常量,没有任何变量参与运算
编译之后,得到的.class字节码文件当中相当于【直接就是】:
short result = 13;