您的位置 首页 java

Java高频面试题160道答案-第1篇(基础篇)

1、一个”. Java “源文件中是否可以包括多个类(不是内部类)?有什么限制?

答:一个.java类中是可以有多个类,但是,在多个类中,有且只有一个public类,且public类的类名必须与*.java的文件名相一致

2、Java有没有goto?

答:goto是java语言中的保留字,目前还没有在java中使用。其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序语言 中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。 注:java保留字;C语言中使用

3、说说&和&&的区别。

答:这两者都是表示逻辑与,只有当两边都是true时,返回true,只要有一个 false 则结果返回false。

&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式,例如,对于 if(str != null&& !str.equals(“”))表达式,当 str 为 null 时,后面的表达式不会执行,所以不会出现 NullPointerException

如果将&&改为&,则会抛出 NullPointerException 异常。 If(x==33 & ++y>0) y 会增长, If(x==33 && ++y>0) 则当x=33时,y不会增长

&还可以用作位运算符,当&操作符两边的表达式不是 boolean 类型时, &表示按位与操作,我们通常使用 0x0f 来与一个整数进行&运算,来获取该整数的最低 4 个 bit 位,例如, 0x31 & 0x0f 的结果为 0x01

4、在JAVA中如何跳出当前的多重嵌套循环?

答:在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。或者使用一个变量进行控制,如下代码:

第1个方法,加标号

ok:for(int i=0;i<10;i++){

for(int j=0;j<10;j++){

System.out.println(“i=”+i+”,j=”+j);

if(j==5){

break ok;//跳到循环外的ok处,即终止整个循环

}

}

}

第2个方法:用一个变量进行控制

int[][] arr = {{1,2,3},{4,5,6,7},{9}};

boolean found = false;

for(int i=0;i<arr.length && !found;i++){

for(int j=0;j<arr[i].length;j++){

System.out.println(“i=”+i+”,j=”+j);

if(arr[i][j]==5){

found = true;//找到5,使外层循环判断条件变为false则终止整个循环

break;//跳出当前循环

}

}

}

5、switch语句能否作用在 byte 上,能否作用在 long 上,能否作用在String上?

答:switch可作用于byte,int,String和枚举enum类型,不可作用于long类型。

6、 short s1= 1; s1 = s1+1有什么错? short s1 = 1; s1 += 1;有什么错?

答:第一个,s1=s1+1,此时因为1是int类型,所以当s1+1进行运算时,会把结果自动作升级转换变为int类型。而s1是short类型,所以会报类型转换错误。

第二个没有错。因为s1+=1相当于s1=(short)(s1+1);隐含有强制类型转换,所以不会错

7、char型变量中能不能存贮一个中文汉字?为什么?

答:char型变量是用来存储 unicode 编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,则这个汉字不能存储。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

8、用最有效率的方法算出2乘以8等於几?

答:2<<3; 表示 2向左移 3位:2 * 2^3(2的3次方) = 2 * 8

因为一个数左移 n位,就相当于 2的 n次方,那么一个数乘以 8只要将其左移 3位即可,此运算符的效率最高,所以 2乘以 8等于几的最有效方法是 2<<3

左移运算符:

用来将一个数的各二进制位全部左移若干位。因为位运算比×运算快,所以可对以下代码进行优化,还可利用左移运算符计算a的第b个二进制位是什么。

运算规则:

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零

9、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

答:使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容是可以改变的。总的来说对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

10, 静态变量 和实例变量的区别?

答:静态变量属于类的级别,而实例变量属于对象的级别。主要区别如下:

1,存放位置不同

类变量随着类的加载存在于方法区中,实例变量随着对象的建立存在于堆内存中。

2,生命周期不同

类变量的生命周期最长,随着类的加载而加载,随着类的消失而消失,

实例变量随着对象的消失而消失。

使用注意:静态方法只能访问静态成员(包括成员变量和成员方法),不能访问非静态成员或方法。

非静态方法可以访问静态也可以访问非静态方法或成员。静态方法中不能出现this,super关键字。

Java基础部分高频面试题

文章来源:智云一二三科技

文章标题:Java高频面试题160道答案-第1篇(基础篇)

文章地址:https://www.zhihuclub.com/199652.shtml

关于作者: 智云科技

热门文章

网站地图