java面试题(6)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38158541/article/details/85464390

1、以下代码输出的是:

1

2

3

4

5

6

7

8

9

10

11

public class SendValue{

    public String str="6";

    public static void main(String[] args) {

        SendValue sv=new SendValue();

        sv.change(sv.str);

        System.out.println(sv.str);

    }

    public void change(String str) {

        str="10";

    }

}

A、6
B、10
C、都不对
D、16

答案是A

Java中String类型变量是immutable(不可变的)。

尽管 change()方法中的str与sv.str都是新的对象实例成员变量值"6"的引用, 由于String类型的 不可变 性,change()方法中的str="10"语句实际上是将传入的str副本引用指向了一个值为“10”的新的内存地址,但 原数据引用 sv.str的引用值(也就是“6”的内存地址) 并没有发生改变,因此sv.str指向的值仍旧为6.

2、有一个源代码,只包含import java.util.* ; 这一个import语句,下面叙述正确的是?   ( )

A、只能写在源代码的第一句
B、可以访问java/util目录下及其子目录下的所有类
C、能访问java/util目录下的所有类,不能访问java/util子目录下的所有类
D、编译错误

答案是C

在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,package语句必须放在第一行。

导入java.util.*不能读取其子目录的类,因为如果java.util里面有个a类,java.util.regex里面也有个a类,我们若是要调用a类的方法或属性时,应该使用哪个a类呢。

猜你喜欢

转载自blog.csdn.net/weixin_38158541/article/details/85464390