Java 数据类型
变量
在 Java 中,申请变量的格式如下:
Java 的变量主要分为两种:
-
基本类型的变量
int id = 1;
-
引用类型的变量
String name = "JRNitre;
常见关键字
这是一种事先定义好的,有特定意义的标识符,也叫做保留字。
对于 Java 编译器有着特殊意义,用来表示一种数据类型,或者表示程序的结构等。此外,关键字不能用作变量名、方法名、类名、包名和参数名。常见的关键字可以分为如下几类,具体的关键字如下所示:
错误处理 | 程序控制 | 访问控制 | 基本类型 | 变量引用 | 类、方法及变量修饰符 | 包相关 | 保留字 |
---|---|---|---|---|---|---|---|
try | break | private | boolean | super | abstract | package | goto |
catch | continue | protected | byte | this | class | import | const |
finally | return | public | short | void | interface | ||
throw | do | int | new | ||||
throws | while | long | |||||
for | char | implements | |||||
if | float | native | |||||
else | double | final | |||||
case | true | static | |||||
switch | false | synchronized | |||||
default | null | transient | |||||
instanceof | volatile |
数据类型
Java 中,共有 8 种基本数据类型,由 Java 语言预定好的,每个数据类型都属于关键字,而且每种基本变量都有其对应的封装类,这 8 种基本数据类型分别是:
- 整型(4 种)
- 浮点型(2 种)
- 字符型(1 种)
- 布尔型(1 种)
Java 中,这 8 种类型所占用的空间和数字范围如下表所示:
数据类型 | bit | 字节 | 封装类 | 数据范围 | 默认值 |
---|---|---|---|---|---|
byte |
8 | 1 | Byte |
$ -2^7 \sim 2^7 - 1 $ | 0 |
short |
16 | 2 | Short |
$ -2^15 \sim 2^15 - 1 $ | 0 |
char |
16 | 2 | Character |
\u0000 ~ \uffff (0 ~ 65535) |
u0000 |
int |
32 | 4 | Integer |
$ -2^31 \sim 2^31 - 1 $ | 0 |
long |
64 | 8 | Long |
$ -2^63 \sim 2^63 - 1 $ | 0L |
float |
32 | 4 | Float |
$ 1.4e^-45 \sim 3.4e^38 $ | 0.0f |
double |
64 | 8 | Double |
$ 4.9e^-324 \sim 1.8e^308 $ | 0.0D |
boolean |
1 | 不确定 | Boolean |
True 或 False |
false |
[PS]
-
boolean 一般用 1 bit 来存储,但是具体大小并未规定,JVM 在编译期将 boolean 类型转换为 int,此时 1 代表 true,0 代表 false。此外,JVM 还指出boolean 数组,但底层是通过 byte 数组来实现。
-
使用 long 类型时,需要在后边加上 L/l,否则将其作为整型解析,可能会导致越界。
-
浮点数如果没有明确指定 float 还是 double,统一按 double 处理。
-
char 是用 单引号 '' 将内容括起来,只能存放一个字符,相当于一个整型值(ASCII 值),能够参加表达式运算;而 String 是用 双引号 "" 将内容括起来,代表的是一个地址值。
-
Java 在内存中是采用 Unicode 表示,所以无论是一个中文字符还是英文字符,都能用 char 来表示。
如何给一个基本类型变量赋值:
在 Java 中,基本数据类型属于 Java 的一种内置的特殊数据类型,不属于任何类,所以可以直接对其进行赋值;给基本类型的变量赋值的方式就叫做 字面值;
引用数据类型
Java 中常见的数据类型如下表
数据类型 | 默认值 |
---|---|
数组 | null |
类 | null |
接口 | null |
而对于引用数据类型,常用 new
关键字来进行赋值,但是引用类型中的接口是不能被实例化的,我们需要对其进行实现。
String
对于引用数据类型中的 String,需要特别关注。
String 不同于 char,它属于引用类型,而 char 属于基本数据类型。用双引号 "" 括起来表示字符串,一个字符串能够保存 0 个到任意个字符,它一旦创建就不能被改变。
而针对字符串,如果要打印一些特殊的字符,比如字符串本来就包含 ",这个时候就需要借助于转义字符 \,最常见的转义字符主要有:
转义字符 | 含义 |
---|---|
\" |
字符:" |
\' |
字符:' |
\\ |
字符:** |
\n |
换行符 |
\t' |
制表符:Tab |
\r' |
回车符 |
- 连接多个字符串或者其它数据类型
Java 编译器中,对于字符串和其他数据类型之间,可以使用 + 进行连接,编译器会自动将其他数据类型自动转换为字符串,然后再进行连接;
-
String 的应用
- 由于 String 的 hash 值被频繁使用,它的不可变性使得 hash 值也不可变,此时只需要进行一次计算;
-
字符串常量池(String Pool)的需要
- 如果一个 String 对象已经被创建过,那么就会优先从字符串常量池中获取其引用,其不可变性确保了不同引用指向同一 String 对象;
-
安全性
- 我们经常用 String 作为我们方法的参数,其不变性能够保证参数不可变;
-
线程安全
- String 的不可变性让它天生 具备线程安全,能够在多个线程中方便使用而不用考虑线程安全问题