`
qweer521775
  • 浏览: 5926 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类

在JAVA中遇见传递句柄时,遇到的别名问题

阅读更多
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实现获取窗口句柄.zip

    下面将详细解释如何在Java中实现获取窗口句柄及其相关的知识点。 首先,了解窗口句柄的含义。窗口句柄是操作系统分配给每个窗口的一个唯一标识符,通过这个标识符,程序可以对特定窗口进行操作,如移动、大小调整、...

    Java实现获取窗口句柄并操作窗口jna-4.4.0

    在Java中,直接操作窗口句柄通常是不可能的,但借助JNA,我们可以调用Windows API来实现这些功能。 首先,我们需要引入JNA库,可以在项目中添加jna-4.4.0.jar依赖。这个版本的JNA包含了对多种操作系统API的支持,...

    Java调用Win32获取窗口句柄JNative-1.3.2

    Java调用Win32 API获取窗口句柄是一个跨平台编程中的常见需求,特别是在需要与操作系统进行深度交互的应用中。JNative库是实现这一目标的一种工具,它允许Java代码通过JNI(Java Native Interface)来调用C/C++编写...

    jni 获得java窗口句柄的C语言源代码

    在某些场景下,我们需要通过 JNI 调用来获取 Java 窗口的句柄,这在开发跨平台应用程序时非常有用。例如,我们需要与操作系统底层交互或使用特定于平台的功能时。 #### 二、JNI 获取 Java 窗口句柄的背景 在 Java ...

    C#传递主窗体句柄并在子窗体调用其函数改变其控件的例子

    本程序是完整的项目文件,在VS2008下运行成功,程序功能:通过传递主窗体句柄,然后打开子窗体,在子窗体中可对主窗体的控件或函数进行操作,改变其控件属性 ,调用主窗体的函数,(注:在调用前要修改主窗体被调用控件或函数...

    C#解决“创建窗口句柄时出错”异常

    标题中的"C#解决‘创建窗口句柄时出错’异常"指的是在使用C#编程时遇到的一个常见问题,即在创建窗口或者控件时遇到了错误,导致无法成功创建窗口句柄(HWND)。这个问题通常与Windows API的交互有关,因为创建窗口...

    在页面路由中实现文件句柄传递,可以完成在另一个页面实现文件内容添加

    在vue开发时需要在页面跳转的时候传递文件句柄,又不想用vuex来传递,因为vuex使用有些大材小用,说以用mitt,也就是vue2的eventbus。vue3没有eventbus,所以使用mitt,来传递文件句柄,在另一个页面就可以拿到文件...

    使用JNA获取窗口句柄,并发送消息

    在Java编程环境中,有时我们需要与操作系统底层交互,这时Java Native Access (JNA) 就派上了用场。JNA提供了一种无需编写C代码或使用JNI(Java Native Interface)即可调用操作系统API的方法。本话题将详细介绍如何...

    查看句柄查看句柄查看句柄

    在IT领域,"句柄"是一个非常重要的概念,尤其是在操作系统、编程和系统分析中。句柄是操作系统分配给进程、线程、文件、设备驱动、窗口等资源的一个唯一标识符,它允许应用程序通过这个标识来访问和操作这些资源。本...

    第12章 传递和返回对象.pdf

    根据标题"第12章 传递和返回对象.pdf"和描述,本章主要探讨了Java中对象作为参数传递时的行为,特别是关于句柄、别名问题以及对象副本的制作。 首先,我们要明白在Java中,对象并不是直接被传递,而是对象的引用...

    Java方法句柄1

    总的来说,Java方法句柄提供了一种高效且类型安全的方式来处理方法调用,它与反射和`invokeDynamic`指令结合,为Java应用程序提供了强大的动态性,尤其在实现动态语言和高性能代码生成场景中显得尤为重要。

    读取其他程序句柄

    在IT行业中,句柄是一个非常重要的概念,尤其是在操作系统和编程领域。句柄是操作系统分配给对象(如进程、线程、窗口、文件等)的一个唯一标识符,它用于应用程序访问和操作这些对象。在Windows API中,句柄被广泛...

    句柄搜索 显示句柄

    在Windows操作系统中,句柄是一种标识符,用于唯一地引用系统中的对象,如进程、线程、窗口、文件、设备等。句柄是操作系统内部使用的32位或64位无符号整数,它不是对象本身,而是指向对象的数据结构的一个指针。...

    进程管理工具 可用来分析事件对象句柄

    在使用时,用户可以启动该工具,查看系统中的进程信息,并专注于与事件对象句柄相关的部分。通过这种工具,用户可以获取到更详细的诊断信息,从而对系统进行更深入的优化和故障排查。 总之,进程管理和事件对象句柄...

    窗口句柄浅析和获取窗口句柄的方法

    在Windows编程中,句柄(Handle)是一个至关重要的概念,它是操作系统用来唯一标识系统资源如窗口、内存块、文件、GDI对象等的一种抽象标识符。句柄并不是资源的实际地址,而是一个由操作系统分配的整数值,用于在...

    MFC 句柄的理解

    值得注意的是,句柄仅在其所属的进程中有效,跨进程传递句柄需要使用`DuplicateHandle()`函数,以确保安全性和正确性。 除了句柄,我们还需要了解进程ID。进程ID是系统分配给每个进程的唯一标识,它也是一个32位无...

    VC中获取窗口句柄的各种方法

    在Microsoft Visual C++ (VC) 开发环境中,窗口句柄(HWND)是Windows API中用于标识应用程序窗口的一个重要标识符。窗口句柄是系统分配的一个唯一整数值,它允许程序与特定窗口进行交互。本篇文章将详细介绍在VC中...

    java获取窗口句柄方法的JNI封装

    之前在做海康摄像头动态库的JNI封装中遇到了窗口句柄无法获得的问题,着实费了点功夫,现将封装好的动态库以及一个演示程序分享给大家,希望能帮大家省下点时间!!如果希望自己动手解决问题的同志可以自己上网查询...

    演示ClientSocket反复连接进程句柄数不变

    在IT行业中,网络编程是不可或缺的一部分,特别是在使用像Delphi这样的高级编程语言进行开发时。本文将深入探讨“演示ClientSocket反复连接进程句柄数不变”这个主题,以及如何解决由此引发的问题,如句柄数增加、...

    读任意软件窗口控件句柄

    在IT领域,窗口控件句柄是编程中的一个重要概念,特别是在Windows操作系统下的应用程序开发中。控件句柄(HWND)是系统分配给每个窗口或控件的一个唯一标识符,允许程序通过这个标识来操作和交互特定的用户界面元素...

Global site tag (gtag.js) - Google Analytics