局部变量:方法中定义的变量。

成员变量(类似C中的全局变量):成员变量定义在方法体和语句块之外。成员变量就概括描述了类中的变量,不区分static。是以下变量的统称。

类变量(静态变量):独立于方法之外的变量,属于类本身。需要static修饰,事实上,类变量就是以static修饰的独立于方法之外的成员变量。

类变量必须在方法、构造方法和语句块之外。
无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
实例变量(非静态变量):独立于方法之外的变量,依赖实例存在。不需要static修饰,事实上,实例变量就是没有static修饰的独立于方法之外的成员变量。

实例变量声明在一个类中,但在方法、构造方法和语句块之外。
当一个对象被实例化之后,每个实例变量的值就跟着确定。
实例变量在对象创建的时候创建,在对象被销毁的时候销毁。
实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息。
实例变量可以声明在使用前或者使用后。
实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见。
实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定。

Example(from CoreJava):

假定公司需要给每一个雇员赋予唯一的标识码。

分析:每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextld 域。换句话说,如果有 1000 个Employee类的对象,则有 1000 个实例域 id。但是,只有一个静态域 nextld。即使没有一个雇员对象,静态域 nextld 也存在。它属于类,而不属于任何独立的对象。

代码如下(以员工jack作为第一名员工简单示例):

复制代码
1 public class Employee {
2
3 public static int nextId=1;
4 public int id;
5 public void setId(){  //该方法意味着下面new的对象jack的id域(实例域)被设置为静态域nextld当前的值(1),并且静态域nextld的值加1
6 id=nextId;
7 nextId++;
8 }
9
10 public void method(){ //定义一个用于输出标识码的非静态方法
11 System.out.println(id);
12 }
13
14 public static void main(String[] args){
15 Employee jack=new Employee(); //new一个叫jack的员工
16 jack.setId(); //调用setId方法为jack分配一个标识码
17 jack.method(); //调用method方法输出jack的标识码
18 }
19
20 }
复制代码

注:无法在静态变量中引用非静态成员(非静态变量,非静态方法),因为非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。

  解决方案:一、将变量变为静态变量,在变量类型前增加static。

       二、先实例化一个对象,然后使用 对象名.变量名 来引用即可。

代码如下:

复制代码
1 //以下为第二种方法,第一种方法只需在第四行public和String之间增加static即可(name即变为静态变量)
2 public class Test {
3
4 public String name; //name为非静态变量
5
6 public static void main(String[] args){
7 Test learner=new Test(); //在主方法(为静态方法)中要调用非静态变量name,需要先实例化一个对象learner
8 learner.name="西柚冬瓜"; //然后采用 对象名.变量名 方式来在主方法中引用非静态变量name
9 System.out.println(learner.name);
10 }
11 欢迎工作一到五年的Java工程师朋友们加入Java群: 891219277
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

12 }
复制代码

转载于:https://blog.51cto.com/14084556/2332007

Java笔记:成员变量,局部变量,类变量,实例变量以及注意事项相关推荐

  1. java 实例变量是类的成员变量吗_JAVA中成员变量,局部变量,实例变量,类变量,有什么关系,,?...

    展开全部 java易混淆概念之类变量32313133353236313431303231363533e4b893e5b19e31333365643662.实例变量.局部变量 类变量.实例变量.局部变量 ...

  2. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  3. JAVA中 成员变量和和实例变量区别

    java语言支持的变量类型 类变量:独立于方法之外的变量,用 static 修饰. 局部变量:类的方法中的变量. 实例变量(全局变量):独立于方法之外的变量,不过没有 static 修饰. publi ...

  4. java实例变量,局部变量,类变量和final变量

    题目 答案:B 解析 实例变量: 定义在类中的变量是类的成员变量,可以不进行初始化, java 会自动进行初始化.(如果是引用类默认初始化为 null, 如果是基本类型,默认初始化为 0 ) 局部变量 ...

  5. 成员变量、局部变量、实例变量、静态变量、类变量、常量

    成员变量: 直接在类中声明的变量叫成员变量(又称全局变量) ▲ 初始化: 如果未对成员变量设置初始值,则系统会根据成员变量的类型自动分配初始值:int分配初始值0.boolean分配初始值false, ...

  6. 成员变量 局部变量 类变量

    成员变量和局部变量的区别 成员变量: 1.成员变量定义在类中,在整个类中都可以被访问. 2.成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中. 3.成员变量有默认初始化值. ...

  7. 类变量,局部变量,实例变量

    public class Demo08 {//类变量 staticstatic double salary = 2500;//属性:变量//实例变量:从属于对象:如果不自行初始化,这个类型的默认值 0 ...

  8. Java基础篇:隐藏的实例变量

    有时一个方法需要引用调用它的对象.为此,Java定义了this这个关键字.this可以在引用当前对象的所有方法内使用.也就是,this总是调用该方法对象的一个引用.你可以在当前类的类型所允许对象的任何 ...

  9. java静态变量和实例变量的区别6_java静态变量的与实例变量的区别

    下面的为代码实现 /** * */ package com.b510.test; /** * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象, * 其中的实例变量才会被分配空间,才 ...

  10. python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...

    需要搞清楚的是, 实例方法与类方法是什么?类变量和实例变量又是什么? 类方法中如何访问类变量.类方法要如何调用?当然 实例方法中如何访问类变量?能 实例方法访问实例变量,实例方法如何被调用?当然 类方 ...

最新文章

  1. arcsde安装步骤_ArcGIS 9.3 安装之 SDE的安装及使用
  2. 查看springboot中tomcat版本
  3. mysql探活_MYSQL探索
  4. Scrapy 框架入门
  5. 《犯罪心理学》读书笔记(part5)--犯罪心理的形成与内在因素的影响(下)
  6. 利用Erdas监督分类方法提取城镇用地信息完整实验操作步骤
  7. 计算机基础知识第3版答案,计算机基础知识试题库及答案(3)
  8. 前端学习(2895):课程列表和导航结合
  9. java学习(19):巩固练习
  10. 30岁菜鸟涛学习VB.net 第八天
  11. Linux学习笔记-消息队列的打开、创建、控制
  12. bootstrap select2控件
  13. IDG研究显示,混合云是数字化转型的“强大助推器”
  14. java invokevirtual_Java | 深入理解方法调用的本质(含重载与重写区别)
  15. 【云栖精选】6篇深度!解除MySQL数据同步疑惑+Docker技术示例
  16. 22年PMP考试【全真敏捷试题】
  17. 计算机的常见故障处理实验报告,微机系统故障与处理-实验报告.doc
  18. 博士申请 | 皇家墨尔本理工大学鲍芝峰教授招收数据挖掘方向全奖博士生
  19. 类人猿学院--懒人精灵脚本系列教程(最新)
  20. Android实现微信悬浮窗

热门文章

  1. nginx配置访问密码,让用户输入用户名密码才能访问
  2. 超大数据下大批量随机键值的查询优化方案 1
  3. 鸟哥的linux私房菜-文件压缩于打包-2
  4. 腾讯动漫爬虫与动态随机加载反爬破解技术实战
  5. 从创业到成功,SaaS巨头Salesforce靠的是这七大秘诀
  6. VS2010 出现打开关联文档错误的解决方案
  7. 17个提升iOS开发效率的神器
  8. 【Red Hat 】vim编辑器的常用命令以及使用技巧
  9. 当下全球最炙手可热的八位少年创业者
  10. C++/C的文件结构