这个坑,是时候填上了...

本文解析了一道关于Java中String类型参数传递的面试题,详细解释了为何修改方法内的String值不会影响原始变量。

一、背景

​ 这两天,在网上逛的时候,发现了如下的一道面试题,感觉还有蛮有意思的,要是不仔细看还真容易掉到坑里面。第一眼看起来比较绕,所以比较难理解。最终我跳出了这个坑,也想把这个跳坑的经历分享出来。题目如下 , 请问输出的是什么?为什么?

/**
 * @author hafiz.zhang
 * @description: 一个奇怪的现象
 * @date Created in 2018/7/2 22:44.
 */
public class Test {
    public static void main(String[] args) {
        String ermao = "a";
        String bb = addStr(ermao);
        System.out.println(ermao);
    }

    private static String addStr(String ermao) {
        ermao = ermao + "b";
        return ermao;
    }
}

二、结果及原因

​ 毫无疑问,这道题的答案是:a , 你答对了么?在讲解原因之前,让我们想了解一点基础知识吧:

1. 值传递还是引用传递

​ 我们都知道Java中在传递参数的时候,分为值传递和引用传递两种类型。当参数为基本类型(Java八大基本类型:int、short、float、double、long、boolean、byte、char)的时候,就是值传递,当参数为封装类型(非基本类型,如Integer、Long、Boolean等)的时候,就是引用传递了。

2. Java内存模型中的堆和栈

​ 从Java的底层机制来说,基本类型的变量存放在栈里,封装类型中,对象放在堆里,对象的引用放在栈里。Java在方法传递参数时,是将变量复制一份,然后传入方法体去执行。

3. 答案是 a 的原因

因为String类型在传递过程中的步骤如下:

  1. 虚拟机在堆中开辟一块内存,并存值”a”。
  2. 虚拟机在栈中分配给ermao一个内存,内存中存的是1中的堆地址。
  3. 虚拟机复制一份ermao,我们就叫ermao’好了,ermao和ermao’在栈中的内存不同,但此时存的值都是1的堆地址。
  4. 将ermao’传入方法addStr中。
  5. 方法体在堆中开辟一块新内存,并存值”ab”。
  6. 方法体将ermao’的值改变,存入5中新的堆内存地址。
  7. 方法结束,方法外打印ermao,由于ermao存的是1中分配的堆地址,所有打印结果还是”a”。

还不清晰?没关系,那我们直接上个图会不会来得更直观:

三、总结

​ 通过本文我们就理解了Java在方法传参的整个过程。其实还是上面那句比较重要的话: Java在方法传递参数时,是将变量复制一份,然后传入方法体去执行。
原文链接:https://www.imooc.com/article/40817
转载请注明出处,谢谢合作

基于TROPOMI高光谱遥感仪器获取的大气成分观测资料,本研究聚焦于大气污染物一氧化氮(NO₂)的空间分布与浓度定量反演问题。NO₂作为影响空气质量的关键指标,其精确监测对环境保护与大气科学研究具有显著价值。当前,利用卫星遥感数据结合先进算法实现NO₂浓度的高精度反演已成为该领域的重要研究方向。 本研究构建了一套以深度学习为核心的技术框架,整合了来自TROPOMI仪器的光谱辐射信息、观测几何参数以及辅助气象数据,形成多维度特征数据集。该数据集充分融合了不同来源的观测信息,为深入解析大气中NO₂的时空变化规律提供了数据基础,有助于提升反演模型的准确性与环境预测的可靠性。 在模型架构方面,项目设计了一种多分支神经网络,用于分别处理光谱特征与气象特征等多模态数据。各分支通过独立学习提取代表性特征,并在深层网络中进行特征融合,从而综合利用不同数据的互补信息,显著提高了NO₂浓度反演的整体精度。这种多源信息融合策略有效增强了模型对复杂大气环境的表征能力。 研究过程涵盖了系统的数据处理流程。前期预处理包括辐射定标、噪声抑制及数据标准化等步骤,以保障输入特征的质量与一致性;后期处理则涉及模型输出的物理量转换与结果验证,确保反演结果符合实际大气浓度范围,提升数据的实用价值。 此外,本研究进一步对不同功能区域(如城市建成区、工业带、郊区及自然背景区)的NO₂浓度分布进行了对比分析,揭示了人类活动与污染物空间格局的关联性。相关结论可为区域环境规划、污染管控政策的制定提供科学依据,助力大气环境治理与公共健康保护。 综上所述,本研究通过融合TROPOMI高光谱数据与多模态特征深度学习技术,发展了一套高效、准确的大气NO₂浓度遥感反演方法,不仅提升了卫星大气监测的技术水平,也为环境管理与决策支持提供了重要的技术工具。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值