Java基础面试题

说明:本文章的题目均为Java基础部分,不含其他部分内容,仅作记录使用。

一、选择题

1、下列java程序的输出结果为____。                          

public class Example{
    String str=new String("hello");
    char[]ch={'a','b'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
        str="test ok";
        ch[0]='c';
    }
}

//选项:
/*
A.hello and ab
B.hello and cb
C.hello and a
D.test ok and ab
E.test ok and cb
F.test ok and c
*/

正确答案为:B

分析:开头申明的字符串和字符串数组是引用数据类型的变量,但是字符串类型使用的是值传递,字符串变量使用的是引用传递。关于值传递和引用传递,简单来说,值传递传递的是值,在方法中进行操作时,不改变原本变量的值。引用传递传递的是引用,是对内存中的连续空间进行操作,会改变原本变量指向的空间的值。并且,char数组可以直接用输出语句输出所有元素。因此,第一个输出语句输出的是hello and ,第二个输出语句为cb,因此答案为B

2、

byte b1=1,b2=2,b3,b6; 
final byte b4=4,b5=6; 
b6=b4+b5; 
b3=(b1+b2); 
System.out.println(b3+b6);关于上面代码片段叙述正确的是() 

/*
A.输出结果:13
B.语句:b6=b4+b5编译出错
C.语句:b3=b1+b2编译出错
D.运行期抛出异常
*/

正确答案为:C

分析:被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。Java中的byte,short,char进行计算时都会提升为int类型。

3、

//检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。package algorithms.com.guan.javajicu; 
public class Inc { 
    public static void main(String[] args) { 
       Inc inc = new Inc(); 
       int i = 0; 
       inc.fermin(i); 
       i= i ++; 
       System.out.println(i);
    
    } 
    void fermin(int i){ 
       i++; 
    } 
}
/*
选项为:
A.0
B.1
C.2
D.3
*/

正确答案为:A

分析:首先,基本数据类型使用值传递,不会对值原本所在的变量的值进行改变,因此在执行完fermin方法后,主方法中i的值仍是0,然后对于i=i++的问题,请看https://mp.csdn.net/postedit/81020836这篇文章,i的值仍为0,因此最终i的值为0。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值