目录

一、标识符和关键字

1.标识符

2.关键字

二、声明变量

三、声明常量

例,尝试给常量赋值,观察是否会发生错误

四、变量的有效范围

1.成员变量

2.局部变量

例,把成员变量“ 排挤掉 ”的局部变量


一、标识符和关键字

1.标识符

标识符可以简单地理解为一个名字,是用来标识类名、变量名、主方法、数据名、文件名的有效字符顺序。

java语言规定标识符由任意的字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。标识符不能是java中的关键字(保留字)。

下面是合法标识符

name
user_age
$papg

下面是非法标识符

4word
String
User name

在java语言中,标识符中的字母是严格区分大小写的,如good和Good是不同的两个标识符。java语言使用Unicode标准字符集,最多可以标识65535个字符。因此,java语言中的字母不仅包括通常的拉丁文字a、b、c 等,还包括汉语、日语以及其他许多语言中的文字。

2.关键字

关键字又称保留字,是Java语言中已经被赋予特定意义的一些单词,不可以把这些单词作为标识符来使用。

Java中的关键字如表所示

java关键字

关键字 

声明

关键字

声明

abstract 

表示类或者成员方法具有抽象属性

int 

整数类型 

assert

断言,用来进行程序调试

interfase

用于声明接口

boolean

布尔类型

long

长整数类型

break

跳出语句,提前跳出一块代码

native

用于声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)

byte

字节类型

new

用于创建新实例对象

case

用在switch语言之中,表示其中的一个分支

package

包语句

catch 

用于异常处理中,用来捕捉异常

private

私有权限修饰符

char

字节字符

protected

受保护权限修饰符

class

用于声明类

public

公有权限修饰符

const

保留关键字,没有具体含义

return

返回方法结果

continue

回到一个块的开始处

short

短整数类型

default

默认,如在switch语句中表示默认分支

static

静态修饰符

do

do...while循环结构使用的关键字

strictfp

用于声明FP_strict

double

双精度浮点类型

super

父类对象

else

在条件语句中,表明当条件不成立时的分支

switch

分支结构语句关键词

enum

用于声明枚举

synchronized

线程同步关键字

extends

用于创建继承关系

this

本类对象

final

用于声明不可改变的最终属性,如常量

throw

抛出异常

finaally

声明异常处理语句中始终会被执行的代码块

throws

方法将异常处理抛向外部方法

float

单精度浮点类型

transient

声明不用序列化的成员域

for

for循环语句关键字

try

尝试监控可能抛出异常的代码块

goto

保留关键字,没有具体含义

var

声明局部变量

if

条件判断语句关键字

void

声明方法无返回值

implements

用于创建类与接口的现实关系

volatile

表明两个或多个变量必须同时发生变化

import

导入语句

while

while循环语句关键字

instanceof

判断两个类的继承关系

二、声明变量

变量的使用是程序设计中一个十分重要的环节。声明变量就是要告诉编译器(compiler)这个变量的数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了便于操作,给这个空间取了一个名字,称为变量名。变量的命名必须是合法的标识符。内存空间的价值就是变量值。在声明变量时可以是没有赋值,也可以直接赋给初值。

例如,声明一个整数类型变量和声明一个字符类型变量,代码如下:

int age;                //声明int型变量
char char1 = 'r';       //声明char型变量并赋值

对于变量的命名并不是随意的,应遵循以下几条规则:

变量名必须是一个有效的标识符。

变量名不可以使用java中的关键字。

变量名不可以重复。

应选择有意义的单词作为变量名。

在Java中允许使用汉字或其他语言文字作为变量名,如“ int 年龄 = 21 ”,在程序运行时不会出现错误,但建议读者不要使用这些语言文字作为变量名。

三、声明常量

在程序运行中一直不会改变的量称为常量(constant),通常也被称为“final变量”。常量在整个程序中只能被赋值一次。在为所有的对象共享值时,常量是非常有用的。

在Java语言中声明一个常量,除了要指定数据类型,还需要通过final关键字进行限定。声明常量的标准语法如下:

final 数据类型 常量名称 【 = 值  】

常量名称通常使用大写字母,但这并不是必须的。很多Java程序员使用大写字母表示常量,是为了清楚地表明正在使用常量。

例如,声明常量

java的常量字符串长度过长怎么解决 java字符常量不合法_成员变量

(程序中用PI表示),代码如下:

final double PI = 3.1415926D;    //声明double型常量PI并赋值

当变量被final关键字修饰时,该变量就变成了常量,必须在定义时就设定它的初值,否则将会产生编译错误。从下面的实例中可看出变量与常量的区别。

例,尝试给常量赋值,观察是否会发生错误

在项目中创建类part,在类体中创建变量age与常量PI。在主方法中分别将变量与常量赋值,通过输入信息可测试变量与常量的有效范围。

public final class part {                                  //新建类part
	//声明常量PI,此时如不对PI赋值,则会出现错误提示
	static final double PI =3.14;
	static int age = 23;                                  //声明int型变量age并赋值
	
    public static void main(String[] args) {              //主方法
		final int number;                                 //声明int型常量number
		number = 1235;                                   //对常量进行赋值
		age = 22;                                        //再次对变量进行赋值
		number = 1236;                                   //错误代码,number为常量,只能赋值一次
		System.out.println("常量PI的值为:"+PI);          //将PI的值输出
		System.out.println("赋值后number的值为:"+number);//将number的值输出
		System.out.println("int型变量age的值为:"+age);   //将age的值输出

	}

}

运行结果如下:

Exception in thread "main" java.lang.Error:无法解析的编译问题
final 局部变量 unmber 可能已经被赋过值
at part.main(part.java:11)

四、变量的有效范围

由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量就会释放掉,也就是说变量有它的生命期限。因此,变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则编译的时候会出现错误。在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。

1.成员变量

在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种,即静态变量和实例变量。例如以下代码:

class Demo{
   int x = 45;
   static int y = 90;
}

其实,x为实例变量,y为静态变量(也称类变量)。如果在成员变量的类型前面加上关键字static,这样的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至可达到整个应用程序内。对于静态变量,除了能在声明它的类内存取,还能直接以“类名.静态变量”的方式在其他类内使用。

2.局部变量

在类的方法体中声明的变量(方法内定义,“ { ”与“ } ”之间的代码中声明的变量)称为局部变量。局部变量只在当前代码块中有效,也就是只能在“ { ”与“ } ”之内使用。

在类的方法中声明的变量,包括方法的参数,都属于局部变量。局部变量只在当前定义的方法内有效,不能用于类的其他方法中。局部变量的生命周期取决于方法,当方法被调用时,Java虚拟机会为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将会被销毁。

局部变量可与成员变量的名字相同,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效。

例,把成员变量“ 排挤掉 ”的局部变量

在项目中创建Val,分别定义名称相同的局部变量与成员变量,当名称相同时,成员变量将隐藏。

public final class Val {                           //新建类
	static int times = 3;                          //定义成员变量times
	public static void main(String[] args) {       //主方法
		int times = 4;                             //定义局部变量times
		System.out.println("times的值为:" +times); //将times的值输出
	}

}

运行结果如下:

times的值为:4