Java零散知识点

1、Java是值传递的

① 对于基本数据类型short、int、long、float、double、char、byte、boolean这八种按值传递调用函数并不会改变在原函数中的值。

② 对于引用数据类型数组、类、接口按值传递的时候都是传递对象的地址,方法体内改变形参的引用,不会改变实参的引用,但有可能改变实参对象的属性值。

public class Demo {
    public static void main(String[] args) {

        //demo1
        String str = "hello";
        char[] chs = {'w','o','r','l','d'};
        change(str, chs);
        System.out.println(str + " " + new String(chs));
        //输出“hello World”

        //demo2
        StringBuffer sb = new StringBuffer("hello");
        change(sb);
        System.out.println(sb);
        //输出“hello world”
    }

    public static void change(StringBuffer sb) {
        sb.append(" world");
        //此处的sb与main方法中的sb指向同一个对象,改变了对象的内容 
    }

    public static void change(String str, char[] chs) {
        str.replace('h', 'H');
        //因为String的不可变性,此处str指向对象的内容没有发生变化
        //str = str.replace('h', 'H');
        //此处str指向内容为“Hello”的对象,不改变main方法中str的指向

        chs[0] = 'W';
        //此处的chs与main方法中的chs指向同一个对象,改变了对象的内容
    }
}
继续阅读“Java零散知识点”