Java编程语言是静态类型???的,这意味着必须先声明所有变量,然后才能使用它们。

常量

常量(constant),通常也被称为“final变量”。

常量声明格式: final 数据类型 常量名称【=值】

final double PI=3.1415926D

当定义的final变量为成员变量时,必须设定值。

常量在整个程序中只能被赋值一次,常量值不可修改。

在为所有对象共享的值时,常量是非常有用的。

变量

变量的概念:

  • 内存中的一个存储区域;
  • 该区域的数据可以在同一类型范围内不断变化;
  • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值。

声明变量:

语法:<数据类型> <变量名称>;

例如:int i;

变量赋值:

语法:<变量名称> = < 值 >

例如i = 10;

使用注意:

  • Java 中每个变量必须先声明,后使用;
  • 使用变量名来访问这块区域的数据;
  • 注意变量的作用域,变量只有在其作用域内才有效;
  • 同一个作用域内,不能定义重名的变量;

变量的分类 - 按数据类型

对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间。

变量命名规则:

  • Java语言使用的字符集是Unicode标准字符集
  • Java语言的标识符由字母、数字、下划线和美元符号组成,第一个字符不能为数字。
  • 但是,约定是,变量名始终以字母开头,而不是“ $”或“ _”。
  • 因为用以区别自动生成的名称中含有$
  • Java大小写敏感
  • 不允许使用空格
  • 多个单词,首字母小写,后续首字母大写
  • 常量值constant全部大写,多个单词用下划线(除此之外,不用下划线)
  • 声明常量需要关键字final限定;

变量的有效范围和生命周期

变量被定义出来后暂存在内存中,等到程序执行到某一个点会被释放掉,也就是说变量有他的生命周期。

根据变量的有效范围,将变量划分为:成员变量和局部变量

成员变量

成员变量:在类体中定义的变量

1.static静态变量/类变量

  • 在介绍静态变量、常量和方法之前首先需要介绍static关键字,因为由static修饰的变量、常量和方法被称作静态变量、常量和方法。
  • 有时,在处理问题时会需要两个类在同一个内存区域共享一个数据。例如,在球类中使用PI这个常量,可能除了本类需要这个常量之外,在另外一个圆类中也需要使用这个常量。这时没有必要在两个类中同时创建PI这个常量,因为这样系统会将这两个不在同一个类中定义的常量分配到不同的内存空间中。为了解决这个问题,可以将这个常量设置为静态的。
    PI常量在内存中被共享的布局如图所示:
  • 因为它们的值对于类的所有实例(换句话说,对于所有对象)都是相同的,所以也称类变量。
  • 静态变量的的有效范围可以跨类。
    对于静态变量,除了可以在定义他的类中存取,还能以类名.静态变量名的方式在其他类中使用。

2. 实例变量/非静态变量

对象的属性状态,非静态字段也称为实例变量。

因为它们的值对于类的每一个实例(换句话说,对于每一个对象)都是不同的,所以也称类实例变量。

局部变量

局部变量只在当前申明他们的代码块中可见。

局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。

可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。

1.方法的参数

2.类的方法中声明的变量都是局部变量

当方法被创建后,Java虚拟机为方法中的局部变量分配内存空间,当该方法调用结束后,则会销毁局部变量,释放局部变量占用的内存空间

就近原则

局部变量可以和成员变量的名字相同,此时就近原则,成员变量将被屏蔽。

可加this调用成员变量。