Java中的数据类型和变量和C语言有相似的地方,也有不同的地方,这里只针对不同的地方进行重点介绍
目录
1.字面常量
常量即固定不变的量,不管程序如何运行,其本身并不会改变,Java中的字面常量如下:
1.由双引号括起来的字符串,比如:"12"、"call"等
2.程序中直接写的整数和小数,比如:13、15.2等
3.由单引号括起来的字符,比如:'a'、'5'等
4.布尔常量true和false
5.空常量
2.数据类型
Java的数据类型可分为两类:基本数据类型和引用数据类型
基本数据类型包括:整型、浮点型、字符型和布尔型四类
引用数据类型包括:字符串、数组、类等
本篇的重点是基本数据类型和字符串,引用数据类型后续再介绍
3.整型变量
数据类型 | 关键字 | 占用内存(字节) | 取值范围 | 包装类 |
整型 | int | 4 | -2^31~(2^31)-1 | Integer |
长整型 | long | 8 | -2^63~(2^63)-1 | Long |
短整型 | short | 2 | -32768~32767 | Short |
字节型 | byte | 1 | -128~127 | Byte |
什么是包装类这里暂时跳过,在后面的博客中会给出答案,上述数据类型需要注意的点:
1.C语言中16位的操作系统int占两个字节,但在Java中int就是4个字节,和操作系统无关,long同理
2.整型没有无符号整型一说,都是带符号的,浮点数也是
3.整型默认为int,浮点数为double
4.Java中变量一定要初始化,未初始化程序会报错
5.初始化的值不能超过其取值范围,否则会溢出
6.关于长整型需要注意的是,因为整型默认是int,所以使用和int有所不同:
long a=5L;
后面的L没有规定必须是大写,但为了防止将小写的l错认为是数字1,所以建议大写
4.浮点型变量
浮点型变量又单精度浮点型和双精度浮点型两种,浮点数的存储同C语言中浮点数的存储,这里就不再赘述
想了解的去这篇博客👉C语言内置数据在内存中的存储_星鸦wyk的博客-CSDN博客
4.1单精度浮点型
关键字:float
所占空间大小:4个字节
包装类:Float
由于浮点数默认是双精度浮点型,所以float使用如下:
float a = 1.3f;
4.2双精度浮点型
关键字:double
所占空间大小:8个字节
包装类:Double
有一点需要明确:不管是double还是float,它们的值都是近似值,不可能绝对准确,但double的精确度要高于float
5.字符型变量
关键字:char
所占空间大小:2个字节
包装类:Character
回想一下C语言的char:我们将一个整数赋值给char然后以%c的形式打印,会打印对应的ASCII码值,那么Java中的char是否也能这样使用?
答案是可以,Java中打印的是Unicode字符集中的内容
6.布尔型变量
关键字:boolean
所占空间大小:没有明确规定
包装类:Boolean
在C语言中有0表示false,非0表示true的情况,但在Java中这种情况不存在,布尔型变量只有true和false两个值
7.不同数据类型变量的转换
7.1强制类型转换
一般变量由数据范围小的转换为数据范围大的情况编译器会直接处理,而反过来则需要手动处理,即强制类型转换
依旧是使用小括号,用法和C语言类似
7.2数据类型提升
不同数据类型变量进行计算,依旧是数据类型小的会被提升到数据类型大的
需要注意的是小于4个字节的数据类型:
由于计算机的CPU通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 类似 byte 和 short 这种低于 4 个字节的类型, 会首先提升成 int, 然后再进行计算
所以类似下面的代码会报错:
要想不报错c改为int,或a+b强制转换为byte
8.字符串
包装类:String
在C语言中一般会用数组来接收字符串,在Java中有所不同
String a = "call";
两个字符串可以使用符号“+”来进行拼接,这一点是C语言不具有的,C语言中拼接两个字符串需要用到库函数strcat
8.1String和int的转换
- int转换为String
int a = 10;
//方法1
String str1 = a + "";
//方法2
String str2 = String.valueOf(a);
- String转换为int
String str = "100";
int a = Integer.parseInt(str);
数据类型和变量到此结束,完