欢迎您的访问
专注架构,Java,数据结构算法,Python技术分享

Java基础面试题(三)

1.以下哪些定义的变量是正确的()

A int 1abc;
B char abc1;
C long #abc;
D boolean $abc;
E:String_123456asdfghjklqwertyuiopzmnbvasdf12345;
答案 B D
解析:
因为java中变量名必须是一个以字母开头并由字母或者数字构成的序列。
字母包括 A-Z,a-z,_,$或在某种语言中表示的字母的任何Unicode字符。变量名中所有的字符都是有意义的,并且大小写敏感,变量名基本上没有限制.

2.代码如下

public class Test {
    public final String a;
        public Test() {
            a = "10";
        }
    public void setA1(){
               a = "20";
        }
     public static void main(String[] args) {
            Test t = new Test();
            t.setA1();
            System.out.println(t.a);
        }
}

t.a的值为()
A “10”
B “20”
C “”
D 以上都不对,并且编译错误
答案 D
解析 :
因为a被final(只能在初始化时赋值一次,一旦被赋值后,就不能再更改了,习惯上常量名使用全大写)修饰了,所以在setA1中再次赋值了,直接导致编译错误。

3.代码如下

double a = 15.0;
     int b=2;
      system.out.println(a+b);

打印出来的数值类型为()
A int
B float
C String
D double
答案 D
解析:
如果两个操作数中有一个是double类型,另一个操作数就会自动转换为double类型。

4.以private修饰的元素的作用域的是()

A. 当前类
B. 同一个package 内
C. 子孙类中
D. 其他的package 内
答案 A
解析:
共有四个访问修饰符public protected friendly private
public 的作用域有当前类,同一个package,子孙类和其他的package
protected的作用域有当前类,同一个package,和子孙类
friendly的作用域有当前类和同一个package
private 的作用域只有当前类

5.String s =new String (“xyz”);这句一共创建了几个String Object?

A. 1
B. 2
C. 3
D. 4
答案:B
解析:
一共创建了两个对象,一个是”xyz”,为缓冲区对象。另一个是new出来的String 对象。这两个对象的值相同,但不是同一个对象。

6.String 是最基本的数据类型吗?()

A:是
B:不是
答案:B
解析
String类并不是基本数据类,而是一个类(class),是C++、java等编程语言中的字符串。
String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。

7.选择下面代码的运行结果:()。

public class Test{
    public void method()
    {
        for(int i = ; i < 5; i++)
    {
            System.out.print(i);
    }
            System.out.print(i);
    }
}

A.122
B.123
C.编译错误
D.没有任何输出
答案:C
解析:
本试题属于 本身该试题就有严重的语法程序错误,并且没有主方法。

8.下面程序的运行结果是()

String str1 = “banalan”;
String str2 = “bana” + new String(“lan”);
System.err.println(str1 == str2);
A:true
B:false
C:不确定
答案:B
解析
对于字符串,==比较引用对象的内存地址,equals比较的是字符串的内容
String str1 = “banalan”; //一个对象
String str2 = “bana” + new String(“lan”); //new了一个对象,总的就是2个对象 System.err.println(str1 == str2); // ==是比较引用,两个对象的地址能一样么?只有重写equals比较内容(值)才能为TRUE

9.String能被继承吗?为什么?

不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。

前者默认调用的是String.valueOf来返回String实例对象,至于调用哪个则取决于你的赋值,比如String num=1,调用的是
public static String valueOf(int i) {
return Integer.toString(i);
}

后者则是调用如下部分:
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
最后我们的变量都存储在一个char数组中
private final char value[];

10.Java I/O中字符流和字节流的区别 ?

字节流是传递0~255的整数而Java中有一些(如unicode代码)不能使用字符流,是特殊的字节流。

字节流:Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了一组基本的输入字节流和输出字节流。InputStream类与OutputStream类均为抽象类,我们在实际使用中通常使用Java类库中提供的它们的一系列子类。下面我们以InputStream类为例,来介绍下Java中的字节流。

字符流:Java中的字符流处理的最基本的单元是Unicode码元(大小2字节),它通常用来处理文本数据。所谓Unicode码元,也就是一个Unicode代码单元,范围是0×0000~0xFFFF。在以上范围内的每个数字都与一个字符相对应,Java中的String类型默认就把字符以Unicode规则编码而后存储在内存中。然而与存储在内存中不同,存储在磁盘上的数据通常有着各种各样的编码方式。使用不同的编码方式,相同的字符会有不同的二进制表示。

赞(0) 打赏
版权归原创作者所有,任何形式转载请联系作者;码农code之路 博客站点 » Java基础面试题(三)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏