Java复习二 基本数据类型与变量和常量
- Java基本数据类型
- Java变量与常量
Java基本数据
整数类型
用来存储整数的数据类型,既可以是正整数,又可以是负整数和0,但是不可以为浮点数。整数常量在Java中有三种表现形式:十进制,八进制,十六进制
十进制:Java变量正常的表现形式,不能以0作为开头,除0外。
八进制:以0作为最高位的开头。
十六进制:以0x为最高位的开头。
整型变量根据本身在内存中所占大小不同可以分为byte,shot,int,long,四种
数据类型 | 内存空间 | 取值范围 |
byte | 8位 | -128~127 |
short | 16位 | -32768~32767 |
int | 32位 | -2147483648~2147483647 |
long | 64位 | -922337036854775808~922337036854775807 |
说明:在数字末尾添加L或l(小写的L)标识long类型整数,一般都发生在整数大于int最大取值范围时。因为Java默认的整数类型是int。
浮点数类型
浮点型表示有小数部分的数字可以分为单精度浮点小数和双精度浮点小数。浮点型数据类型
数据类型 |
内存空间(8位等于1字节) |
取值范围 |
float |
32位 |
1.4E-45~3.4028235E38 |
double |
64位 |
4.9E-324~1.7976931348623157E308 |
Java语言默认使用double双精度类型的浮点数,就像int是默认的整数类型一样。如果将实数赋值给float类型的变量,则需要在实数末尾添加F或f作为后缀,否则被认为是double类型数值。在声明double类型的数据时,可以使用后缀“d”或“D”来明确表明这是一个double类型数据。但是加不加“D”或“d”没有硬性规定,可以加也可以不加,不过声明float型变量时如果不加“F”或“f”,编译器会认为是double类型而出错。
字符类型
字符类型(char)用于存储单个字符,占用16位(两个字节)的内存空间。在定义字符型变量时,要以单引号表示,例如 \'s\' 表示一个字符。而 "s" 则表示一个字符串,虽然它只有一个字符,但由于使用双引号,所以它仍然表示字符串,而不是字符。
转义字符是一种特殊的字符变量。转义字符以反斜线“\”开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”。例如,printf函数的格式串中用到的“\n”就是一个转义字符,意思是“回车换行”。Java中转义字符如表所示。
转义字符 |
含义 |
\ddd |
1到3位8进制数据所表示的字符,如:\456 |
\dxxxx |
4位16进制所表示的字符,如:\0052 |
\\' |
单引号字符 |
\\ |
反斜杠字符 |
\t |
垂直制表符,将光标移到下一个制表符的位置 |
\r |
回车 |
\n |
换行 |
\b |
退格 |
\f |
换页 |
布尔类型
布尔类型又称逻辑类型,只有两个值true和false,分别代表布尔逻辑中的“真”和“假”,布尔值不能与整数类型进行转换。布尔类型通常被用在流程控制中作为判断条件。
定义布尔型变量,可通过关键字boolean来定义。定义方法如下:
boolean b; //定义布尔型变量b
boolean b1,b2; //定义布尔型变量b1,b2
注意:由于布尔型数据只存在true和false数值,所以在为boolean型变量赋值时,除这两个值外的任何数值都是非法的。
Java变量与常量
标识符与关键字
标识符:只能是由数字字母下划线和$构成,其中首字母不可以为数字,并且关键字不可以做为标识符。标识符严格区分大小写。
关键字:关键字是Java语言中已经被赋予特定意义的一些单词。不可以把这些字作为标识符来使用。数据类型中提到的int、boolean等都是关键字,Java中的关键字如表所示:
Java关键字
int |
public |
this |
finally |
boolean |
abstract |
continue |
float |
long |
short |
throw |
throws |
return |
break |
for |
static |
new |
interface |
if |
goto |
default |
byte |
do |
case |
strictfp |
package |
super |
void |
try |
switch |
else |
catch |
implements |
private |
final |
class |
extends |
volatile |
while |
synchronized |
instanceof |
char |
protecte |
importd |
transient |
implements |
dafaule |
double |
定义变量
变量可以理解为一个箱子,在这个箱子里面可以装一些物品而这些物品和箱子的大小有谁确定呢?这就与上一点总结的有关——数据类型。Java语言是强类型的语言,必须先声明变量,才可以使用。声明变量时根据其数据类型为这个箱子规范大小,并确定箱子里面所需的物品。
使用箱子,首先你要知道箱子的名字——变量名。其命名规则与标识符相同。
声明常量
final数据类型 常量名称[=值]
当定义的final变量属于“成员变量”,则必须在定义的时候就设定它的初值。
变量的有效范围
由于变量被定义出来后,只是暂存在内存中,等到程序执行到某一个点后,该变量会被释放掉,也就是说变量有它的生命周期。因此变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域访问变量则编译时会出现错误。在程序中,一般会根据变量的有效范围,将变量分为“成员变量”和“局部变量”。
1.成员变量:在类体中所定义的变量被称为成员变量。成员变量在整个类中都有效,所以成员变量也称作全局变量。成员变量的有效范围是整个类的代码段,也就是在类体中的任何位置都可以使用该变量。类的成员变量又可分为静态变量和实例变量两种。
静态变量:
静态变量的有效范围是整个类,并且可以被类的所有实例共享。可通过“类名.静态变量名”的方式来访问静态变量。静态变量的生命周期取决于类的生命周期,当类被加载时,为类中的静态变量分配内存空间,当卸载类时,释放静态变量占用的空间,静态变量被销毁。类加载时,就为静态变量分配内存空间,之后无论创建了多少类的实例,都不会再为静态变量分配内存空间,这些实例会使用同一个静态变量。
实例变量:实例变量与类的实例对应,它的有效范围是整个实例。每创建一个类的实例,都会为当前实例分配实例变量的内存空间。所以实例变量的生命周期取决于实例的生命周期,实例被创建时,为实例变量分配内存空间,当销毁实例时,释放实例变量占用的内存空间。
2.局部变量:在方法体中定义的变量就是一种局部变量,局部变量只在当前代码块(即花括号之内)中有效。局部变量的生命周期取决于声明位置的代码块,超出这个代码块的范围就不能在使用代码块内的局部变量。
就拿方法类说,方法内声明的变量、包括参数变量都属于局部变量,当方法被调用时,Java虚拟机为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将会销毁,然后Java的垃圾回收机制会在某一时刻清理该内存空间。
说明:局部变量可与全局变量的名字相同,此时全局变量将被隐藏,但是可以使用“this.”做前缀来访问全局变量。