栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 八大基本数据类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 八大基本数据类型

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

java中定义了3类8中基本数据类型

  1. 数值型 - byte short int long float double
  2. 字符型 - char
  3. 布尔型 - boolean

一 .整数数据类型
整型用于表示没有小数部分的数值,它允许是负数。整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。与此相反,C和C++程序需要针对不同的处理器选择最有效的整型。

类型占用存储空间表数范围
byte字节型1字节-2^7 ~ 2^7-1(-128~127)
short短整数2字节-2^15 ~ 2^15-1(-32768~32767)
int 整数型4字节-2^31 ~ 2^31-1(-2147483648~2147483647)约21亿
long 长整形8字节-2^63 ~ 2^63-1

Java 语言整型常量的四种表示形式
 十进制整数,如:99, -500, 0
 八进制整数,要求以 0 开头,如:015
 十六进制数,要求 0x 或 0X 开头,如:0x15
 二进制数,要求0b或0B开头,如:0b01110011
Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ 。
long类型常数的写法及变量的声明
long a = 55555555; //编译成功,在int表示的范围内(21亿内)。
long b = 55555555555;//不加L编译错误,已经超过int表示的范围。
报错:The literal 55555555555 of type int is out of range,所以我们需要修改代码为:
long b = 55555555555L;

二、浮点数据类型

带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。

类型占用存储空间表数范围
float 单精度4字节-3.403E38~3.403E38
double 双精度8字节-1.798E308~1.798E308

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。

Java浮点类型常量有两种表示形式
 十进制数形式,例如:3.14 314.0 0.314
 科学记数法形式,如3.14e0 3.14E2 3.14E-1

使用科学记数法给浮点型变量赋值

double f = 314e2; //31410^2–>31400.0
double f2 = 314e-2;
//31410^(-2)–>3.14

float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
float类型常量的写法及变量的声明

float f = 3.14F;//float类型赋值时需要添加后缀 F/f
double d1= 3.14;
double d2 =3.14D;

问题:float和int在内存中均占据4个字节,为什么数据范围不同
 因为存储数据的方式不同
 int:只存储数据
 float:分为三部分,分别存储尾数和指数

建议
 浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

浮点型数据的比较一

float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d);//结果为false

运行以上两个示例,发现示例2-13的结果是“false”,而示例2-14的输出结果是“d1==d2”。这是因为由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。 浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。

菜鸟雷区
不要使用浮点数进行比较!很多新人甚至很多理论不扎实的有工作经验的程序员也会犯这个错误!需要比较请使用BigDecimal类

三、字符数据类型

字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如’A’是一个字符,它与”A”是不同的,”A”表示含有一个字符的字符串。 char 类型用来表示在Unicode编码表中的字符

字符型演示

char eChar = 'a'; 
char cChar ='中';
char cChar ='β';

Java 语言中还允许使用转义字符 ‘’ 来将其后的字符转变为其它的含义。常用的转义字符及其含义和Unicode值如表2-6所示。
转义字符

char c1 = 'n';  //代表换行符
转义符含义Unicode值
b退格(backspace)u0008
n换行u000a
r回车u000d
t制表符(tab)u0009
"双引号u0022
‘单引号u0027
反斜杠u005c

Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)
字符型的十六进制值表示方法

char c = 'u0061';

Char类型在内存中存储的其实就是该字符的Unicode编码,这是一个数字。其实是也可以这么赋值的。

char c2 = 'a'; 
char c2 = 97; 

注意事项 “a”是字符串String,不是字符char。String可以是0到多个字符组成的字符串。 String
s=”asdfdasdfdasdfasdf”;

public class Test6{
	public static void main(String[] args){
		char c ='9';
		System.out.println(c);
		
		
		
		System.out.print('a');
        System.out.print('n');
		System.out.print('b');
		System.out.print('b');
		System.out.print('c');
		System.out.println('d');
		System.out.print('t');
		System.out.print('e');
		System.out.print('f');
		System.out.print('\');
		System.out.print(''');
		System.out.println("asdf"asdf");
		
	}
}

四、布尔数据类型
boolean类型有两个常量值,true和false,不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。boolean 类型用来判断逻辑条件,一般用于程序流程控制。
【示例2-19】boolean类型演示

boolean flag = true;   //或者flag=false;

关于boolean类型几个字节的说明:
在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8bit”。也就是说JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号