目录

成员变量

局部变量

static的标志


变量:

成员变量和局部变量

成员变量:

有static修饰:类变量,属于类本身

无static修饰:实例变量,属于实例

局部变量:

方法块里的局部变量。仅在该方法内有效

代码块里的局部变量。仅在代码块内有效

形参。在整个方法内有效

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

成员变量

实例变量:

无static修饰的变量(实例.实例变量)

从有实例开始,实例变量就存在了

实例被销毁,实例变量就不存在了

0~N个,程序每创建一个实例,系统就为该实例分配一块内存

类变量:

有static修饰(类.类变量、实例.类变量,但这里的类变量不属于实例)

从有类开始,实例变量就存在了

一个jvm里,类信息只有一个

每个jvm最多加载一个类一次,系统就为该实例分配一块内存

类变量的作用范围比实例变量的作用范围更大【详见:static的标志】。

package OO191226;/** 本段代码说明了如下几个问题:* 1.成员变量无需显式初始化(即可以不用程序员直接复制),系统会自动初始化* 2.类变量的作用域比实例变量的作用域更大(类变量可以作用于多个实例)* 3.这就说明了 static是类的成员变量,跟着类而非跟着实例,在类中只有一个,多少个实例使用static修饰的变量,其指向都是一个* * */class Person {public String name;public static int numeye;
}public class PersonTest {public static void main(String[] args) {//第一次主动使用Person,该类自动初始化System.out.println("Person的numeye类变量值:"+Person.numeye);//Person p=new Person();//初始化的值System.out.println("p变量的初始化name变量值是:"+p.name+",p变量的初始化numeye变量值是:"+p.numeye);//赋予新的值p.name="孙悟空";p.numeye=2;System.out.println("p变量的name变量值是:"+p.name+",p变量的numeye变量值是:"+p.numeye);//类的numeye的值System.out.println("赋值后,Person类的numeye类变量值:"+Person.numeye);Person p2 =new Person();System.out.println("赋值后,Person类的numeye类变量值:"+p2.numeye);}
}

规则:系统会为成员变量执行【默认的初始化】→ 初始化的规则是:基本类型就是0/0.0/\u0000\false;引用类就是null

当程序通过实例来访问类变量时,由于类变量本身就不属于实例,因此底层实际上会委托通过类来访问的

规则:局部变量必须由程序员来赋值,系统【不会】对局部变量执行默认的初始化

成员变量使用规则:

  1. 若需要定义的变量是用于描述某个类或某个对象的固有信息的,如人的身高、体重(实例)、人有两只眼睛(类)
  2. 若在某个类中需要以一个变量来保存该类或者实例运行时的状态信息,如棋盘数组等
  3. 如某个信息需要在某个类的多个方法之间共享的
  4. 采用局部变量时,也应该尽可能的缩小局部变量的使用范围

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

局部变量

方法块里的局部变量。仅在该方法内有效

package OO191226;public class MethodLocalVariableTest {public static void main(String[] args) {int a;//仅输入下面的代码行会出现错误,因为局部变量和成员变量不同,成员变量有系统初始化,但局部变量没有//System.out.println("方法局部变量a的值:"+a);a=5;System.out.println("方法局部变量a的值:"+a);}
}

代码块里的局部变量。仅在代码块内有效

package OO191226;//代码块中的局部变量
public class BlockTest {public static void main(String[] args) {//代码块内外的局部变量{int a;a=5;System.out.println("代码块内的局部变量:"+a);}//代码块外的局部变量//单单输入下面一行程序就会出错。这是因为局部变量a仅在代码块中有效//System.out.println("代码外块内的局部变量:"+a);}
}

形参。在整个方法内有效

package OO191226;public class VariableOverrideTest {private String name="ffidea";private static double price=78.8;public static void main(String[] args) {//局部变量覆盖成员变量int price=65;System.out.println(price);//用类名作为price变量的限定System.out.println(VariableOverrideTest.price);new VariableOverrideTest().info();}public void info() {String name="孙悟空";System.out.println(name);System.out.println(this.name);}
}

局部变量时存在相应的方法栈中的

规则:局部变量→ 必须由程序员来赋值,系统【不会】对局部变量执行默认的初始化

规则:【局部变量不允许同名】即使是一个是【代码块内的局部变量】,一个是【方法内】局部变量也是不允许的

两个代码块中允许出现同名的局部变量

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

static的标志

注意:static就是一个标志,它标志着static修饰的方法或成员变量属于类而不属于实例。当static修饰的这个方法或者成员变量发生变化的时候,所有调用static修饰的方法或者变量都会受到影响

  1. static成员不允许访问非static成员;
  2. this使用、super都不允许出现在static中
  3. 当程序直接访问一个field,实际上也忽略:若field属于实例field,相当于省略了this;若field是类field相当于省略了类名
  4. 静态成员不能访问非静态成员

【Java】5.3 成员变量和局部变量相关推荐

  1. java中的成员变量和局部变量的区别_java中成员变量与局部变量区别分析

    本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 public class Person { ...

  2. Java笔记:成员变量,局部变量,类变量,实例变量以及注意事项

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

  3. [JAVA基础] 成员变量和局部变量(一看就懂的总结归纳篇)

    引言 成员变量和局部变量在每种编程语言中都有涉及,如果之前了解过其他语言的成员变量或者局部变量,那么在学习java中的成员变量和局部变量时可以看看有那些联系和不同,这一块的东西也不能说难,如果第一次接 ...

  4. java include 传递对象_变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)...

    变量的值传递,地址引用(和对象成员变量.局部变量创建和初始化的内存机制) 变量的值传递,地址引用: 搞懂=含义,=即指向,看指向的内存块是否发生改变,还有是否是新内存块, 通过指向可以控制内存块的值. ...

  5. java 线程---成员变量与局部变量

    关于成员变量与局部变量: 如果一个变量是成员变量,那么多个线程对同一个对象的成员变量进行操作时,他们对该成员变量是彼此影响的(也就是说一个线程对成员变量的改变会影响到另一个线程) . 如果一个变量是局 ...

  6. Java高阶部分知识点汇总(一)- 成员变量与局部变量详讲

    前言 在Java语言中,根据定义变量的位置不同,可以将变量分为两大类:成员变量与局部变量.而两者的运行机制也存在着较大的差异,本篇文章将详细介绍这两种变量的运行差异. 一.成员变量 成员变量指的是类范 ...

  7. 第14天学习Java的笔记(成员变量和局部变量)

    一个对象的内存图 package Demo1302;/** 定义一个类,用来模拟"手机"事物.** 属性:品牌.价格.颜色* 行为:打电话.发短信** 对应到类中:* 成员变量(属 ...

  8. Java 成员变量和局部变量

    成员变量:在类中定义,用来描述对象将要有什么,可被本类,有关系的其他类使用 局部变量:在类的方法中定义,在方法中临时保存数据,只能被当前类使用 区别:1.作用域不同   局部变量的作用域仅限于定义它的 ...

  9. java静态局部变量_java中成员变量,局部变量,静态变量的辨析

    转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...

  10. 成员变量与局部变量 java 1613807617

    成员变量与局部变量 java 1613807617 关于 成员变量,类的内部,方法的外部 局部变量,方法的内部 区别

最新文章

  1. 介绍一个好用的工具类库commons-beanutils
  2. 二十五:设计模式的总结
  3. html点击散点图的点显示一个文本,javascript – D3.js中的简单散点图示例?
  4. Windows纸牌×××式计分法
  5. activemenu怎么拼 vue_Vue-el-menu使用,点击按钮跳转指定页面
  6. 简单线性回归(Simple Linear Regression)和多元线性回归(Multiple Regression)学习笔记
  7. 阿里云杨敬宇:四层技术构建基于城市场景的边缘计算
  8. 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线
  9. Swift - 05 - 数值型字面量
  10. python基础教程第三版-《Python基础教程第三版》原版中英文PDF+代码+袁国忠(译)...
  11. tensorflow基础:tf.data.Dataset.from_tensor_slices() 与 tf.data.Dataset.from_generator()的异同
  12. Linux:configure: error: OpenSSL libcrypto not found
  13. uni-app 表单验证
  14. 微信小程序下载word,excel,doc,pdf并打开预览并可以转发收藏
  15. chrome调试js
  16. 冰与火之歌 《权力的游戏》
  17. 移动端字体排版设计准则
  18. python拆分excel文件
  19. CCF系列题解--2016年12月第三题 权限查询
  20. opencart修改后台文件夹名

热门文章

  1. xpool, cpool,epoo
  2. dede_arctype|栏目表
  3. chrome经常崩溃解决过程
  4. 在ListBox中添加ToggleButton(有IsChecked属性)
  5. Gentoo - X11 forwarding request failed on channel 0
  6. STM32F103C8T6
  7. 华为第四代服务器芯片Hi1620,华为第四代自研芯片Hi1620曝光, 全球首款7nm的ARM处理器...
  8. 计算机电路基础学什么,"计算机电路基础"学习辅导.doc
  9. cmake (4)多个子目录
  10. C++ Primer 5th笔记(7)chapter7 类:构造函数、类类型转换、聚合类