Java中的内置数据类型
和C语言一样,Java中每申请一个变量都要指定其特定的数据类型,因为JVM要根据这个类型为变量在内存中申请一定的空间。
而Java中的内置类型分为4类8种,下面我们来一一介绍。
目录
一、整型数据
1、byte
byte类型是C语言中没有的一种类型,它的大小为一个字节表示的范围也就非常有限,仅为[ -128 , 127 ]。
下面看一个特殊的例子:
a + b 的值应该是30,并没有越界,但是为什么会报错呢?
这是因为计算机在存取数据的时候是以 int 的长度存取的,也就是说在进行向c赋值的时候,为了方便存取,取出的是一个4个字节长度的数字,也就是int类型(这里涉及整型提升),所以会报错。
2、short
short类型为短整型,占有两个字节,一般不推荐使用。
3、int
在Java语言中,int 型的大小为固定4字节,和操作系统无关,这一点和C语言不同,C语言根据不同的位数操作系统分为2字节和4字节。
4个字节表示的数据范围为[ -2^31 , 2^31-1 ],大概就是-21亿到21亿,这个范围可以用int的包装类中的 Integer.MAX_VALUE和 Integer.MIN_VALUE 来查看。
需要注意的是Java中没有无符号类型的数据,这一点也和C语言有所区别。
4、long
long是长整型变量的标志,一个long类型的变量大小为8个字节,所以他的范围很大,足够应付大多数工程场景使用。
在定义一个long类型的变量时如下:
long num1 = 10L;
long num2 = 10l;
这是代表10是一个long类型的字面常量而不是一个int类型的。
需要注意的是int类型变量可以赋值给long类型,反之不行;这是因为如果long类型赋值给int类型可能会导致数据精度损失,毕竟long类型表示数据范围更大。
二、浮点型数据
1、float
float为单精度浮点型,长度为4个字节,遵循IEEE 754标准,由于表示范围精度都比较小,所以不推荐使用。
变量在定义的时候和long类型类似:
float a = 123.3F;
float b = 123.4f;
2、double
双精度浮点型,长度为8个字节,同样遵循IEEE 754标准,表示范围和精度都比较大,工程中更推荐使用。
由于精度的问题,浮点数比较大小容易出现问题。
浮点数的具体情况和C语言类似,这里不在赘述,具体见我的另一篇博客https://blog.csdn.net/qq_49044908/article/details/109781152
三、字符型数据
1、char
Java中的char类型和C语言有很大的不同,首先是长度,Java中占2个字节,其次在C语言中,char类型和int类型可以相互转化,但是Java中只可以做到char转化为int。
可见Java是一种强类型的语言。
char类型还可以表示汉字。如下:
三、布尔型
1、boolean
C语言早期版本中没有布尔型,在后期加入了bool类型其本质上也是int类型,
但是在Java中Boolean和int没有任何关系,它是一种单独的数据类型,不可以和别的任何类型的变量相互赋值。
它只有两个取值,false和true,所占字节大小根据不同的jvm有所不同,可能是1个字节也可能是1个比特位。
讲完了基本的数据类型,现在我们来看一个常用的引用数据类型String
一个常用的引用类型:String
String类表示一个字符串。
使用方法如下:
String s1 = "abcd";
System.out.println(s1);
字符串中的+操作表示拼接
String s1 = "abcd";
String s2 = "efg";
System.out.println(s1+s2);
结果为:
字符串的+操作不仅可以拼接字符串,甚至可以拼接别的数据类型
String s1 = "abcd";
int a = 10;
int b = 20;
System.out.println(s1+a+b);
当+的左右两侧有一个是字符串的时候就进行拼接,上面的运行结果如下:
可见s1先和a进行拼接,得到一个"abcd10"的字符串,在和b拼接,得到最终的结果"abcd1020"这个字符串。
再看一段代码:
String s1 = "abcd";
int a = 10;
int b = 20;
System.out.println(a+b+s1);
这里的结果是: