实例变量:
  • 实例变量在类中声明,但在方法的外面,构造函数或任何块。

  • 当空间分配给某个对象在堆中,插槽为每个实例变量创建值。

  • 当一个对象与使用关键字 “new” 来创建,在对象被销毁销毁创建的实例变量。

  • 实例变量认为必须由一个以上的方法,构造函数或块,或一个对象的状态的关键部分必须出现在整个类中引用的值。

  • 实例变量可以在使用前或后级的级别声明。

  • 访问修饰符可以给出实例变量。

  • 实例变量对于所有方法,构造函数和块在类中可见。通常,建议,使这些变量私有(接入层)。然而能见度子类可以给这些变量与使用访问修饰符。

  • 实例变量有默认值。对于数字的默认值是0,为布尔值是false和对象引用为null。值可以在声明或构造函数中分配。

  • 实例变量可以直接通过调用变量名的类的内部访问。然而在静态方法和不同的类(当实例变量被赋予访问)应使用完全限定名调用 ObjectReference.VariableName.

  •  public class Sample
    {
    private int a=1; //实例变量 public void b()
    {
    int a=2; //局部变量
    System.out.println("局部变量:a="+a);
    System.out.println("实例变量:a="+this.a);//局部变量的作用域内引用实例变量:this.变量名
    }
    public static void main(String[] args)
    {
    new Sample().b();
    }
    }                                                                                                                                        

    =========================================================================================

局部变量:

  • 局部变量的方法,构造函数或块中声明。

  • 创建局部变量的方法,构造函数或块时进入,一旦退出方法,构造函数或块中的变量将被销毁。

  • 访问修饰符不能用于局部变量。

  • 局部变量是可见的,只有内声明的方法,构造函数或块。

  • 局部变量在堆栈级别内部实现。

  • 在这里对局部变量没有默认值,因此局部变量应该声明和初始值应在第一次使用前分配。

例如:

在这里,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

类/静态变量:

  • 类变量也称为静态变量在类的static关键字声明的,但在方法外面,构造函数或块。

  • 每个类变量只有一个副本,不管有多少对象从它被创建。

  • 静态变量很少使用不是被声明为常量等。常量是被声明为公共/私营,最终和静态变量。常量变量从来没有从他们的初始值改变。

  • 静态变量被存储在静态存储器中。这是罕见的使用静态变量以外声明为final,用作公共或私有常数。

  • 在程序启动时的静态变量被创建,在程序停止销毁。

  • 能见度类似于实例变量。然而,大多数静态变量声明为 public,因为它们必须可用于类的使用者。

  • 默认值是相同的实例变量。对于数字,默认值是0;为布尔值,它是假的,和对象引用,它为null。值可以在声明或构造函数中分配。另外值可以在特殊的静态初始化块进行分配。

  • 静态变量可以通过调用与类名来访问。 ClassName.VariableName.

  • 当定义的变量为 public static 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

Java变量类型,实例变量 与局部变量 静态变量的更多相关文章

  1. 成员变量(实例变量)&局部变量&静态变量(类变量)的区别

    成员变量(实例变量)&局部变量区别: (1)作用域 成员变量:针对整个类有效. 局部变量:只在某个范围内有效.(一般指的就是方法,语句体内) (2)存储位置 成员变量:随着对象的创建而存在,随 ...

  2. Java非静态内部类中为什么不能有静态变量却可以有常量?

    如:public class InnerClassDemo{ int x; class A{ static int a = 0;//这样写是不合法的. static final int b=0;//这 ...

  3. Java中Static关键字详解以及静态变量和成员变量的区别

    一.static关键字的特点 (1)修饰成员变量.成员方法(2)随着类的加载而加载(3)优先于对象存在(4)被所有对象共享(5)可以通过类名调用 它本身也可以通过对象名调用 例如:main()方法由j ...

  4. PHP接口中的静态变量、常量与类中静态变量、常量的区别

    接口: 1 不能够定义静态变量(常量除外) 2 定义的常量 const YOUCONST = VALUE,不能在子类中覆盖,在子类中以 interfaceName::YOUCONST的方式调用 3 不 ...

  5. PHP之static静态变量详解(一)

    什么是static静态变量?(以下为在C语言中的理解) 静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该 区域中的数据在 ...

  6. static静态变量的理解

    静态变量 类型说明符是static.静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...

  7. C语言 static静态变量

    静态变量类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间 ...

  8. java入门---变量类型&类变量&局部变量&实例变量&静态变量

        在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下:     type identifier [ = value][, identifier [= value] ...] ; ...

  9. (转)java线程安全问题之静态变量、实例变量、局部变量

    java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同<java并发编程实践>中所说: 写道 给线程安全下定义比较困难.存在很多种定义,如 ...

随机推荐

  1. 常用Linux命令:netstat

    一.netstat:显示各种网络相关信息 1.命令格式 netstat [参数] 2.常用参数 -a   :(all)显示所有选项,默认不现实LISTEN相关 -t    :(tcp)仅显示tcp相关 ...

  2. Tomcat之——内存溢出设置JAVA_OPTS

    答案1设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4.可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置三.实例,以下 ...

  3. 利用Response.Buffer做类似异步效果

    在page_load加入以下代码 Response.Buffer = false;  //这句话非常重要 for (int i = 0; i < 10; i++) { Thread.Sleep( ...

  4. hbuilder h5 原生socket

    在网上搜索了很多资料都不行,要么就是不能发送数据,要么就不能接收数据,使用如下的方法可以接收数据,一个一个字节接收: 有部分限制是需要明确知道要接收多少个字节,否则容易出现接收异常.. var tes ...

  5. android android遇到的错误

    android遇到的错误 一.eclipse运行.生成.打包APK报错: 原因1: jdk版本太低,升级jdk 原因2: tools选择: android sdk build-tools  大于等于2 ...

  6. 「TJOI2015」线性代数

    题目链接 戳我 \(Describe\) 题目描述 为了提高智商,\(ZJY\)开始学习线性代数.她的小伙伴菠萝给她出了这样一个问题:给定一个\(n×n\)的矩阵\(B\)和一个\(1×n\)的矩阵\ ...

  7. MultiDataTrigger

    MultiDataTrigger是多条件数据触发器 和MltiTrigger是同样的,只不过前者是数据,后者是属性. 这个是基本的使用语法 <MultiDataTrigger> <M ...

  8. 《Thinking in Java》 10~

    chapter 10 内部类(P191) 创建内部类 链接到外部类 内部类能访问器外围对象的所有成员,而不需要任何特殊条件. 使用.this与.new package cn.test; public ...

  9. Spring Boot的每个模块包详解

    Spring Boot的每个模块包详解,具体如下: 1.spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2.spring-boot-s ...

  10. 【bzoj4836】二元运算 分治FFT

    Description 定义二元运算 opt 满足 现在给定一个长为 n 的数列 a 和一个长为 m 的数列 b ,接下来有 q 次询问.每次询问给定一个数字 c 你需要求出有多少对 (i, j) 使 ...