一、变量根据所处的位置对应不同的名称

  • 变量处于不同的位置,有不同的名称
  • 名称分别是 
    • 字段,属性
    • 参数
    • 局部变量
  • 不同名称的变量,其作用域是不一样的

二、字段,属性,Field

  • 当一个变量被声明在类下面,该变量就叫做字段 或者属性成员变量Field
    • 比如如下代码中的变量i,就是一个属性。
      • 那么从第2行这个变量声明的位置开始,整个类都可以访问的到该变量
  • 所以其(字段、属性、成员变量、Field)作用域就是从其声明的位置开始的整个类

public class HelloWorld {

int i = 1;

int j = i;  //其他的属性可以访问I

public
void method1(){

System.out.println(i); //方法1里可以访问i

}

public
void method2(){

System.out.println(i); //方法2里可以访问i

}

}

三、参数

  • 如果一个变量,是声明在一个方法上的,就叫做参数
  • 参数的作用域即为该方法内的所有代码
  • 其他方法不能访问该参数
  • 类里面也不能访问该参数

public class HelloWorld {

public
void method1(int i){ //参数i的作用域即方法method1

System.out.println(i);

}

public
void method2(){

System.out.println(i); //method2 不能访问参数i

}

int j = i;  //类里面也不能访问参数i

}

四、局部变量

  • 声明在方法内的变量,叫做局部变量
  • 其作用域在声明开始的位置,到其所处于的块结束位置

public class HelloWorld {

public
void method1() {

int i  = 5;  //其作用域是从该行开始,到method1方法的右括号结束

System.out.println(i);

{            //子块

System.out.println(i); //可以访问i

int j = 6;//j的作用域在子块内部

System.out.println(j); //可以访问j

}

System.out.println(j); //不能访问j,因为其作用域在子块内,子块外无效

}

}

五、练习及答案

题目:

属性的作用域在方法中,参数的作用域也在方法中,如果属性和参数命名相同了的话? 那么到底取哪个值?

public class HelloWorld {

int i = 1; //属性名是i

public
void method1(int i){ //参数也是i

System.out.println(i);

}

public static
void main(String[] args) {

new HelloWorld().method1(5);

//结果打印出来是 1还是5?

}

}

官方答案:

输出是5,当访问的变量被多个作用域影响的时候,按照就近原则取

个人整理答案:

Java知识系统回顾整理01基础03变量06变量的作用域的更多相关文章

  1. Java知识系统回顾整理01基础03变量03字面值

    一.字面值定义 创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象.  给基本类型的变量赋值的 ...

  2. Java知识系统回顾整理01基础03变量02基本变量类型

    一.变量类型分类 一个变量的类型,决定了该变量可以包含什么样的值. Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字. 这八种基本类型分别是:  整型 (4种) 字符型 (1种) ...

  3. Java知识系统回顾整理01基础03变量07final关键字

    一.final赋值 final 修饰一个变量,有很多种说法,比如不能改变等等 准确的描述是 当一个变量被final修饰的时候,该变量只有一次赋值的机会 二.在声明的时候赋值 i已经被赋值为5,所以这里 ...

  4. Java知识系统回顾整理01基础03变量05变量命名规则

    一.命名规则 变量命名只能使用字母 .数字. $. _ 变量第一个字符 只能使用: 字母. $. _ 变量第一个字符 不能使用数字 注:_ 是下划线,不是-减号或者-- 破折号 int a= 5; i ...

  5. Java知识系统回顾整理01基础03变量04类型转换

    一.不同类型之间的数据可以互相转换,但是要满足一定的规则 二.数据类型转换规则 转换规则如图所示  精度高的数据类型就像容量大的杯子,可以放更大的数据 精度低的数据类型就像容量小的杯子,只能放更小的数 ...

  6. Java知识系统回顾整理01基础03变量01变量定义

    定义: 变量:用来命名一个数据的标识符 一.什么是变量? 用具体实例定义变量 变量的定义是: 用来命名一个数据的标识符 1949 这是一个数字,代表某年 如果要命名这个数字,在java里就会写成: i ...

  7. Java知识系统回顾整理01基础03变量09块

    一.定义 块:从{ 开始 到对应的} 结束,即一个块 public class HelloWorld { //类对应的块 public static void main(String[] args) ...

  8. Java知识系统回顾整理01基础03变量08表达式

    一.以 ; 结尾的一段代码,即为一个表达式 表达式是由变量.操作符以及方法调用所构成的结构.如下所示: int i = 5; System.out.println(5); 都是表达式 public c ...

  9. Java知识系统回顾整理01基础04操作符06三元运算符

    一.三元运算符 表达式?值1:值2 如果表达式为真 返回值1 如果表达式为假 返回值2 if语句学习链接:if语句 public class HelloWorld { public static vo ...

随机推荐

  1. source insight4工具栏还原

    source insight4工具栏不小心动了一下,位置全变了,强迫症犯了. 还原步骤. 1.关闭SI4 2.备份 C:\Users\用户名\Documents\Source Insight 4.0\ ...

  2. 遇到doxygen生成的chm文档目录如果有中文是乱码?

    原因不在于doxygen,它没有问题,问题出在微软的HTML Help Workshop的hhc.exe不支持utf8.所以要解决这个问题,需要做两个额外的步骤: 1.将html/index.hhp中 ...

  3. 设计模式(多个if的处理)

    使用场景 如果在代码中出现大量if判断,再执行一些比较复杂的业务操作,类似于以下情况. @Test void test() { String str = "A"; if (str. ...

  4. HashMap源码解析、jdk7和8之后的区别、相关问题分析(多线程扩容带来的死循环)

    一.概览 HashMap<String, Integer> map = new HashMap<>(); 这个语句执行起来,在 jdk1.8 之前,会创建一个长度是 16 的 ...

  5. 微信小程序实现滚动视频自动播放(未优化)

    先看看大概效果 1.首先需要了解微信API:          wx.createIntersectionObserver(Object component, Object options) 创建并返 ...

  6. C:把算术表达式分成Token

    代码: #include "stdafx.h" #include <stdio.h> #include <string.h> #include <st ...

  7. Java 根据两个经纬度,得到两点距离

    private static final double EARTH_RADIUS = 6371000;//赤道半径(单位m)private static final double INTEGR_NUM ...

  8. html基础:css样式1

    h't'm'l中用到css样式有三种方式: 1.在header中增加style标签,在style标签中写 2.用link标签引用css样式文件 3.在需要使用css样式的标签添加style属性 一.在 ...

  9. 【GDKOI2004】汉诺塔

    题目描述 古老的汉诺塔问题是这样的:用最少的步数将N个半径互不相等的圆盘从1号柱利用2号柱全部移动到3号柱,在移动的过程中小盘要始终在大盘的上面. 现在再加上一个条件:不允许直接把盘从1号柱移动到3号 ...

  10. W5300中文手册

    如果链接没了就Q我吧1178875532 链接:https://pan.baidu.com/s/1HcNJN_T6QJCvPWymU1sFDQ 提取码:suBB