变量和类型
1.变量的定义
在程序运行期间,随时可能产生一些临时数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元我们称之为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。
定义变量的语法格式如下:
变量类型 变量名 [=初始值] ;
变量类型决定了变量的数据性质、范围、存储在内存中所占的字节数以及可以进行的合法操作。
变量名必须是一个合法的标识符。
在定义变量的同时,可以对变量进行初始化赋值。
2.变量的数据类型
在Java中变量的数据类型分为两种:基本数据类型和引用数据类型。
2.1整型类型变量
整数类型变量用来存储整数数值。在Java中,整数类型分为4种不同的类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)。
2.1.1字节型变量
基本语法格式:
byte 变量名 = 初始值;
代码示例:
public static void main(String[] args){
byte b=10;
System.out.println(b);
System.out.println(Byte.MAX_VALUE);//byte类型最大值
System.out.println(Byte.MIN_VALUE);//byte类型最小值
}
/*执行结果
10
127
-128
*/
在Java中,byte类型只占1个字节,表示范围较小:-2⁷~2⁷-1。
2.1.1短整型变量
short 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
short sh=18;
System.out.println(sh);
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
}
/*执行结果
18
32767
-32768
*/
在Java中,short类型占2个字节,取值范围:-2¹⁵~2¹⁵-1;
表示范围较小,一般不推荐使用。
2.1.1整型变量
int 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
int a=10;//定义一个整型变量
System.out.println(a);
System.out.println("int最大值:"+Integer.MAX_VALUE);//int最大值
System.out.println("int最小值:"+Integer.MIN_VALUE);//int最小值
int b=Integer.MAX_VALUE+1;
System.out.println("int最大值+1:"+b);
int c=Integer.MIN_VALUE-1;
System.out.println("int最小值-1:"+c);
}
/*执行结果
10
int最大值:2147483647
int最小值:-2147483648
int最大值+1:-2147483648
int最小值-1:2147483647
*/
在Java中,一个int类型变量占4个字节,取值范围**-2³¹~2³¹-1**。
因为整数在内存中使用的是补码形式表示,最高位是符号位,0表示正数,1表示负数,所以int最大值加一后会变成负数。
2.1.1长整型变量
long 变量名 = 初始值;
代码示例:
public static void main3(String[] args) {
long a=10L;// 定义一个长整型变量, 初始值也可以写作" 10l "(小写字母l)
System.out.println(a);
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
}
/*执行结果
10
9223372036854775807
-9223372036854775808
*/
在Java中,long类型占8个字节,表示范围:-2⁶³~2⁶³-1。
在为一个long类型的变量赋值需要注意一点,所附值的后面要加上一个字母L(或小写l),说明赋值为long类型。
2.2浮点类型变量
在Java中,浮点类型分为两种:单精度浮点数(float)和双精度浮点数(double)。
单精度浮点型变量
基本语法格式:
float 变量名 = 初始值;
双精度浮点型变量
基本语法格式:
double 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
float f=12.5f;// // 写作 1.0F 也可以
System.out.println(f);
double d=12.8;
System.out.println(d);
}
/*执行结果
12.5
12.8
*/
在Java中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时,所附值的后面一定要加上字母F(或者小写f)。
float 类型在 Java 中占4个字节, double类型占8 个字节, 它们的内存布局遵守 IEEE 754 标准(和C语言一样)。
2.3字符类型变量
字符类型变量用于存储一个单一字符,在Java中用char表示。
基本语法格式:
char 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
char ch='邹';
System.out.println(ch);
}
//执行结果
//邹
Java 中使用 Unicode 表示字符,每个char类型变量都会占用2个字节。
在给char变量赋值时,需要用一对英文半角格式的单引号’ '把字符括起来。也可以将0~65535范围内的整数赋值给char类型变量,计算机将会自动转换为所对应的字符。
2.4布尔类型变量
基本语法格式:
boolean 变量名 = 初始值;
代码示例:
public static void main(String[] args) {
boolean flg=true;
System.out.println(flg);
}
//执行结果
//true
在Java中,boolean 类型的变量只有两种取值, true 表示真, false 表示假。
boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定。
2.5字符串类型变量
字符串类型变量用于存储一串连续的字符,在Java中,在给String类型变量赋值时,需要用一对英文半角格式的双引号" "把字符串引起来,其基本语法格式如下:
String 变量名=“初始值”;
代码示例:
String str="hello";
System.out.println(str);
注意:
1.String不是基本类型,是引用类型。
2.字符串中的一些特定的不太方便直接表示的字符需要进行转义。
转义符——反斜杠( \ )
在字符常量中,反斜杠()是一个特殊的字符,被称为转义符,它的作用是用来转义紧随其后的一个字符。
常见的转义字符如下:
① \r 表示回车符,将光标定位到当前行的开头,不会跳到下一行。
② \n 表示换行符,换到下一行的开头。
③ \t 表示制表符,将光标移到下一个制表符的位置,就像文档中使用Tab键一样。
④ \b 表示退格符号,就像键盘中的Backspace。
⑤ ’ 表示单引号字符,在Java代码中单引号表示字符的开始和结束,因此需要使用转义(’)。
⑥ " 表示双引号字符,在Java代码中双引号表示字符串的开始与结束,包含在字符串中的双引号需要转义。
⑦ \ 表示反斜杠字符,由于在Java代码中反斜杠()是转义符,因此需要表示字面意义上的\,就需要使用双斜杠(\)。
3. 变量的作用域
变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。
4.变量的类型转换
数据类型转换可分为两种:自动类型转换和强制类型转换。
4.1自动类型转换
当把一个类型取值范围小的数值直接赋给另一个取值范围大的数据类型变量时,系统就会进行自动类型转换,否则需要进行强制类型转换。
Java中的自动类型转换就好比将小瓶中的水倒入大瓶的换装过程。
byte b=3;
int x=b; //把byte类型的变量b转换成了int类型
double y=x; //将int类型的变量x转换成了double类型
4.2强制类型转换
当两种类型不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这时就需要强制类型转换。强制类型转换会造成数据精度的丢失。
byte a=10;
byte b=20;
byte c=(byte)(a+b);
System.out.println(c);
两个byte类型相加,会先提升成int类型,再进行计算。