全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

java数据类型有哪些?

发布时间:2023-03-21 14:28:00
发布人:wjy

  1. 简介

  所谓的基本数据类型,是指CPU可以直接进行运算的类型,包括以下几种:

  ● 整数型:byte、short、int、long;

  ● 浮点型:float、double;

  ● 字符型:char;

  ● 布尔型:boolean

  2. 整数型

  2.1 byte

  byte是字节类型,1个byte占8位,代表有符号的、以二进制补码表示的整数,具有如下特点:

  ● 最小值是 -128(-2^7);

  ● 最大值是 127(2^7-1);

  ● 默认值是 0;

  ● byte 类型比较节约空间,因为 byte 变量占用的空间只有 int 类型的四分之一。

  public class TypeDemo01 { public static void main(String[] args) { // 定义byte类型的变量 // byte b = 10; // byte b = 127; byte b = -128; System.out.println(b); //注意:如下定义,在编译阶段就会出错 //byte b = 128; //System.out.println(b); }}

  注意:

  因为byte的取值范围在-128~127之间,如果我们定义byte变量的值=128,就超过了byte的范围,所以在编译阶段就会出错,“Type mismatch: cannot convert from int to byte”,意思是“类型不匹配:无法从byte转为int”,如下图所示:

java数据类型有哪些1

  2.2 short

  short 是短整型,占16 位,代表有符号的、以二进制补码表示的整数,具有如下特点:

  ● 最小值是 -32768(-2^15);

  ● 最大值是 32767(2^15 - 1);

  ● 默认值是 0;

  ● short 数据类型也可以像 byte 那样节省空间,一个short变量是int型变量所占空间的二分之一。

  public class TypeDemo01 { public static void main(String[] args) { //定义short类型的变量 //short s = 128; short s = 12800; System.out.println(s); }}

  2.3 int

  int 是整型,占32位,代表有符号的、以二进制补码表示的整数,如有如下特点:

  ● 最小值是 -2,147,483,648(-2^31);

  ● 最大值是 2,147,483,647(2^31 - 1);

  ● 默认值是 0 ;

  ● 我们在开发时,一般都是用int表示整型变量。

  public class TypeDemo01 { public static void main(String[] args) { //定义int类型的变量 int i = 100000; System.out.println(i); }}

  2.4 long

  long 是长整型,占64 位,代表有符号的、以二进制补码表示的整数,如有如下特点:

  ● 最小值是 -9,223,372,036,854,775,808(-2^63);

  ● 最大值是 9,223,372,036,854,775,807(2^63 -1);

  ● 默认值是 0L,"L"理论上不区分大小写,但若写成小写的"l",容易与数字"1"混淆,不容易分辩,所以最好写成大写的“L”;

  ● 该类型主要用在需要较大数值的场景中。

  public class TypeDemo01 { public static void main(String[] args) { //定义long类型的变量,后面要带L或l(不是1,也不是i) long l = 364748123123L; System.out.println(l); }}

  2.5 补充说明

  Java中只定义了带符号的整型,因此最高位的bit表示正负符号,0表示正数,1表示负数,如:

  ● 1(十进制) = 0000 0001(二进制);

  ● 127(十进制) = 0111 1111(二进制);

  ● -128(十进制) = 1000 0000(二进制)

  关于二进制及进制间的转换、原码、反码、补码等内容,壹哥会在后面再单独讲解!

  3. 浮点型

  浮点数可表示的范围非常大,float类型可最大表示3.4x1038,而double类型可最大表示1.79x10308。

  3.1 float

  float 是单精度的浮点类型,占32位,是符合IEEE 754标准的浮点数,具有如下特点:

  ● float 在储存大型浮点数组时,可以节省内存空间;

  ● 默认值是 0.0f,"f"理论上不区分大小写;

  ● float浮点数不能用来表示精确的值,如不能用float来表示货币等。

  public class TypeDemo01 { public static void main(String[] args) { //定义float类型的变量,后面带F或f float f = 10.2F; //float f = 3.14e38f; // 科学计数法表示的3.14x10^38 System.out.println(f); float f1 = 9999.9994f; System.out.println(f1); } }

  3.2 double

  double 是双精度的浮点类型,占64 位,是符合 IEEE 754 标准的浮点数,具有如下特点:

  ● 浮点数的默认类型为 double 类型;

  ● 默认值是 0.0d,"d"理论上不区分大小写;

  ● double类型同样不能表示精确的值,如货币。

  public class TypeDemo01 { public static void main(String[] args) { //定义double类型的变量,后面可以带D或d,也可以不带 double d = 10d; //double d = 4.9e-324; // 科学计数法表示的4.9x10^-324 System.out.println(d); double d1 = 12345678910111213.0; System.out.println(d1); } }

  3.3 补充说明

  float和double的最小值和最大值都是以科学记数法的形式输出的。结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103=3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

  4. 字符型

  4.1 字符的特点

  char是一种表示字符的类型。Java的char类型除了可以表示标准的ASCII,还可以表示一个Unicode字符,代表一个单一的16位 Unicode 字符,具有如下特点:

  ● 最小值是 \u0000(十进制等效值为 0);

  ● 最大值是 \uffff(即为 65535);

  ● char 数据类型可以储存任何字符。

  4.2 字符的三种表现形式

  在java中,字符和字符串是两种不同的数据类型。char类型使用单引号''表示,单引号里面只能有一个字符。字符串用双引号""表示,双引号中可以有很多字符。字符有三种表现形式:

  1. 字符 'a' 、'中';

  2. 数字 97、20;

  3. 十六进制 '\u0041'。

  4.3 代码案例

  public class TypeDemo01 { public static void main(String[] args) { //定义字符型,字符带有英文的'' char c1 = '中'; char c2 = 20013; char c3 = '\u0041'; //单引号中只能有一个字符! //char c4 = '中国'; System.out.println(c1);//中 System.out.println(c2);//中 System.out.println(c3);//A }}

  大家要注意,单引号''中只能有一个字符,否则会出现如下错误:”Invalid character constant“,无效的字符常量!

java数据类型有哪些2

  4.4 转义字符

  在上面的代码案例中,我们可以看到有些字符的前面带有反斜杠(\),这个反斜杠其实也是一个字符,它是一种转义字符,对编译器来说有着特殊的含义。下表展示了Java中常用的几个转义字符含义:

java数据类型有哪些3

  5. 布尔型

  boolean是布尔类型,该类型只表示一位信息,布尔类型是关系运算的计算结果,具有如下特点:

  ● 布尔类型只有两个值:true 和 false;

  ● 默认值是 false;

  ● 该类型一般是作为一种标志,来记录 true/false 的情况。

  public class TypeDemo01 { public static void main(String[] args) { //boolean类型,真假(一般用条件判断),true false //boolean flag = true; boolean flag = false; System.out.println(flag); int age = 12; boolean isAdult = age >= 18; // 计算结果为false System.out.println(isAdult); }}

  6. 取值范围

  6.1 范围对比

  我们在讲解8种基本类型时,大家会发现,不同的类型大小不同,也就是它们有不同的取值范围。接下来壹哥给大家总结一下这几种不同类型的取值范围。

java数据类型有哪些4

  6.2 原理剖析

  有的初学者可能不理解,为什么不同数据类型的取值范围大小不一样?比如同样都是整数,为什么有的范围大有的范围小?壹哥简单给大家举个例子。计算机的每个内存单元,都有自己的内存地址,一般都是从0开始编号。而每个内存单元都可以看作是一个房间,房间有大有小,并且房间的类型不同,有的是大床房,有的是标间,有的是总统套房。另外内存地址就是房间的门牌号,方便我们找到对应的房间。

java数据类型有哪些5

  不同的数据类型之所以取值范围不同,就好比每种类型都是不同的房型,有大有小,如下图所示:

java数据类型有哪些6

  这些不同的类型,占用的字节大小不同,所以取值范围自然也不一样。

  6.3 boolean类型补充说明

  在上面6.1小节中,关于boolean类型所占的字节大小,壹哥在表格中并没有说明。这是因为根据官方文档描述,boolean类型经过编译之后采用int来定义(所以此时boolean占4字节,32bits),但如果是boolean数组则占1字节(8 bits)。详见下图红色标注:

java数据类型有哪些7

  7. 关于void

  实际上,java中还有另外一种基本类型 void,它也有对应的包装类 java.lang.Void。但我们无法对它们直接进行操作,所以一般不把它们当做基本类型对待。

  8. 包装类型

  虽然Java是面向对象的语言,但为了方便我们开发,在Java中继续沿用了C语言的基本数据类型。我们在进行常规的数据计算时,可以直接使用基本类型。但因为基本数据类型不具备面向对象的行为特征,不能通过方法的形式进行调用,且基本类型也不能存入到Java的集合中。所以后来Java提供了与基本类型对应的8个包装类,使其具有了对象的属性和方法。基本类型与其对应的包装类如下表所示:

java数据类型有哪些8

  9.1 概念

  所有的ASCII码都可以用"\"加数字(一般是8进制数字)来表示。Java中定义了一些字母前加"\"来表示特殊含义的字符,如\0、\t、\n等,这些都被称为转义字符(Escape Character),它们可以用来转变某个字符原有的含义。

  9.2 案例

  大家要注意,我们在开发时会用到两种斜线,包括“/”和“\”。其中 “/” 斜线(slash)又称为forward slash (前斜线),原本是一种标点符号。“\”则是后斜线,在Java中作为转义字符,常见的组合如下:

  ● \n:表示换行;

  ● \b:表示退格;

  ● \r:表示回车;

  ● \":表示双引号;

  ● \':表示单引号;

  ● \\:表示反斜线;

  ● \':表示单引号;

  ● \t:表示tab制表;

  ● \f:表示走纸换页;

  public class TypeDemo01 { public static void main(String[] args) { //常见转义字符:\n 表示换行;\t表示制表位 //转义字符:\t,可以空4格;\n,可以换下一行; System.out.println("hello\tworld"); System.out.println("hello\nworld"); //转义字符,\"",输出中文的“” System.out.println("你\"真棒\""); //转义字符:默认情况下,斜杠是不能单独输出使用的,需要加一个转义字符才能输出。 System.out.println("D:\\a\\b"); }}

  效果如下图所示:

java数据类型有哪些9

  9.3 常用转义字符

  以下是一些常用的转义字符供大家参考使用。

java数据类型有哪些10

  以上就是关于java数据类型的介绍,刚入门的朋友一定要认真学习哦!!!

相关文章

python写入json文件?

python写入json文件?

2023-11-02
vscode设置tab为4个空格?

vscode设置tab为4个空格?

2023-11-02
更新pycharm?

更新pycharm?

2023-11-02
anaconda每次打开都要安装?

anaconda每次打开都要安装?

2023-11-02

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取