Javase-数据类型

1. java两大数据类型

1.1 内置数据类型

Java共有八种基本类型。4个整数型,2个浮点类型,1个字符类型,1个布尔型。

1.1.1 八种基本数据类型

(1) byte
  • 8位,有符号,二进制补码表示的整数
  • 范围 -128(-2^7) ~ 127(2^7-1)
  • 默认值 0
  • byte a=16;
(2) short
  • 16位,有符号,二进制补码表示的整数
  • 范围 -32768(-2^15)~ 32767(2^15 - 1)
  • 默认值 0
  • short a=15;

(注:byte和short类型主要用于特定场合,如底层文件的处理或者需要控制占用存储空间量的大数组。)

(3) int
  • 32位,有符号,二进制补码表示的整数
  • 范围 -2,147,483,648(-2^31)~ 2,147,483,647(2^31 - 1)
  • 默认值 0
  • int a=14;
(4) long
  • 64位,有符号,二进制补码表示的整数
  • 范围 -9,223,372,036,854,775,808(-2^63)~ 9,223,372,036,854,775,807(2^63 -1)
  • 默认值 0L
  • long a=13L ('L’理论上不区分大小写)

(注:java没有任何无符号(unsigned)形式的int,short,long,byte类型。)

(5) float
  • 32位,单精度,符合IEEE 754标准的浮点数,
  • 符号位(S):1bit , 指数位(E):8bit , 尾数位(M):23bit
  • 范围(近似) +/-3.40282347E+38F (有效位数6~7位)
  • 默认值 0.0f
  • float a=12.3f (注:float类型的数值有一个后缀F或f,没有后缀的浮点数值(如12.3)默认为double类型,如float a=12.3,表达式错误。)
(6) double
  • 64位,双精度,符合IEEE 754标准的浮点数,三个特殊的浮点值(表示溢出:正/负无穷大,表示出错:NaN(不是一个数字,如一个正整数除以0结果位正无穷大,0/0或者负数的平方根结果为NaN)
  • 符号位(S):1bit , 指数位(E):11bit , 尾数位(M):52bit
  • 范围(近似) +/-1.79769313486231570E+308(有效位数为15位)
  • 默认值 0.0d
  • double a=11.3d
(7) boolean
  • 1位,只有两个取值 false/true
  • 默认值 false
  • boolean a=true
  • 在C++中,0等价于false,非0等价于true,而Java中则不是这样。如,if(x=0){…} ,在C++中可以正常编译运行,但在Java中将不能通过编译,因为表达式x=0不能转换为布尔值。
(8) char
  • 16位,Unicode字符
  • 范围 ‘\u0000’ ~ ‘\uffff’ (0 ~ 65535)
  • 默认值 ‘\u0000’ ,空字符
  • '\u’是转义序列,Unicode转义序列会在解析代码之前得到处理。如"\u0022+\u0022"实际上\0022在解析之前会转换成",所以会得到"“+”",也就是一个空串。
  • 注释中的\u要当心,如 // \u00A0 is a newline , 这行注释会产生一个语法错误,因为\u00A0会被替换为一个换行符。再如 //Look inside c:\users , 也会产生一个语法错误,因为\u后面没有跟着4个十六进制数。
  • 一些特殊的转义字符序列。在这里插入图片描述

在C和C++中,int和long等类型的大小与目标平台有关,这对编写跨平台程序带来了很大难度;在Java中,所有的数值类型所占字节数量与平台无关。

1.1.2 数值类型间的转换

(1) 自动类型转换

(注:6个实心箭头表示无信息丢失的转换;3个虚箭头表示可能有精度损失的转换,如 int n=123456789; float f=n; // 此时 f= 1.234567892E8,123456789是一个大整数,它所包含的位数比float类型所能表达的位数多,因此,当将这个整型数值转换为float是,会失去一定的精度。不能对boolean类型进行类型转换。)

  • 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。
  • 否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。
  • 否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。
  • 否则,两个操作数都将被转换为int类型。
(2) 强制类型转换
  • 上图中箭头的逆变换和大转小都需要强转(大转小理解为精度高的转精度低的,占bit位多的转占bit位少的)。

  • 浮点数转换到整数是直接舍弃小数部分,不是四舍五入。

  • 整数的默认类型是 int。

  • 小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。

1.2 引用数据类型

  • 引用数据类型分3种:类,接口,数组;

  • 引用类型的变量类似于C++中的指针,引用类型指向一个对象,指向对象的变量是引用变量,变量被声明后,类型就不能被改变了。

  • 所有引用类型的默认值都是null。

  • 一个引用变量可以用来引用任何与之兼容的类型。
    的变量类似于C++中的指针,引用类型指向一个对象,指向对象的变量是引用变量,变量被声明后,类型就不能被改变了。

  • 所有引用类型的默认值都是null。

  • 一个引用变量可以用来引用任何与之兼容的类型。
    ***学习菜鸟教程***

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值