java中如何定义基元数据类型的变量
我们将看到哪些是原始数据类型,如何定义变量,哪些是变量默认值,以及我们可以给这些变量起什么名字。
在Java中有两种类型的变量:
基元数据类型(原始的)
对象或引用
在本教程中,我们主要关注基元数据类型的变量。 对象(引用类型变量)将在关于类的教程中进行描述。
基元类型是不能分解为其他子类型的基本数据类型。
Java基元数据类型(primitive data types)
在Java6中有8种基元数据类型:
| 数据类型 | 大小 | 符号值范围 | 类别 |
|---|---|---|---|
| byte | 1 字节 | -128 –> 127 | 整数 |
| short | 2 字节 | -32768 –> 32767 | 整数 |
| int | 4 字节 | -2147483648 –> 2147483647 | 整数 |
| long | 8 字节 | -9,223,372,036,854,775,808 –> 9,223,372,036,854,775,807 | 整数 |
| float | 4 字节 | 7位有效数字 | 浮点数 |
| double | 8 字节 | 15位有效数字 | 双精度数 |
| char | 2 字节 | ’\u0000’ –> ’\uffff’ 0 –> 65535 | 16位 Unicode 字符 |
| boolean | 1 位 | true or false | 逻辑值 |
定义变量
在Java中,变量是使用以下语法定义的:
variable_type variable_name;
其中 :
variable_type–八个基元数据类型或类class定义的类型之一;
variable_name–程序员定义的变量名;
如何在Java中定义变量:
变量名必须以字母、下划线符号(_)或美元符号($)开头;
变量名不能以数字开头;
在第一个字符之后,可以在变量名中使用数字;
变量名不能是Java语言保留的关键字;
可以同时定义多个变量;
public class Variables {
public static void main()
{
// 正确定义的变量
int vb1,vb2;
float fvb2;
double _temp;
boolean $flag;
//错误定义的变量 将会报编译错误
byte 3vb; // 以数字开头
long for; // 使用了java关键字
}
}
变量名由程序员选择,但为了提高效率,在Java中有一个关于变量名的建议;
- 这个约定是从变量名派生出来的,就是说变量名要有意义,
- 如果它们由几个单词组成,第一个单词用小写字母拼写;从第二个单词开始,每个单词的第一个字母都大写;
- 另外,作为建议,布尔变量应该以is开头(例如boolean isNumber;)
如何在Java中初始化变量
在初始化变量时,应该考虑变量的类型,因为在Java中,不可能分配与变量类型不同的值。
从这个观点来看,Java是强类型语言(而Visual Basic不是)。
例如,以下语句将报编译错误,因为可能会导致精度损失:
float vb2 = 23.5; //编译错误 - 可能导致精度丢失 int vb3 = 45.6; //编译错误 - 可能导致精度丢失 boolean test = 23; //编译错误 - 不兼容的类型
在定义float类型变量 vb2时,由于默认情况下 浮点数常量值被视为 double,所以会生成编译器错误。
正确的方法是在值的末尾加上一个 f,即 float vb2 = 23.5f;
值的类型必须与变量类型相同;
可以同时初始化多个变量;
在Java中,布尔变量的唯一可能值是true或false(在C或C++中,除0以外的任何数值都被视为true);
浮点常量值最后用符号 f定义,因为,隐式地,浮点数常量被认为是双精度的;
字符符号定义在“'”之间(单引号),而不是“"”之间(引号);
实数值可以用科学的格式定义,例如1.234e2等于123.4;
基数8中的整数值以0为前缀,例如021等于十进制的17;
以16为基数(十六进制表示)的整数值以x为前缀,例如0×11等于十进制的17;
char变量可以有一系列特殊字符作为值,转义序列:
| 转义序列 | 值 |
|---|---|
| \b | 退格符 |
| \t | 制表符 |
| \n | 换行 |
| \f | 换页符 |
| \r | 回车 |
| \" | 双引号 |
| \' | 单引号 |
| \\ | 反斜杠 |
使用基元数据类型正确初始化的变量示例:
int value1;
int value2;
value1 = value2 = 17;
int valueB8 = 021;
int valueB16 = 0x11;
float value3 = 123.4f;
double value4 = 123.4;
char c = 'a';
char enter = '\r';
boolean isNumber = true;
long value5 = 17L;
```
#### Java中变量的默认值是什么
如果变量没有初始化,那么编译器可以用默认值初始化它们( **但是,并非在所有情况下都是这样!)!** )
基元数据类型 | 默认值
--------|-------
byte | 0
short | 0
int | 0
long | 0L
float | 0.0f
double | 0.0d
char | '\u0000'
boolean | false
**重要!**局部变量(在方法中定义)不是由编译器用默认值初始化的。
上表中的默认值用于对象(类中定义的变量)的属性、字段。
使用未初始化的局部变量将生成编译器错误:
``` plain
public static void main(){
int sum; // 在main方法中声明的局部变量
sum = sum + 10; //编译错误
}

