Java基本知识之基本数据类型的使用

Java的基本数据类型定义

public class DataTpye{
	public static void main(String[] args){
		
		byte bye = 5;
		short sh = 9;
		int x = 5;
		//定义long型数据时,要带上标志L或l,不然32568数据默认是int型
		long L = 32568L;
		long l = 124487l;
		//定义float型数据时,要带上标志f或F,不然数据类型默认为double型
		float F = 3.15F;
		float f = 2.1415f;
		double d = 5.12;
		//浮点型的科学计数法表现形式
		double dou = 5.12E2;
		//单引号括起来的任意一个字符
		char A = 'A';
		char a = 'a';
		char ch = '1';
		char ch1 = '#';
		//字符和ASCII码相对应,是A
		char ch2 = 65;
		//Unicode编码表示形式
		char ch3 = '\u0000';
		char cha = '\n';
		
	}
}

Java的基本数据类型之间的类型转换


自动类型提升:

自动类型提升的转换示意图


		//这里可能就有点疑问了,1是整形数据,放入byte类型中会报错的吧
		//解惑:因为1的取值范围在byte在取值范围之内,所以也是可以认为是byte类型的1赋值给byte类型变量
		//byte bb = 129;//编译报错:129超出了byte取值范围
		byte b = 1;
		//与上同理:
		short sh = 11;
		//将整形数据352赋值给int型变量i
		int i = 352;
		//将整形数据1452赋值给long型变量ll
		long ll = 1452;
		//将整形数据3赋值给float型变量ff
		float ff= 3;
		//将整形数据9赋值给double型变量dd
		double dd = 9;
		
		byte bye = 126;
		//将byte类型的数据放入short类型中,
		//将精度小的类型放入精度大的类型中,这就是类型自动提升
		short s = bye;
		//将short类型的数据放入int类型中,
		int in = s;
		//将int类型的数据放入long类型中,
		long l = in;
		//将long类型的数据放入float类型中,
		float f = l;
		//将float类型的数据放入double类型中,
		double d = f;
		char chh = 'a';
		int CHH = chh;
		
		//数据在运算时也有类型自动提升的操作
		byte y = 3;
		//byte 类型的y在与整形数据运算时,
		//类型会自动提升为整形(与什么类型的数据运算提升成什么类型的数据),
		//运算结果也是整形数据,然后将整形的结果赋值给int型的x变量
		int x = y + 4;
		
		//面试题
		short s1 = 2;
		//s1 = s1 +1;	//报错
		//解答:在short s1 = 2;没有问题,简单的赋值语句,
		//当运算s1 = s1 +1;时,s1会自动类型提升为整形,与整形数据1运算
		//运算之后的结果为整形,赋值给short型数据。会造成精度确实而报错!
		//所以不能将精度达的数据放入精度小的类型变量中,否则编译报错!
		
 
  

总结:类型示意图从左往右是精度低的到精度高的,那么將精度低的数据放入精度高的类型中,这个叫类型自动提升,这个类型自动提升是系统底层实现的。程序员可以不做任何操作。那么讲精度高的数据放入精度低的类型变量中会编译报错!

以上面的面试题为例子,画个示意图:计算机中的运算都是以二进制的形式表现的

强制类型转换:

如果我必须要将一个精度大的数据放入精度小类型的变量中的话,那么我们就要做强制类型转换.

根据上面面试题的例子,会报错,那么需要怎么修改呢?

//面试题
short s1 = 2;
s1 = (short)(s1 +1);

在赋值前面做强制类型转换,强制类型转换的格式:(type),type是我们要强制转换成的类型。更多例子:

float floa= 5f;
float sunf= (float)(floa * 3.14152);
long longe = (long)3.15142;
int inte = 12;
byte bbb = (byte)inte;
//char和int型之间的转换是参照ASCII码表对应的
int ch = 97;
char CH = (char)ch;





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值