10 Java参数传递机制及其他

1. Java传入值和引用的区别(Java的参数传递机制)?
  • 如果传递的参数是基本数据类型,那么传入的是这个参数的一个副本,这个副本保存的就是原变量的值,改变副本不影响原变量。
  • 如果传递的参数是引用数据类型,那么传递的也是这个参数的一个副本,但是副本的值是一个对象的内存地址,如果对这个内存地址中的对象进行修改,就会影响原变量。如果改变了这个副本的值,也就是将副本的值修改为另一个对象的内存地址,这时不会影响原变量。
2. Java四种修饰符的访问权限

在这里插入图片描述

3. Java中的序列化和反序列化
  • 序列化:把对象转换为可保存和传输的字节序列。
  • 反序列化:把字节序列恢复为对象。
  • 一个对象只有实现了 Serializable 序列化接口,它的对象才能被序列化。这个接口里其实什么内容都没有,它起的是一个标识作用,告知JVM可以对这个类做序列化操作。
  • 我们可以对实现了序列化接口的类定义一个 serialVersionUID 变量,在序列化时,系统会将这个 UID 变量写到序列化的文件中,在进行反序列化时,系统会先检查文件中的 UID 是否跟当前文件的 UID 一致,如果一致就反序列化成功,否则就表示当前类发生了变化,那么反序列化时就会报错。
  • 这个 UID 最好自己定义,因为系统默认生成的 UID 对类的信息比较敏感,不同的Java编译器来实现可能会出现差异,导致反序列化失败。
4. Comparable和Comparator的区别
  • Comparable 接口是 java.lang 包下的,而 Comparator 接口是 java.util 包下的。
  • 实现了 Comparable 接口的对象可以直接成为一个可比较的对象,需要重写 compareTo 方法来定义比较规则,跟类绑定,扩展性不好;Comparator 是一个外部比较器,它可以用来比较任意类型的对象,采用了策略模式,可以根据需求设计多个比较器。
  • 策略模式:一个类的行为或算法可以在运行时更改。
  • 优先队列 PriorityQueue 内部是基于 Comparator 实现的。
5. for 和 foreach 效率比较?
  • ArrayList采用数组的形式保存对象,这种方式将对象放在连续的内存块中,所以插入和删除时比较麻烦,查询比较方便。
  • LinkedList将对象放在独立的空间中,而且每个空间中还保存下一个空间的索引,也就是数据结构中的链表结构,插入和删除比较方便,但是查找很麻烦,要从第一个开始遍历。
  • 循环数组结构的数据时,建议使用for循环,因为for循环采用下标访问,对数组结构的数据来说,采用下标访问效率更高。
  • 循环链表结构的数据时,一定不要使用for循环,因为for循环要获取第i个元素必须从头开始遍历,而foreach是通过iterator实现的遍历,只需要遍历一次,所以效率比for循环的高。
6. Java中创建对象的方式
  • clone:Java的所有类都默认继承java.lang.Object类,在java.lang.Object类中有一个方法clone(),调用这个方法后会返回一个新对象,而不是一个引用。
  • new 出一个对象的方式来创建对象。
  • 利用java.lang.Class类的newInstance方法来创建对象,它可以根据Class对象的实例,建立该Class所表示的类的对象实例,比如 a.getClass().newInstance()
  • 序列化和反序列化:对对象进行序列化来保存对象的状态,比如可以用 fileOutputStream 来把数据写出到磁盘文件,要注意,要将某个类的对象进行序列化时,该类必须实现了 serializable 接口,该接口是一个标志,用来告诉jvm该类的对象可以被序列化。通过序列化保存好对象的状态后,就可以通过反序列化得到之前保存的对象了。
7. Java中,什么是构造方法?什么是构造方法重载?
  • 构造方法是类的对象在创建的时候会调用的方法。如果程序员没有设置构造方法,系统也会为该对象提供一个默认的构造方法。构造方法的方法名和类名一致,没有返回值。
  • 构造方法重载就是根据传入的参数不同设置多个构造方法,来供实例化时调用 。
8. 怎么一次break跳出多重循环

可以在循环体开头设置一个标签,后面紧跟一个冒号,然后使用带此标签的break语句跳出多重循环

9. system.out.println()打印的是什么

打印的是对象的toString()方法,Objectl默认的toString()方法输出的是类名+@+哈希值的16进制形式,我们可以自己根据需要重写toString()方法。

10. Java 中的 Math. round(-1. 5) 等于多少?

Math.round 表示四舍五入
-1.4 ——》-1
-1.5 ——》-1
-1.6 ——》-2
1.4 ——》1
1.5 ——》2
1.6 ——》2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值