美文网首页java
Java 参数的传递、String 相关知识点

Java 参数的传递、String 相关知识点

作者: 一颗浪星 | 来源:发表于2020-12-24 17:46 被阅读0次

参数传递问题:

小伙伴们先看看以下代码,在心里写下自己的答案:

public class Base {

    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("hello");
        StringBuffer s2 = new StringBuffer("hi");
        test(s, s2);
        System.out.println("方法調用后s的值:" + s);
        System.out.println("方法調用后s2的值:" + s2);
    }

    static void test(StringBuffer s3, StringBuffer s4) {
        System.out.println("方法初始化時s3的值:" + s3);
        System.out.println("方法初始化時s4的值:" + s4);
        s4 = s3;
        s3 = new StringBuffer("new");
        System.out.println("第一步变化后s3的值:" + s3);
        System.out.println("第一步变化后s4的值:" + s4);
        s3.append("boy");
        s4.append("gril");
        System.out.println("第二步变化后s3的值:" + s3);
        System.out.println("第二步变化后s4的值:" + s4);

    }

}

执行结果为:

方法初始化時s3的值:hello
方法初始化時s4的值:hi
第一步变化后s3的值:new
第一步变化后s4的值:hello
第二步变化后s3的值:newboy
第二步变化后s4的值:hellogril
方法調用后s的值:hellogril
方法調用后s2的值:hi

以上代码摘录自以下链接,我觉得挺不错的,把参数的传递讲的很详细,一起看看呗。

https://blog.csdn.net/weixin_43030796/article/details/81974190?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

String 相关知识点:

同样的我们先来看一段代码:

public class Mytest {

    public static void main(String[] args) {
        String ss = "a";
        String s2 = ss + "b" + "c";

        String s1 = "a" + "b" + "c";
        String s3 = "abc";
        System.out.println((s1 == s2));
        System.out.println((s1 == s3));
        test(s3);
        System.out.println("main 里面的 hashCode :" + s3.hashCode());
    }

    private static void test(String s) {
        System.out.println("改变前 hashCode:" + s.hashCode());
        s += s;
        System.out.println("改变后的值:" + s);
        System.out.println("改变后 hashCode:" + s.hashCode());
    }
}

执行结果为:
false
true
改变前 hashCode:96354
改变后的值:abcabc
改变后 hashCode:-1424388928
main 里面的 hashCode :96354

如果和你想的答案不一样,可以先看看这篇文章:
https://www.iteye.com/topic/634530

当"+"两端均为编译期确定的字符串常量时,编译器会进行相应的优化,直接将两个字符串常量拼接好,所以:s1 == s3

而 s2 是在堆中生成新的对象,所以:s1 != s2

相关文章

  • Java 参数的传递、String 相关知识点

    参数传递问题: 小伙伴们先看看以下代码,在心里写下自己的答案: 执行结果为: 方法初始化時s3的值:hello方法...

  • 命令行参数和可变参数

    命令行参数 String[] args 数组 通过执行 java 运行配置传递参数: java HelloWorl...

  • JAVA是按值传递还是按引用传递

    java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? String和int参数传递是按值传递还是引用...

  • Java 参数传递问题

    Java参数传递 给出了基本类型和引用类型参数传递时行为的示例,并给出了String类型作为参数传递时表现出的和一...

  • Java学习记录--参数传递分析

    Java学习记录--参数传递分析 标签(空格分隔): java 今天做项目,发现了一个问题,当String作为参数...

  • java面试参数传递相关

    首先要知道如下几点: 在java里面对于方法的参数传递,不管是原生的数据类型还是引用类型,一律是值传递(PASS ...

  • C++中 string作为参数的传递(string类型的引用 )

    string的引用类型可以减少内存拷贝 /* string refer 在传递参数的时候,如果参数是string类...

  • String的参数传递

    前言 网上看的这篇博文把Java的参数传递已经讲得很清楚了。我用一道比较绕的题来理解一下String的参数传递。 ...

  • Java传参

    Java中传递参数,要么传递的是基本数据类型的值的副本,要么传递的是引用数据类型的引用(String类型属于引用数...

  • Java String相关知识点

    一、 String为什么是Final的 安全性1、因为不可变性可以保证线程安全。2、String很多功能都是依靠n...

网友评论

    本文标题:Java 参数的传递、String 相关知识点

    本文链接:https://www.haomeiwen.com/subject/yjimnktx.html