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; //编译错误 }