原文链接
https://www.g2022cyk.top/archives/java中的变量常量与数据类型
一、变量
Java 中的变量指的是程序运行过程中其值可以改变的量。常常用来保存用户输入信息、程序运行的中间结果等。其本质是内存中的一段存储区域。用来在内存中保存数据。
- 内存中的一段存储区域
- 该区域的数据可以在同一类型范围内不断变化
- 变量是程序中最基本的存储单元
变量的三要素
- 变量类型
变量中所存储的值的取值范围 - 变量名
变量的访问方式 - 存储的值
变量中的内容
1.1 定义变量
Java 中以如下的格式声明变量:
- 定义一个变量
变量类型 变量名;
- 定义多个变量
变量类型 变量名1,变量名2,变量名3,...;
int a;
int b, c, d;
Java 不允许使用未经声明或者已声明但未初始化的变量,所以当一个变量没有赋初值或需要重新改变其值的时候,就需要使用赋值语句。
变量名 = 变量值;
int k;
k = 10;
Java 可以在声明变量的同时赋给该变量一个初始值
- 定义变量的同时初始化该变量的值
变量类型 变量名 = 初始值;
- 定义多个变量的同时初始化这些变量的值
变量类型 变量名1 = 初始值1,变量名2 = 初始值2,变量名3 = 初始值3,...;
int i = 10;
int a = 1, b = 2, c = 3;
对于已声明且赋值过的变量,可以直接通过变量名访问该变量的值。
1.2 使用原则
- 先声明、后使用
- 通过变量名来访问变量中存储的内容
- 变量的有效范围(作用域):其定义所在的一对{}内
- 变量只在其作用域内有效
- 同一个作用域内,不能定义重名的变量
1.3 变量类型
Java 要求在声明变量的同时明确其具体的数据类型(强类型语言)。不同的数据类型决定了其在内存中分配多少存储空间。
Java 中的数据类型
-
基本数据类型
-
数值型
-
整数类型
-
byte 用一个字节表示整数。范围(-128 ~ 127)
-
short 用两个字节表示一个整数。范围(-32,768 ~ 32,767)
-
int 用四个字节表示一个整数。范围(-2,147,483,648 ~ 2,147,483,647)
-
long 用八个字节表示一个整数。范围(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)
long 型的字面量必须以 L 或 l 结尾
实际开发中,通常使用 int 来定义一个整型变量。
-
-
浮点类型
-
float 单精度,用四个字节表示一个浮点数
-
double 双精度,用八个字节表示一个浮点数
float 类型的字面量必须以 F 或 f 结尾
实际开发中,通常使用 double 来定义浮点型变量
-
-
-
字符型 用两个字节来表示一个字符
-
char
char 类型的字面量必须使用一对单引号作为定界符,内部有且只有一个字符
char 类型中还包括转义字符(有特殊含义但难以用普通方式表达,如回车、换行等,以\开头,后面跟这一个字符来表示某个特定的转义字符。如’\r’,‘\n’,‘\t’,‘’‘,’"’
char 的表示范围’\u0000’~‘\uffff’
-
-
布尔型
-
boolean
其值只能为 true、false 之一
常常作为逻辑表达式的结果用在条件判断、循环结构中
-
-
-
引用数据类型
-
类 (class)
字符串并不是一种基本类型,而是用 String 类来声明字符串
-
字符串 用一对
""
括起来的字符序列。-
String
无论是字符串常量还是字符串变量,都是用类来实现的。Java 中用来表示字符串的类有三个:
- 不可变字符序列
- String([详细请见](#四、字符串类型 String))
- 可变字符序列
- StringBuilder
- StringBuffer
- 不可变字符序列
-
-
-
接口 (interface)
-
数组 ([])
若干个相同数据类型的元素按一定的顺序排列的集合就叫做数组。这些元素共用一个统一的数组名。通过不同的下标来区分和管理。
-
二、常量
在程序运行的过程中,其值不会改变的量就叫做常量。
其声明方式和变量类似。只需要在最前面加上关键字 final 就可以了。
final double PI = 3.1415926
建议在声明常量的同时给出它的值。
三、数据类型转换
基本数据类型之间的运算规则。
前提:这里讨论的只是除 boolean 类型以外的其他七种基本数据类型之间的运算。
3.1 自动类型提升
当表示数的范围小的类型与表示数的范围大的类型做运算时,结果自动提升为表示数的范围大的类型。
特别的当 byte、char、short 三种类型做运算时,结果为 int 类型。
byte 、 short 、 char —> int —> long —> float —> double
当字符型数据与数值型数据做运算时,会先将字符型数据的值按其编码转换成对应的数值型数据然后再运算。
3.2 强制类型转换
自动类型提升运算的逆运算
- 需要显式指定强转类型
(欲转换的类型) 变量名
- 强制类型转换,可能导致损失精度
对于数字字面量:
如果是整型,其默认类型为 int。long 型数据需要以 L 或者 l 结尾。否则系统会将其当作 int 来处理。
如果是浮点型,其默认类型为 double。float 类型的数据必须以 F 或者 f 结尾。
例如如下的语句将会编译失败
byte b = 123;
byte b = b + 1; //编译失败
float f = b + 12.3;//编译失败
四、字符串类型 String
- String 属于引用数据类型,用于表示一个字符序列。(字符串)
- String 类型的数据必须用一对双引号括起来
- String 可以和八种基本数据类型做运算,且只能做连接运算(+)。
- String 和其他类型的数据运算其结果仍然是 String 类型
+号在 Java 中既可以表示加法操作也可表示字符串连接。+号两侧的值只要有一个是 String 类型,它就表示连接运算,其他的情况都表示加法操作。
System.out.println( 3 + 4 + "Hello!");
System.out.println("Hello!" + 3 + 4);
System.out.println('a' + 1 + "Hello!");
System.out.println("Hello!" + 'a' + 1);
System.out.println('*' + '\t' + '*');
System.out.println('*' + "\t" + '*');
String str = 3.5f + "";
System.out.println(str);
/* 结果
7Hello!
Hello!34
98Hello!
Hello!a1
93
* *
3.5
*/
String 类型与基本数据类型之间的相互转换
- String 转基本数据类型
使用基本数据类型包装类的 parse 方法 - 基本数据类型转 String
和""做连接运算即可