电子商务网站建设的要素网站站长是什么
2026/4/18 13:35:34 网站建设 项目流程
电子商务网站建设的要素,网站站长是什么,计算机网络设计,做电脑租赁网站一、 就近原则1. 什么是就近原则#xff1f;当你在代码中使用一个变量名时#xff0c;Java 编译器需要确定你到底指的是哪一个变量。它的查找规则非常简单粗暴#xff1a;谁离我近#xff0c;我就用谁。具体的查找顺序是#xff1a;先找局部范围#xff1a;看看当前方法当你在代码中使用一个变量名时Java 编译器需要确定你到底指的是哪一个变量。它的查找规则非常简单粗暴谁离我近我就用谁。具体的查找顺序是先找局部范围看看当前方法或代码块里有没有定义这个变量如果有就直接用。再找成员范围如果局部没找到再去类的成员变量属性里找。2. 问题来了命名冲突Shadowing在实际开发中为了让代码可读性更高我们通常把方法的参数名起得和成员变量名一模一样。比如成员变量叫namesetName方法的参数也叫name。Javapublic class Person { String name 林黛玉; // 成员变量在整个类中有效 public void sayHello(String name) { // 局部变量只在方法内有效假设传入 贾宝玉 // 这里的 name 到底是谁 // 根据“就近原则”这里的 name 指的是参数局部变量 System.out.println(你好我是 name); } }结果输出 “你好我是贾宝玉”。尴尬的情况如果你想在方法里打印出成员变量 “林黛玉”在不使用this的情况下你是做不到的。因为局部变量name把成员变量name给遮蔽了。二、this关键字为了解决上面的尴尬Java 提供了this关键字。1.this的本质字面意思这个。程序含义代表当前对象的引用地址。通俗理解谁调用了这个方法this就代表谁。2.this如何解决就近原则的冲突只要在变量名前面加上this.就强制告诉编译器“别找局部的了直接去堆内存里找当前对象的成员变量”我们修改上面的代码Javapublic class Person { String name 林黛玉; public void sayHello(String name) { // 传入 贾宝玉 // 1. 不加 this - 就近原则 - 使用局部变量 System.out.println(name); // 输出贾宝玉 // 2. 加上 this - 指向对象 - 使用成员变量 System.out.println(this.name); // 输出林黛玉 } }三、 实战应用标准的 Setter 方法这也是this最常见的使用场景。在封装时为了让参数名见名知意我们通常会写成这样Javapublic class Student { private int age; // 成员变量 // 标准的 setter 方法 public void setAge(int age) { // 局部变量 // 这里的赋值意图是把传进来的参数 age赋值给对象的属性 age // age age; // ❌ 错误写法这是把局部变量赋值给它自己成员变量根本没变。 this.age age; // ✅ 正确写法 // 左边 (this.age)对象的成员变量 // 右边 (age)方法传进来的参数 } }四、 深入理解内存图解为了让你更透彻地理解我们可以从内存角度看成员变量this.age存在于堆内存 (Heap)中跟着对象共存亡。局部变量age存在于栈内存 (Stack)中方法执行完就消失了。this其实就是堆内存中那个对象的内存地址。代码验证Javapublic class Demo { public void printThis() { System.out.println(this); } public static void main(String[] args) { Demo d1 new Demo(); System.out.println(d1); // 打印 d1 的地址 d1.printThis(); // 打印 method 里的 this } }输出结果你会发现两行打印出的地址一模一样。这就证明了this就是当前对象d1。五、 总结概念核心规则/含义口诀就近原则变量名冲突时优先使用离得最近的局部变量。谁近用谁this 关键字代表当前对象的引用地址。用于区分成员变量和局部变量。加了 this 就是找成员什么时候必须用 this当方法参数和成员变量重名时为了给成员变量赋值必须使用 this。如果不重名this 可以省略但为了规范有时候也会写上。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询