java面试可能会遇到的基础题目(1)

1.java的int字节和位数    4个字节和4*8=32位

2.值传递和引用传递的区别 

先说一下形参和实参的区别

  1. 形参:方法被调用时需要传递进来的参数,如:fun(int a)中的a,它只有在fun被调用期间a才有意义,也就是会被分配内存空间,在方法fun执行完成后,a就会被销毁释放空间,也就是不存在了

  2. 实参:方法被调用时是传入的实际值,它在方法被调用前就已经被初始化并且在方法被调用时传入。

1、值传递

    在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。

2、引用传递

    引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。

举例说明:

    public class Rx {
        String str = new String("rx");
        int []  inta= {1, 2};
        public static void main(String[] args) {
            Example ex = new Example();
            ex.change(ex.str, ex.inta);
            System.out.println(ex.str + " and");
            System.out.println(ex.inta);
        }
        
        public void change(String str, int [] inta) {
            str = "ok";
            int [0] = 3;
        }
    }
3.数组和链表的区别

数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。最大的特点就是支持随机访问,但插入、删除操作也因此变得比较低

链表它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存,空间可扩容,比较常用的是单链表,双链表和循环链表。和数组相比,链表更适合插入、删除操作频繁的场景,查询的时间复杂度较高

发布了237 篇原创文章 · 获赞 235 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/LRXmrlirixing/article/details/104662047