以下内容引用自http://wiki.jikexueyuan.com/project/java/variable-types.html

一个变量提供了程序可以操作的命名存储。Java中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局;可以存储在该存储器中的值的范围;以及可以应用于变量的一组操作。

在使用前必须现将所要使用的变量进行声明。声明变量的基本格式如下:

data type variable [ = value][, variable [= value] ...] ;

这里的data type是Java的一种数据类型,variable是一种变量的名称。要声明一个以上的特定变量类型,可以采用逗号分隔开。

下面是Java中有效的变量声明和赋值的例子:

int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte B = 22; // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a'; // the char variable a iis initialized with value 'a'

Java中共有三种变量:

  • 本地变量(局部变量)
  • 实例变量
  • 类、静态变量

一、本地变量(局部变量)

  • 本地变量在方法、构造器或者块中声明
  • 本地变量在方法、构造器或者块进入时被创建,一旦退出该变量就会被摧毁
  • 可访问描述符不能用于本地变量
  • 本地变量仅在已经声明的方法、构造器或者块中可见
  • 本地变量在栈深度内部实施
  • 本地变量没有默认值,因此本地变量必须被声明并且在第一次使用前要给它赋值

例子:

这里,age(年龄)是本地变量。这是在pupAge()方法下定义的,它的范围仅限于这个方法。

public class Test{
public void pupAge(){
int age = 0;
age = age + 7;
System.out.println("Puppy age is : " + age);
} public static void main(String args[]){
Test test = new Test();
test.pupAge();
}
}
//上述代码会输出如下结果:
Puppy age is: 7

例子:

下面的例子使用了本地变量age但是没有进行初始化,所以在编辑是就会显示错误。

public class Test{
public void pupAge(){
int age;
age = age + 7;
System.out.println("Puppy age is : " + age);
} public static void main(String args[]){
Test test = new Test();
test.pupAge();
}
}
//编辑时会产生如下错误:
Test.java:4:variable number might not have been initialized
age = age + 7;
^
1 error

二、实例变量

  • 实例变量在类中声明,但是它在方法、构造器或者块外。
  • 当堆中的对象被分配了一个空间时,每个实例变量的位置就被创建了。
  • 当对象采用关键字“new”创建时实例变量就被创建了,当对象被销毁时它也就被销毁了。
  • 实例变量的值必须被一个以上的方法、构造器或者块,或者类中必须出现的对象的状态的重要部分所引用。
  • 实例变量可以在类级别上,在使用前或者使用后声明。
  • 实例变量可以用可访问描述符。
  • 实例变量对类中的所有方法、构造器或者块可见。一般来讲,推荐将这些变量私有(访问层面)。然而子类的可见性可用可访问描述符给予那些变量。
  • 实例变量有默认值。数字的默认值为零,布尔型默认值为假,对象引用默认值为空。在声明或者构造器内可以进行赋值。
  • 实例变量可以采用直接在类中叫名字方式访问。然而在静态方法和不同的类(实例变量可以被访问)中应当使用完全限定名称。ObjectReference.VariableName

例子:

import java.io.*;

public class Employee{
// this instance variable is visible for any child class.
public String name; // salary variable is visible in Employee class only.
private double salary; // The name variable is assigned in the constructor.
public Employee (String empName){
name = empName;
} // The salary variable is assigned a value.
public void setSalary(double empSal){
salary = empSal;
} // This method prints the employee details.
public void printEmp(){
System.out.println("name : " + name );
System.out.println("salary :" + salary);
} public static void main(String args[]){
Employee empOne = new Employee("Ransika");
empOne.setSalary(1000);
empOne.printEmp();
}
}
//上述代码会输出如下结果:
name : Ransika
salary :1000.0

三、类、静态变量

  • 类变量也叫静态变量,它是在类中用static关键字声明的,但是它在方法、构造器或者块之外。
  • 每个类中只有一个类变量,不管这个类有多少对象。
  • 除了作为常量被声明之外,类变量很少被应用。常量是被作为public、private、final和static被声明的变量。实例初始化后值不会被改变。
  • 静态变量存储在静态内存中,除了声明final之外,静态变量也很少使用public或rpivate作为常量。
  • 静态变量随着程序的开始和结束而开始和结束。
  • 可见性和实例变量相似。然而大多数静态变量被声明为public由于他们必须为类的使用者所用。
  • 默认值和实例变量相似。对于数字的默认值为零,布尔型默认值为假,对象引用默认值为空。在声明或者构造器内可以进行赋值。除此之外,可以在特殊的静态初始化区赋值。
  • 静态变量可以用类的名称访问。ClassName.VariableName
  • 当静态变量被作为public static final声明时,变量(常量)名称都要用大写字母。如果静态变量不是public和final,它的命名方法和实例变量和本地变量相同。
  • 声明为final后不能为其赋值。

例子:

import java.io.*;

public class Employee{
// salary variable is a private static variable
private static double salary; // DEPARTMENT is a constant
public static final String DEPARTMENT = "Development "; public static void main(String args[]){
salary = 1000;
System.out.println(DEPARTMENT+"average salary:"+salary);
}
}
//上述代码会输出如下结果:
Development average salary:1000

注:如果变量从类外访问,常量就必须以Employee.DEPARTMENT访问。

测试工程:https://github.com/easonjim/5_java_example/tree/master/javabasicstest/test3

最新文章

  1. NOIP2009潜伏者【B003】
  2. OpenGL FAQ
  3. FileFilter 遍历某个目录下文件名含有某个字符的文件
  4. Oracle行内链接不会引起USER_TABLES中CHAIN_CNT值变化
  5. Eclipse执行Hadoop WordCount
  6. WTL 自绘 进度条Progressbar
  7. javascript中定义事件的三种方式
  8. c语言:链表排序, 链表反转
  9. find tar 压缩第一层目录,用于资料备份。
  10. vue HTTP 请求(vue-resource)
  11. access denied for user 'root'@'localhost'(using password:YES) FOR WINDOWS
  12. [C++]PAT乙级1009. 说反话 (17/20)
  13. 腾讯的h5制作工具教程
  14. 解决OS睡眠功能中,移动鼠标就会唤醒
  15. 一个可以再WIN2000及以上操作系统使用的GetTickCount64
  16. ASP.NET Core 注入和获取 AppSettings 配置
  17. mina基础知识整理
  18. 實戰ESXi 5設置MPIO 打造IP-SAN負載平衡容錯
  19. HTTP 响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding
  20. java.lang.verifyerror:bad type on orerand stack

热门文章

  1. COGS 1570. [POJ3461]乌力波
  2. 语音行业技术领先者Nuance诚招ASR/NLP研发工程师和软件工程师
  3. centos 更换yum源 (解决下载慢的问题)
  4. jquery命名冲突
  5. dockerfile note
  6. Fortran中常用函数列表
  7. 浅谈stiring数
  8. Go:反射
  9. babel实践
  10. python006 Python3 运算符