大家好,我是小 Bob,一个关注软件领域而又执着于计算机底层的开发者~
前面一篇文章说了Java的变量,我们通过定义变量得到一个名字,然后将某个数据存储在这个变量中,简单来说,这也是变量所承担的任务。
那么,接下来我们来聊聊Java的数据类型。在定义变量时我们会在变量名前面说明变量的类型,比如是数字类型或者是字符类型?那么接下来我们来看看Java有哪些数据类型吧~
一.基本数据类型
在Java中,数据类型分为基本数据类型和引用数据类型两大类。
我们在定义变量时经常用到的基本数据类型包含了八种,一般的类型分别是整型、浮点型、 字符型、布尔型。
在整型中,我们会接触到byte、short、int、long这四种类型,其中byte所占比特位最小,仅占一个字节,其次是short,占两个字节;int类型占四个字节;long类型最大,占了8个字节。
下面将以表格的形式展示:
数据类型 | 所占位数 | 比特位 | 取值范围 |
---|---|---|---|
byte | 8位 | 1bit | -128-127 |
short | 16位 | 2bit | -32768- -32767 |
int | 32位 | 4bit | ... |
long | 64位 | 8bit | ... |
整形之间的差别便是位数的多少,即所占位数的大小决定你存储数字的大小。
在浮点类型中,我们用的比较多的是float和double,前一个是单精度,后一个是多精度。单精度可以简单理解为精确到小数点后面的几位,而多精度可以精确到小数点后面更多的位数。
浮点类型中float占四个字节,为32位;double占八个字节,64位。在Java类型中,定义浮点数默认为double类型,如果要定义成float类型,在定义时需要在数字后面加上后缀f,比如:
float a=123.34f;
float a=123.34;
字符型则最简单,只有一个char,定义字符比如英文字母,常用单引号括起来。其中字符存放在单引号括起的单个字符,占两个字节,取值范围为[0,65535]。
谈到字符类型,则不可避免的要编码的概念:计算机内部使用二进制数,一个字符在计算机中是以0和1构成的序列形式来存储的。将字符映射到它的二进制形式的过程称为编码。
字符有多种编码方式,如常用的utf-8、GBK等,编码表定义了如何编码每个字符。
在Java还有布尔类型:Boolean,当然在别的语言中也有。boolean类型只有两个值:false和true,常用于判定逻辑是否正确。如下:
boolean a=false;
boolean b=true;
我们在敲代码的时候,可能会遇到将整数类型转换成字符类型,或者字符型转换成整数类型,这时候我们的解决方案绝不是删掉重来,而是转换,在Java中,我们将转换分成自动转换类型和强制转换类型。
在自动转换类型中,我们经常把一个表示数据范围小的数值赋值给另一个表示数据范围大的变量,该转换方式是自动的,直接书写即可。
另一种强制转换类型,则是把一个表示数据范围大的数值或者变量赋值给数值范围小的变量。
语法格式:目标数据类型 变量名=(目标数据类型)值或者变量。
二.引用类型
Java中的引用类型,在C和C++里通过指针操作内存中的元素,在Java中是通过引用。在Java中一切被视为对象,但我们操作的标识符实际上是对象的一个引用。
引用数据类型包括数组、接口、类,这些引用数据类型的初始值为null。
那么何为String字符串呢?Java将由多个字符组成的字符序列称为字符串。
字符串类型由String关键字表示,其所表示的若干个字符序列必须包含于
英文双引号内。如:"阴天快乐"等。
比如我们用字符串定义一个s变量,那么s中存放的并不是字符串,而是内存地址,栈内存中存放变量的地址,堆内存中存放字符串。
继续干Java~