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

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

  • 当一个对象与使用关键字 “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. 第一章:HTTP服务器,客户端简易代码解析

    HTTP服务器: 方法{ main service } service:读取HTTP请求信息    解析HTTP请求  决定HTTP相应正文的类型   创建HTTP相应结果  发送HTTP相应结果 读 ...

  2. sqlserver跨服务器查询

    两个sqlserver数据库在不同的服务器上如何插入数据哪? EXEC sp_configure RECONFIGURE EXEC sp_configure RECONFIGURE INSERT IN ...

  3. [Swift实际操作]九、完整实例-(3)创建和安装开发证书、发布证书及开发证书配置文件、发布证书配置文件

    本文将为你演示,如何创建开发证书和发布证书,以及其他辅助内容.首先打开浏览器,进入[苹果开发者网站]输入[Apple ID]和[密码],点击登录按钮,进入开发者管理后台. 点击左侧的[Membersh ...

  4. javascript阻止事件冒泡的方法

    有的时候我们需要实现这样的功能: 点击某个蒙版,该蒙版消失,但是如果点击蒙版上的某个元素,希望蒙版不消失,这就需要用到阻止事件的冒泡了 html: <div id="outer&quo ...

  5. 修复win10无法双击打开txt文档.reg

    Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\.txt]@="txtfile""Content Type& ...

  6. 怎样将结构完全一样的两个表的内容合并到一个表中,SQL语句

      标签: SQL合并数据 2013-08-21 10:41 489人阅读 评论(0) 收藏 举报  分类: Oracle数据库(14)  select * into 新表名 from (select ...

  7. java线程面试

    1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成 ...

  8. css和js带参数v或version

    1 <span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?versi ...

  9. php 替换 oracle 数据字段中“看不见”换行符号

    工作需要,把oracle中的数据导出csv,导出代码如下:<?php$file_name = "申請書承認(予定休出).csv";header("Content-D ...

  10. requests 模块使用代理

    正向代理与反向代理的区别 反向代理: 服务器端知道代理的存在,反向代理是为了保护服务器或负责负载均衡 但是客户端不知道代理的存在的 正向代理: 客户端知道代理的存在,正向代理是为保护客户端,防止追究责 ...