变量的就近原则

news/2024/7/5 19:28:08

就近原则(Principle of Proximity)-把相关的操作放在一起,例如让注释靠近它所描述的代码,让控制循环的代码靠近循环本身等。变量的就近原则指尽可能在靠近第一次使用变量的位置声明和定义该变量。就近原则实际上也是变量的作用域最小化的一种实现手段。过早地声

明局部变量不仅会使它的作用域过早地扩展,而且结束得也过于晚了。局部变量的作用域从它被声明的点开始扩展,一直到外围块的结束处。如果变量在“使用它的块”之外被声明的,当程序退出该块之后,该变量仍是可见的。如果变量在它的目标使用区域之前或之后被意外地使用的话,后果将可能是灾难性的。

public class Test {
    String name="Tom";   //成员变量
    public Test(String name){
        name = name;
    }
    public static void main(String [] args){
        Test t = new Test("Jack");
        System.out.println(t.name);
    }
  }

形参和成员变量重名,根据变量使用的就近原则,会访问到成员变量,所以会输出 Tom

解决方法:通过this引用成员变量,将局部变量赋值给成员变量   所以会输出  Jack

转载于:https://www.cnblogs.com/assistants/p/9524463.html


http://www.niftyadmin.cn/n/4557333.html

相关文章

映射操作,删除,修改,迭代处理条目

要创建一个Employee类,用于存储实例化的键值。 package com.yt.map; import java.util.*;/* This program demonstrates the use of a map with key type String and value type Employee. 这是一个映射操作。 1.先将键/值添加到映射中 2.删除一个映射的值 3.修改一…

帮忙看看我C语言求阶乘的程序错在哪

建议你去看谭浩强的《C语言程序设计 》 %ld" &n);while(i<n)/*分号去掉{ss*i;i;}printf("%d 24 n &s);} 答案补充 printf("%d 那就太大了源程序如下&#xff1a;#include <stdio.h>void main(){int n &n);while(i<n){ss*i;i;}printf(&q…

性能测试开始前必知知识点

1、什么是GPU&#xff0c;主要用来做什么&#xff1f; 解释&#xff1a;图形处理器&#xff08;英语&#xff1a;Graphics Processing Unit&#xff0c;缩写&#xff1a;GPU&#xff09;&#xff0c;又称显示核心、视觉处理器、显示芯片&#xff0c;是一种专门在个人电脑、工作…

关于C#的Hook技术问题

思路可以这样 在DLL里面 1&#xff09;用SetProp函数将C#写的一个窗口设置成特别的属性 否则要通过C写DLL 然后用SendNotifyMessage函数将该信息发送给特定属性的托管窗口 ||| static LRESULT CALLBACK ShellHookCallback(int code "FLAG_WND" 比如&#xff1a; SetP…

boost库checked_delete的使用

在查看boost库时发现一个小文件checked_delete.hpp里面几个小函数&#xff0c;它的作用用很简短的话来说&#xff1a;防止未定义的行为造成delete时的内存泄露。实现如下&#xff1a; template<class T> inline void checked_delete(T * x) {// intentionally complex - …

The ODBC resource dll is a different version than the ODBC setup dll

不用上面那麽复杂 到系统里面INSFOTE 的文件修改路径 ||| 看来是你的安装程序版本不一致呀 或者你改路径 D:/ 然后重新安装 所以建议你前提就是删除你C盘数据库 你重复安装数据库了 原因只有一个 你直接到C:盘下直接删除原来德数据库2000 建议最好是重装一下安装程序 弄一个高版…

JFrame的简例。JFrame扩展于AWT的Frame类,JFrame是Swing的组件。Swing是AWT的升级版本。

package tz.yt.simpleframe; import java.awt.*; import javax.swing.*; /** Frame的扩展类&#xff0c;JFrame扩展于Frame是Swing组件之一。Swing是Frame的升级版。不依赖于平台底层实现。解释&#xff1a;1.EventQueue.invokeLater//EventQueue事件队列类&#xff0c;不依赖硬…

求下载地址 vista系统用什么c语言的软件才会兼容

答案补充 Borland C Builder V6.0比较大 但是Borland C Builder V6.0可以 没有完全兼容vista系统的VC6.0 目前为止 如果是VC6.0的话 可以兼容 到迅雷的搜狗下载吧 我有 不影响使用 ||| 下载一个vs2008吧 答案补充 哦 我用了 看看行不行 我给你发过去 留个邮箱给我 搜vs2008就会…