【JavaSE】数据类型

对于一些基本的概念不做赘述

数据类型

基本数据类型

四类八种

整型

关键字书籍类型内存占用取值范围
byte字节型1-128 ~ 127
short短整型2-32768 ~ 32767
int整型4-2 ^ 31 ~ 2 ^ 31 -1
long长整型8-2 ^ 63 ~ 2 ^ 63 -1

浮点型

类型名字所占字节
float单精度浮点型4
double双精度浮点型8

字符型

类型名字所占字节
char字符型2

布尔型

类型名字所占字节
boolean布尔型java 虚拟机未明确规定其大小

和c语言的一些区别

  1. c 中 char占 1 byte
  2. java 中没有 long long 类型
  3. java 比 c 多了 byte 类型 , boolean 类型
  4. 在c中,不同位操作系统下一些基本数据类型所占内存会改变。但在Java中无论什么环境下所占内存都不会改变。因为Java是在虚拟机环境下运行的。
  5. java中是没有无符号数这个概念的。都是有符号数。
byte

在这里插入图片描述
在这里插入图片描述

byte可以存放一定范围的数字,以及一些字符。字符在输出台打印的结果是数字(ASCII表,每个字符对应了一个数字)。所以本质上,byte只能存放-128到127范围的数字。
超过byte的存放范围。编译器便会自动报错。
由此想到,c语言中超过范围,只会报警告。由此可以体现java的安全性。

int

在这里插入图片描述
在这里插入图片描述
类似byte,存放的数据范围比byte大,存放字符时,存的是字符的ASCII值。输出也是字符的ASCII值。

short

类似byte,不做赘述。

long

用法和上面类似。为了区别int和long类型,long类型的变量初始化的时候建议加上L或者L的小写

为什么byte,short不要加什么B或者S来区分呢。
首先我们要明白一件事儿,在java中整数字面常量是默认是int型,浮点数默认是double型。
byte,short存放数据的范围都比int小。那么定义byte,short变量的时候,java会先判断是否在其存储范围里面,在的话就会自动进行转型。
但是long的类型存储数据范围比int大,当定义long变量的时,数据在int范围里面的时候是可以不加L区分的,但是当数据超过int范围的时候,这个时候不加L告诉编译器这个数据是long类型的话,编译器就会报错。

double

在这里插入图片描述
在这里插入图片描述

浮点数的字面常量默认是double类型。表示的数据精确度范围较大,一般在工程上用到浮点数优先考虑用double类型
浮点数与整数在内存中存储的方式都不同,不能单纯的按照2^n的形式来计算
浮点数是个近似值,并不是精确值。

float

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为了区分float喝double类型,float类型的变量初始化的时候必须加上** f或F **。否则会报错。
float的精度较小。

char

在这里插入图片描述
在这里插入图片描述
1.char可以存放字符,可以存放整形(但输出时是这个数字对应的字符),可以存放汉字。
2.java中使用单引号 + 单个字母的形式来表示字符字面值。
3.计算机中的字符本质上是一个整数。在编码规则下,每一个字符都对应了一个整数。在c语言中使用的是ASCII编码规则,只能表示255个字符,而在java中使用的是Unicode编码规则来表示字符。ASCII码包含于Unicode。Unicode表示的字符更多。所以一个字符占用两个字节。

输出汉字字符的时候,有可能会出现乱码。
如果是用命令行来运行java,就在执行javac的时候加上-encoding UTF-8就可以了

javac -encoding UTF-8 Test.java

如果是用IDEA软件就把编码规则改成UTF-8就可以了
在这里插入图片描述

boolean

1.boolean只有两个取值true或者false
2.在c中,非0为真,0为假,但在java中,真就是true,假就是false,不存在什么非0表示true,0表示false。
3.java虚拟机规范中没有明确规定boolean占多少字节,也没有专门来处理boolean的字节码指令,不同公司虚拟机实现中,boolean占的内存大小可能不一样。

类型转换

java是一个强类型编程语言,当不同类型的变量相互赋值的时候会有较为严格的检验。

自动类型转换(隐式)

代码不需要进行任何处理,在代码编译的时候,编译器会自动进行类型转换。
一般来说,数据范围小的转化为数据范围大的时会自动进行。

强制类型转换 (显式)

代码需要手动进行一定得处理
一般来说,数据范围大的到数据范围小的要进行强制类型转换

float a = 11.1;
int b = (int)a;

特别的:
boolean和任何类型都不能进行类型转换。

类型提升

1.不同类型的数据之间进行运算的时候,范围小的会被提升到范围大的。
2.比4字节小的类型进行运算,无论是不是混合运算都会先提升到4个字节再进行运算。

引用数据类型

除开基本数据类型,就是引用数据类型。

每个基本数据类型都对应着一个大类,叫包装类。包装类属于引用数据类型。

基本数据类型包装类
byteByte
charCharacter
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean

在这里插入图片描述
在这里插入图片描述

包装类里面有很多的功能可以使用。

字符串类型

字符串类型也属于引用类型
和c语言不同,创建字符串不需要使用数组。可以直接创建。

String s1 = "hello";
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值