信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 2352|回复: 1
打印 上一主题 下一主题

[『 Java 图文教程』] Java传递引用类型的实质和多方法实例教程

[复制链接]

65

主题

176

帖子

1557

积分

积分
1557
跳转到指定楼层
宣传软件楼主
发表于 2016-9-27 14:24:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:Java 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件初级教程 

软件教程发布日期:2016-09-27

软件教程关键字:Java传递引用类型

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
首先看java代码如下:

import java.util.Scanner;

import org.junit.Test;

public class TestCoreJava {

@Test

public void testString() {

String original = "原来的值";

modifyA(original);

System.out.println(original);

StringBuffer sb = new StringBuffer();

sb.append(original);

modifyObject(sb);

System.out.println(sb.toString());

}

public void modifyA(String b) {

b = "改变的值";

}

public void modifyObject(StringBuffer object ) {

String b = "改变的值";

StringBuffer sb1 = new StringBuffer();

sb1.append(b);

//object.append(b); 在object指向的引用没改变之前,调用append方法对其指向的堆内存中内容进行修改,是可以达到修改原始StringBuffer对象sb的存放内容这个目的的。

object = sb1;

}

}

  说明:除开八种基本类型之外,在java中其余类型都是引用类型,包括String也是引用类型,传递的也是引用。

我原以为,既然传递的是引用,那么String对象original交由方法modifyA处理后,original存放的值应该变为“改变的值”

同样StringBuffer对象sb存放的值也应该改变成“改变的值”,但是结果却没有,输出都为“原来的值”,然后我就怀疑是否他们传递的不是引用

原来:modifyA(String b)方法在被调用时,original传递给该方法,该法是创建了一个新的String对象b,它也将引用指向original对象指向的那块

堆内存。而我在modifyA方法中使用语句:b = "改变的值";该语句并不能够到达改变original对象的目的,他紧紧将b对象的引用地址改为指向“改变的值”

这个对象所在的堆内存。所以original对象还是指向原来的堆内存,当然他的输出结果不变,同样的问题对StringBuffer对象sb也存在。

  所以可以看出,没有到达期望结果的原因是使用“=”赋值运算符,他修改了副本对象(被调用方法自己创建的中间对象,比如modifyA方法创建的b)的引用地址,

使他指向了不同的堆内存(这对原始的对象内容是没有影响的),而没有实际修改他指向的堆内存中具体值导致的意外。

所以 modifyObject方法中那条被注释语句可以达到修改原始内容的目的.



unto浅谈Java读取Csv实践和多方法实例教程演示next信息发布软件用哪个好呢
回复

使用道具 举报

65

主题

176

帖子

1557

积分

积分
1557
信息发布软件沙发
 楼主| 发表于 2016-9-27 14:26:23 | 只看该作者
实例教程2

加深对基本类型和引用类型的理解;
【效果图】 Java传递引用类型的实质和多方法实例教程 b2b软件
【分析】
  • 参见最后的【参考资料】【解决方案】

【代码】 public void test() throws Exception {
        System.out.println("\nint:=================");
        int i = 2;
        System.out.println("before:" + i);
        change1(i);
        System.out.println("after:" + i);

        System.out.println("\nInteger:=================");
        Integer integer = 3;
        System.out.println("before:" + integer);
        change2(integer);
        System.out.println("after:" + integer);

        System.out.println("\nString:=================");
        String str = new String("xxx");
        System.out.println("before:" + str);
        change3(str);
        System.out.println("after:" + str);


        System.out.println("\nString[]:=================");
        String[] array = new String[]{"a", "b", "c"};
        System.out.println("before:" + array[0]);
        change4(array);
        System.out.println("after:" + array[0]);

        System.out.println("\nBook:=================");
        Book book = new Book("book1");
        System.out.println("before:" + book.name);
        change5(book);
        System.out.println("after:" + book.name);

        System.out.println("\nint[]:=================");
        int[] int_array = new int[]{1, 2, 3};
        System.out.println("before:" + int_array[0]);
        change6(int_array);
        System.out.println("after:" + int_array[0]);
    }


    public void change1(int i) {
        i = 4;
    }

    public void change2(Integer integer) {
        integer = (Integer) 8;
    }

    public void change3(String str) {
        str = new String("yyy");
    }

    private void change4(String[] array) {
        array[0 = "A";
    }

    private void change5(Book book) {
        book.name = "book2";
    }

    private void change6(int[] int_array) {
        int_array[0 = 10;
    }

    private class Book {
        public String name;

        Book(String name) {
            this.name = name;
        }
    }

【参考资料】
  • java到底是值传递还是引用传递? (其中“三:调用方法时发生了什么?”讲的很清晰)
    file:///C:/Users/Lou/Documents/My%20Knowledge/temp/ef8ebd47-5d9c-439f-a076-099ab2f4f6de_4_files/a1cd73ce-0ff3-45de-a06d-9fa0918bf9dc.png Java传递引用类型的实质和多方法实例教程 b2b软件
  • Java之基本类型和引用类型、引用传递和值传递、“==”和equals()
  • java 中 Integer 传参方式的问题,不是说Integer是引用传递么?但为什么不会改变it
    file:///C:/Users/Lou/Documents/My%20Knowledge/temp/ef8ebd47-5d9c-439f-a076-099ab2f4f6de_4_files/2268a9db-dbe3-4270-a3a5-a531b3d8a2f4.png Java传递引用类型的实质和多方法实例教程 b2b软件 Java传递引用类型的实质和多方法实例教程 b2b软件
    file:///C:/Users/Lou/Documents/My%20Knowledge/temp/ef8ebd47-5d9c-439f-a076-099ab2f4f6de_4_files/a8cfde6d-9934-497a-8798-3725128d53c3.png
  • String 和 Integer 传递给方法时到底是不是传递引用??!!
    When the argument is of reference type, pass-by-value means that the method cannot change the object reference, but can invoke the object's methods and modify the accessible variables within the object.
    当参数是引用类型时,你能通过调用该引用所指向的对象本身的方法来改变对象自身,但是,你并不能改变该引用。(你改变的只能是引用所指向的对象,而不是引用。所以,仍然是值传递。)
  • JAVA 值传递还是引用传递
    不管你传的是什么,传过去的都只是一个副本而已,这个副本作为方法的局部变量保存在栈中。
    如果传的是基本数据类型,修改这个值并不会影响作为参数传进来的那个变量,因为你修改的是方法的局部变量,是一个副本。
    如果传的是一个对象的引用,也是一样的,也是一个副本,但是这个副本和作为参数传进来的那个引用指向的是内存中的同一个对象,所以你通过这个副本也可以操作那个对象。但是如果你修改这个引用本身,比如让他指向内存中的另外一个对象,原来作为参数传进来的那个引用不会受到影响。
    我觉得弄明白这些就行了,说值传递或引用传递都无所谓,但是说值传递更适合一些,这个值可以是引用也可以是基本数据类型。



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件🏯AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态
信息发布软件AIWROK苹果系统Map 数据管理[map]小结
AIWROK苹果系统Map 数据管理[map]小结 方法一:add(添加键值对)[/backcolor]方法二:delete(删除指定键值对)[/backcolor]方法三:clear(清空所有键值对)[/backcolor]方法四:get(根据键获取值)[/backcolor]方法五:getAllValue(获取所有值)[/backcolor]方法六:toString(转换为字符串)[/backcolor]完整示例:
信息发布软件AIWROK软件用图找图示例templateMat方法
AIWROK软件用图找图示例templateMat方法
信息发布软件苹果JS代码运行时[selfRunTime]小结
苹果JS代码运行时[selfRunTime]小结 方法一:stop 停止运行[/backcolor]方法二:runOnUIThread ui 线程中运行函数[/backcolor]
信息发布软件苹果系统专用H5创建一个绿色文件
苹果系统专用H5创建一个绿色文件
信息发布软件AIWROK软件技术分享苹果IOS系统获取外部IP
AIWROK软件技术分享苹果IOS系统获取外部IP

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-1-29 10:48 , Processed in 0.267823 second(s), 46 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表