public class test {
public void change(StringBuffer buffer1,StringBuffer buffer2,StringBuffer buffer3,StringBuffer buffer4)
{
buffer1=new StringBuffer("AA");
buffer2.append("BB");
buffer3=buffer1;
buffer4=buffer2;
buffer4.append("DD");
}
/**
* @param args
*/
public static void main(String[] args)
{
StringBuffer buffer1=new StringBuffer("aa");
StringBuffer buffer2=new StringBuffer("bb");
StringBuffer buffer3=new StringBuffer("cc");
StringBuffer buffer4=new StringBuffer("dd");
test test=new test();
test.change(buffer1, buffer2, buffer3, buffer4);
System.out.println("--1--"+buffer1);
System.out.println("--2--"+buffer2);
System.out.println("--3--"+buffer3);
System.out.println("--4--"+buffer4);
}
}
这是java中值传递过程中的别名问题,在调用方法的过程中 只是调用对象的句柄
*在方法里的buffer1在new 后已经是一个新对象(此时buffer3也是此句柄的别名),它生命周期在方法调用完毕已经结束所以打印的是初始化的buffer1
*在方法里 buffe4=buffer2 看似对buffer4的操作 但此时实际是进行了对buffer2所指向的操作,他们共同指向buffer2 所指向的地址
buffer4此时变成了buffer2的别名,
最后,你打出来的buffer4其实还是你以前开始初始化的那个 这样解释可以吗??希望学习O(∩_∩)O哈哈~
分享到:
相关推荐
下面将详细解释如何在Java中实现获取窗口句柄及其相关的知识点。 首先,了解窗口句柄的含义。窗口句柄是操作系统分配给每个窗口的一个唯一标识符,通过这个标识符,程序可以对特定窗口进行操作,如移动、大小调整、...
在Java中,直接操作窗口句柄通常是不可能的,但借助JNA,我们可以调用Windows API来实现这些功能。 首先,我们需要引入JNA库,可以在项目中添加jna-4.4.0.jar依赖。这个版本的JNA包含了对多种操作系统API的支持,...
Java调用Win32 API获取窗口句柄是一个跨平台编程中的常见需求,特别是在需要与操作系统进行深度交互的应用中。JNative库是实现这一目标的一种工具,它允许Java代码通过JNI(Java Native Interface)来调用C/C++编写...
标题中的"C#解决‘创建窗口句柄时出错’异常"指的是在使用C#编程时遇到的一个常见问题,即在创建窗口或者控件时遇到了错误,导致无法成功创建窗口句柄(HWND)。这个问题通常与Windows API的交互有关,因为创建窗口...
本程序是完整的项目文件,在VS2008下运行成功,程序功能:通过传递主窗体句柄,然后打开子窗体,在子窗体中可对主窗体的控件或函数进行操作,改变其控件属性 ,调用主窗体的函数,(注:在调用前要修改主窗体被调用控件或函数...
在某些场景下,我们需要通过 JNI 调用来获取 Java 窗口的句柄,这在开发跨平台应用程序时非常有用。例如,我们需要与操作系统底层交互或使用特定于平台的功能时。 #### 二、JNI 获取 Java 窗口句柄的背景 在 Java ...
在vue开发时需要在页面跳转的时候传递文件句柄,又不想用vuex来传递,因为vuex使用有些大材小用,说以用mitt,也就是vue2的eventbus。vue3没有eventbus,所以使用mitt,来传递文件句柄,在另一个页面就可以拿到文件...
在Java编程环境中,有时我们需要与操作系统底层交互,这时Java Native Access (JNA) 就派上了用场。JNA提供了一种无需编写C代码或使用JNI(Java Native Interface)即可调用操作系统API的方法。本话题将详细介绍如何...
根据标题"第12章 传递和返回对象.pdf"和描述,本章主要探讨了Java中对象作为参数传递时的行为,特别是关于句柄、别名问题以及对象副本的制作。 首先,我们要明白在Java中,对象并不是直接被传递,而是对象的引用...
总的来说,Java方法句柄提供了一种高效且类型安全的方式来处理方法调用,它与反射和`invokeDynamic`指令结合,为Java应用程序提供了强大的动态性,尤其在实现动态语言和高性能代码生成场景中显得尤为重要。
在IT行业中,句柄是一个非常重要的概念,尤其是在操作系统和编程领域。句柄是操作系统分配给对象(如进程、线程、窗口、文件等)的一个唯一标识符,它用于应用程序访问和操作这些对象。在Windows API中,句柄被广泛...
在Windows操作系统中,句柄是一种标识符,用于唯一地引用系统中的对象,如进程、线程、窗口、文件、设备等。句柄是操作系统内部使用的32位或64位无符号整数,它不是对象本身,而是指向对象的数据结构的一个指针。...
在使用时,用户可以启动该工具,查看系统中的进程信息,并专注于与事件对象句柄相关的部分。通过这种工具,用户可以获取到更详细的诊断信息,从而对系统进行更深入的优化和故障排查。 总之,进程管理和事件对象句柄...
在Windows编程中,句柄(Handle)是一个至关重要的概念,它是操作系统用来唯一标识系统资源如窗口、内存块、文件、GDI对象等的一种抽象标识符。句柄并不是资源的实际地址,而是一个由操作系统分配的整数值,用于在...
值得注意的是,句柄仅在其所属的进程中有效,跨进程传递句柄需要使用`DuplicateHandle()`函数,以确保安全性和正确性。 除了句柄,我们还需要了解进程ID。进程ID是系统分配给每个进程的唯一标识,它也是一个32位无...
在Microsoft Visual C++ (VC) 开发环境中,窗口句柄(HWND)是Windows API中用于标识应用程序窗口的一个重要标识符。窗口句柄是系统分配的一个唯一整数值,它允许程序与特定窗口进行交互。本篇文章将详细介绍在VC中...
之前在做海康摄像头动态库的JNI封装中遇到了窗口句柄无法获得的问题,着实费了点功夫,现将封装好的动态库以及一个演示程序分享给大家,希望能帮大家省下点时间!!如果希望自己动手解决问题的同志可以自己上网查询...
在IT行业中,网络编程是不可或缺的一部分,特别是在使用像Delphi这样的高级编程语言进行开发时。本文将深入探讨“演示ClientSocket反复连接进程句柄数不变”这个主题,以及如何解决由此引发的问题,如句柄数增加、...
在IT领域,窗口控件句柄是编程中的一个重要概念,特别是在Windows操作系统下的应用程序开发中。控件句柄(HWND)是系统分配给每个窗口或控件的一个唯一标识符,允许程序通过这个标识来操作和交互特定的用户界面元素...
资源句柄在Windows编程中扮演着关键角色,它是系统分配给每个资源的一个唯一标识符。当你创建一个窗口、打开一个文件或加载一个图标时,Windows都会返回一个句柄,这个句柄随后可以用于执行特定的操作,例如改变窗口...