先上一段代码
public class Test{
public static void main(String[] args) {
String a = "1";
a(a);
}
public static void a(Object o) {
b(o);
c(o);
}
public static void b(Object o) {
Integer a = 2;
o = a;
}
public static void c(Object o) {
System.out.println(o);
}
}
打出结果为 1
为什么这样,其实在b方法里面我们对o指定了一个全新的对象,但是请注意这个对引用的赋值的作用域仅限于在b方法内部,不会改变调用B方法传入的参数的值,但是如果b方法改为如下内容的时候:
public static void b(Object o) {
o = "2";
}
则打印出的结果是 2
也就是说在方法传值的时候对引用的改变仅限于内容的改变,如果对其引用的地址做出改变的话对外部是没有任何作用的,可能有点绕,但是我相信你懂得。
但是现实中,特别是AOP中,我们往往是要对主方法中的值做一些处理,但是不希望切面的实现者变更它的引用该如何做呢,这个时候就要用到强大final关键字了。
public static void b(final Object o) {
o = "2";
}
这样的。
一旦写成:
public static void b(final Object o) {
Integer a = 2;
o = a;
}
那么连编译都通不过的。
呵呵,在类里面定义final的字段的时候也是一样的道理,今天写代码的时候遇到这个问题,只是一个小细节,拿出来分享一下。
分享到:
相关推荐
函数进行参数传递,是在栈空间里为形参分配空间,并将计算各个实参的表达式的值,然后一一拷贝给形参的过程。 根据函数的参数传递的不同,函数调用可以分为函数的值传递调用(传值调用)、函数的指针传递调用(传址...
php代码-参数作用域
比如对作用域来说。 大家都知道一个变量的作用域(scope)是程序中定义这个变量的区域。全局(global)变量的作用域是全局性的,在javascript中,它的存在都有定义。而在函数之内声明的变量,就只在函数体内部有定义。...
动态作用域的优点是可以实现函数的动态调用和参数传递。例如: function add(x, y) { return x + y; } function multiply(x, y) { return x * y; } function compute(x, y, operation) { return operation(x, y)...
JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本语言,用于生成动态网页。在JSP中,九个内置对象是指不需要预先声明就可以在脚本代码和表达式中使用的对象,这些对象都是javax...
jsp九大内置对象和四大作用域详解 jsp中的九大内置对象和四大作用域是jsp编程中非常重要的概念,它们提供了访问和操作服务器端资源的能力,帮助开发者快速构建动态Web应用程序。 一、request对象 request对象代表...
Linux下DHCP多作用域的设计与实现 本文主要介绍了在Linux系统下实现DHCP多作用域的设计与实现。随着互联网信息技术的发展,公司的业务规模也在不断扩大,员工的数量越来越多,公司的信息中心决定扩展到两个网段来...
参数传递与作用域PPT学习教案.pptx
Python 之嵌套作用域 Python 之嵌套作用域是指在 Python 语言中,函数可以嵌套定义,并且每个函数都有其自己的作用域。在这个作用域中,变量的名称是唯一的,但在不同的函数中,可以有相同的变量名称,不会相互影响...
1.10-函数的参数和变量的作用域
3.8 函数参数与变量的作用域(ppt)
作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。讲到这里,首先理解两个概念:块级作用域与函数作用域。 什么是块级作用域呢? 任何一对花括号({和})中的语句集都属于...
主要介绍了Python中函数的参数与作用域,是Python入门学习中的基础知识,需要的朋友可以参考下
3.8 函数参数与变量的作用域(ppt)
jsp中的request.getParameter(参数名):接受客户端的数值,而request是jsp的内置对象
RequestMap,SessionMap,ApplicationMap, AttributeMap. struts提供两种方式访问session,request ,response,ActionContext 使用。 获得作用域及参数响应对象及三种符号说明
详细的WCDMA无线网络参数介绍,相当于一部参数字典,包括参数名称、界面名称、参数说明、参数作用域、取值范围、配置原则、缺省值等等。