zoukankan      html  css  js  c++  java
  • java 几个面试知识点的总结与复习

    一、关于java中的值传递

    在java中向方法传递参数的时候无论传递的是原生类型参数还是引用类型的的参数都是值传递!java中没有引用类型的传递!

    对于原生类型来说它们的存储地址是再栈内存(stack)里面的,而引用类型的对象的存储地址则是存储再堆内存(heap)中。

    方法中的局部变量的使用的时候实际上压栈的操作,而栈则是先进先出的数据结构,方法调用完之后就会从栈内存中弹出该地址的变量。

    对于原生数据类型的传递的是原生数据类型的值,引用类型的对象传递的是addressValue(对象的地址)

    public class Example {
        private String str = new String("goodsss");
        private Integer i = 22;
        private int aa = 0;
        
        private char[] ch = {'a','b','c'};
        private Stu s = new Stu(111111);
        
        public static void main(String[] args) {
            Example e = new Example();
            e.change(e.str,e.ch,e.i,e.aa,e.s);
            System.out.println(e.str);
            System.out.println(e.ch);
            System.out.println(e.i);
            System.out.println(e.aa);
            System.out.println(e.s.aaa);
        }
        private void change(String striii,char[] chaaa,Integer aaaaai,int a,Stu s){
            striii = "good";
            aaaaai=26;
            chaaa[0] = 'g';
            aa = 11;
            s.aaa = 9999;
        }
    }
    
    class Stu {
        public Stu(int aa){
            this.aaa=aa;
        }
        public int aaa ;
    }

    输出结果:

    goodsss
    gbc
    22
    11
    9999

     由上面的例子可以看出 基本数据类型和String 值传递的时候都是直接传递的是值,相当于把它们的值赋值给方法中的变量,所以再方法中改变它们的值并不能直接修改它们

    引用对象值传递的时候传递的是引用的地址值,可以改变方法里的地址值指向的对象,就等于改变了原来地址指向的对象。

  • 相关阅读:
    ORA-01045: user XXZY lacks CREATE SESSION privilege; logon denied
    ORA-31626:作业不存在 ORA-31633:无法创建主表"XXX.SYS_IMPORT_FULL_05"
    HTTP 错误 401.3
    mysql 简单游标
    mysql 多重游标嵌套
    表单校验 “灰白字提示”
    Eclipse连接mysql数据库出现问题
    虚拟机无法使用桥接,没有未桥接网络适配器解决办法
    每周进度条(16)
    人月神话阅读笔记06
  • 原文地址:https://www.cnblogs.com/mauiie/p/4154233.html
Copyright © 2011-2022 走看看