Java基本数据类型

一.数据类型,顾名思义,就是数据的类型,java为什么要区分数据类型呢?其实定义数据类型的过程便是在内存条上开辟内存的过程,而它的类型便是决定了这个空间里存什么数据。

数据类型的分类有以下种类:

接下来一一介绍以下几大类

1.整型

byte,short,int,long这四个都是整型的数据类型,同为整型,为什么要将其分为这么多类别呢?这个其实很好理解,计算机的内存都是有限的,如果存储一个很小的数据却用一个很大的空间的类型,岂不是太奢侈了?

我们从表中可以看到int和float的空间大小其实是一样的,那是否意味着int和float就是同样的数据类型呢?其实不然,在内存条上开辟内存的时候,不同的数据类型除了开辟的存储空间不同以外,将数据存入内存的存储方式也不同。

整型的赋值方式有以下几种类别,我们用一小段程序来演示:

/**
 *整型赋值方式
 *十进制
 *二进制:0b+
 *八进制:0+
 *十六进制:0x+或0X+
 */
public class HelloWorld{
	
	public static void main(String [] args){
		int money=88;//十进制
		System.out.println(money);
		System.out.println("#######");
		money=0b100100101;//二进制
		System.out.println(money);
		System.out.println("#######");
		money=0237;//八进制
		System.out.println(money);
		System.out.println("#######");
		money=0x12e;//十六进制	
		System.out.println(money);
		System.out.println("#######");
	}
}

 

2.小数

可以表示小数的类型有float和double两种,两者的差别也是存储空间大小不同。

小数有两种形式,一种是十进制表示法,一种是科学计数法

还有一点需要注意的就是给float和double类型的变量赋值是不一样的,我们看一下下面的程序:

public class Float_Double{

	public static void main(String [] args){
		float cost;
		cost=3.5;
		System.out.println(cost);
	}
}

编译运行后会发现程序有问题,问题就出在给float类型变量赋值时,3.5是默认的double类型的值,而想要给float类型变量赋值,需要在3.5后面加上f,因为double的精度是高于float的,所以给float赋double类型的值可能会导致精度缺失。

3.字符型

字符型只有char这一种数据类型,它有三种赋值方式,我们来看以下程序:

public class Char{

	public static void main(String [] args){
		char a,b,c;
		a='A';
		b=65;
		c='\u0041';
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}

4.布尔型

即boolean类型,它的特点是只有true和false两个值,以下程序演示了boolean类型:

public class Boolean{

	public static void main(String [] args){
		boolean a=true;
		boolean b=false;
		System.out.println(a);
		System.out.println(b);
	}
}

二,数据类型的转换

  1. 自动类型转换:用于小范围的类型赋值给大范围的类型,且反之不可
  2. 强制类型转换:在转换的数据前加(强制转换成的类型)。强制转换虽然好用,但同时它存在着两个问题,一是精度溢出,二是精度缺失。以下程序包含了这两个问题:
    public class Transform{
    
    	public static void main(String [] args){
    		float a;
    		int b;
    		a=(int)88.8;
    		b=(byte)256;
    		System.out.println(a);
    		System.out.println("######");
    		System.out.println(b);
    	}
    }

    第一个问题,精度缺失:a的值在强制类型转换后将88.8的小数位舍弃导致了精度缺失;

    第二个问题,精度溢出:b的值256的二进制为100000000,而将其转换为byte类型后,只保留了后8位,导致精度溢出,b值为0;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值