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 值传递的时候都是直接传递的是值,相当于把它们的值赋值给方法中的变量,所以再方法中改变它们的值并不能直接修改它们

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

  • 相关阅读:
    如何用Java编写一段代码引发内存泄露
    获取一天的开始时间和结束时间
    servlet,jsp,tomcat,jdk对应版本关系,如何查看jsp和servlet版本信息
    什么是元数据?
    什么是Device ID?
    如何查看移动设备标识码
    手机wifi的mac地址是什么??
    MD5摘要
    落地页和离线广告
    广告行业一些常用物料的尺寸
  • 原文地址:https://www.cnblogs.com/mauiie/p/4154233.html
Copyright © 2011-2022 走看看