首页 > 其他分享 >动手动脑——同名变量的屏蔽原则

动手动脑——同名变量的屏蔽原则

时间:2024-09-27 22:13:19浏览次数:7  
标签:outerVar 动脑 变量 作用域 同名 methodOne 屏蔽 定义

在Java中,变量的“同名变量的屏蔽原则”通常指的是变量作用域的问题。当在不同的作用域中定义了同名的变量时,内部作用域的变量会“屏蔽”外部作用域的变量。这意味着在内部作用域中访问该变量名时,将会访问到内部作用域中定义的变量,而不是外部作用域中的变量。
下面是一个简单的示例,展示了变量的屏蔽原则:
public class VariableShadowingExample {
int outerVar = 10; // 定义一个类变量

public void methodOne() {
    int outerVar = 20; // 定义一个方法变量,与类变量同名
    System.out.println("In methodOne, outerVar = " + outerVar); // 输出20
    methodTwo();
}

public void methodTwo() {
    int outerVar = 30; // 定义一个方法变量,与类变量和methodOne中的变量同名
    System.out.println("In methodTwo, outerVar = " + outerVar); // 输出30
}

public static void main(String[] args) {
    VariableShadowingExample v = new VariableShadowingExample();
    int outerVar = 40; // 定义一个局部变量,与类变量同名
    System.out.println("In main, outerVar = " + outerVar); // 输出40
    v.methodOne();
}

}
在这个示例中,我们定义了一个类变量outerVar,然后在methodOne方法中定义了一个同名的局部变量,接着在methodOne方法内部调用的methodTwo方法中又定义了一个同名的局部变量。最后,在main方法中也定义了一个同名的局部变量。
输出结果将会是:
In main, outerVar = 40
In methodOne, outerVar = 20
In methodTwo, outerVar = 30
从输出结果可以看出,每个作用域中的outerVar变量都屏蔽了外部作用域中的同名变量。

标签:outerVar,动脑,变量,作用域,同名,methodOne,屏蔽,定义
From: https://www.cnblogs.com/dynastyeast/p/18436687

相关文章

  • 9.25博客(动手动脑)
    四则运算importjava.util.Random;importjava.util.Scanner;publicclassArithmeticQuizGenerator{//主方法publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Randomrandom=newRandom();//用户可以选择生成题目......
  • 枚举类型的基本用法(动手动脑)
    仔细阅读示例:EnumTest.java,运行它,分析运行结果?代码如下:`publicclassEnumTest{publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //是原始数据类型吗? System.out.println(s.getCl......
  • Java动手动脑及课后实验
    一、仔细阅读示例:EnumTest.java,运行它,分析运行结果?你能得到什么结论?你掌握了枚举类型的基本用法了吗?publicclassEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;//s和t引用同一个对象?System.out.println(s==t);......
  • 9月24日课件之动手动脑
    在本次课件中有多个动手动脑作业,再次我逐一学习分析。一、首先是关于枚举的学习代码为,运行结果为。首先第一个运行结果显而易见的是false,第二个是因为枚举为类所以不是基本类型,在.isprimitive()中基本类型是返回true,类的话将会返回false。第三个是.valueof()会返回指定字符串......
  • 动手动脑 1
    publicclassEnumTest{publicstaticvoidmain(String[]args){ Sizes=Size.SMALL; Sizet=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t);// //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //从字符串中转换 Sizeu=Size.v......
  • 动手动脑——枚举类型
    publicclassEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;System.out.println(st);System.out.println(s.getClass().isPrimitive());Sizeu=Size.valueOf("SMALL");System.out.println(su);for(Sizevalue:S......
  • Android14 屏蔽ANR和Crash弹窗
    前言Android系统在应用发生Crash/ANR的时候,总会弹出一个提示对话框,但是现在部分客户不想要这样的对话框,要求移除一、ApplicationCrash表现:程序崩溃或闪退,界面上通常会出现“应用已停止运行”的提示。常见原因(Java异常):错误类型详细描述NullPointerException尝试在需要......
  • 利用Adguard屏蔽必应搜索中的CSDN内容
    原因众所周知,CSDN搜索结果,内容复制需要魔法,有的还需要关注,啥都要钱,质量还特别差虽然百度和必应可以写参数直接去除CSDN搜索结果,但每次都要写很麻烦解决办法安装AdGuard>进入设置>用户过滤器页面输入以下内容bing.com#?##b_results>li>div.b_tpcn>a>div.tpt......
  • VBA技术资料MF199:屏蔽单元格右键菜单复制剪切按钮
    我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解,从简单的入门、到入门后的提高、到数据库、到字典、到WordVBA的应用、到高级......
  • fastadmin: 避免引入页面同名js
    一,单个view中:写到方法最后fetch操作之前://列出所有新房publicfunctionlist(){...$config=$this->view->config;$config['jsname']='';$this->assign('config',$config);......