Java面试题----选择题01

1、下面那些是合法的标识符()

A.$persons
B.TwoUsers
C.*point
D.this

答案:AB
难度等级:简单
解析:
java 标识符可以是 字母、数字、$、_(下划线),但不可用数字开头
不可以是java 的关键字
包名:全部小写(如:com.tarena.test)
类名:每个单词的首字母大写,帕斯卡命名法(如:TestClass)
变量名:第一个字母小写,以后每个单词的首字母大写,骆驼命名法,也有叫驼峰命名法(如:int currentPage)
常量:全部使用大写字母,单词间用下划线隔开(如:final int CLOUD_API_LOGON_SIZE=102410244;)

选项C 不能用*开头
选项D this是java的关键字

2、下面那些是java的原始数据类型

A.short
B.Boolean
C.int
D.float

答案:ACD
难度等级:简单
解析:
java的原始数据类型,也可以叫java的基本数据类型,一共就8个,分别是:byte、short、int、long、boolean、char、float、double

选项B Boolean为基本类型boolean的封装类类型,Boolean也是java的的类型,但是类类型,不是java的基本类型,
基本类型    类类型
byte          Byte
int           Integer
short         Short
long          Long
boolean       Boolean
char          Character
float          Float
double        Double

3、给出下列代码

public class foo{
    public static void main(String[] args){
        String s;
        System.out.println("s="+s);
    }
}

程序输出的结果是()

A.The code compiles and “s=” is printed
B.The code compiles and “s=null” is printed
C.The code does not compile because string is not initialized
D.The code does not compile because string s connot be referenced
E.The code compiles,but a NullPointerException is thrown when toString is called

答案:C
难度等级:简单
解析:
此题考查基本语法,代码不能编译,因为String 的对象s没有被初始化。
在java的方法中定义变量或声明对象且没有给赋初值,如果没有使用变量或对象,语法是不报错的的,语法报错就是代码不能编译;如果使用了变量或对象,就会语法报错,提示变量或对象没有初始化;
当然变量或对象的定义可以放在类中,作为类的成员变量,无论是否初始化,编译都能通过。
code 代码
compiles 编译
not 不
because 因为
initialized 初始化
reference 引用 be referenced 被引用
print 打印
NullPointerException 空指针异常
call 调用

选项 A 代码编译且s=被打印
选项 B 代码编译且s=null被打印
选项 C 代码不能编译,因为字符串对象没有被初始化
选项 D 代码不能编译,因为字符串对象不能被引用
选项 E 代码编译,但一个空指针一异常被抛出,当toString方法被调用的时候

4、下面代码段中,执行之后i和j的值是什么?

int i=1;   
int  j; 
j=i++;

A.1,1
B.1,2
C.2,1
D.2,2

答案:C
难度等级:简单
解析:
此题考查变量的定义和数据初始化
i++相当于i=i+1;
i--相当于i=i-1
i++ 运算符放在变量的后面,先用i值后加1,比如int j=i++;如果i的初值是1,那么j的值就是1,而这句话执行完毕后,i的值就变成了2。

++i 运算符放在变量的后面,先加1后用i值,比如int j=++i;如果i的初值是1,那么j的值就是2,而这句话执行完毕后,i的值就变成了2.

5、已知如下类说明

public class Test{
    private float f=1.0f;
    int m=12;
    static int n=1;
    public static void main(String[] args){
        Test t=new Test();
        ...
    }
}

如下那个使用是正确的?

A.t.f
B.this.n
C.Test.m
D.Test.n

答案:AD
难度等级:简单
解析:
此题考查类成员的变量的访问,静态变量的使用,this的用法
java的四个访问修饰符:
访问权限    类    包    子类   其他包
public       ∨     ∨     ∨      ∨
protect      ∨     ∨      ∨      ×
default      ∨     ∨      ×       ×
private      ∨      ×      ×       ×

静态的方法只能访问静态的变量或静态方法,非静态的方法即可以访问静态的方法或静态的变量,也可以访问非静态的方法或非静态的变量
静态的变量或方法属于类而不属于对象,所以在访问范围允许的情况下,静态的变量或方法都可以通过类名访问。虽然可以通过对象来访问静态的变量或静态的方法,但不推荐。
this关键字指代的是当对象,this.n 本身没有错,但是this不能用在静态方法中,可以用在非静态方法中

选项A 正确
选项B this.n 不能放在静态方法中
选项C 通过类名能够访问静态的方法或变量,m不是静态的
选项D 正确

6、看以下代码,问程序的运行结果是

class Example{
    public static void main(String[] args){
        loop1:for(int i=0;i<3;i++){
            loop2:for(int j=0;j<3;j++){
                 if(i==j)  
                     break loop2;
                 System.out.println("i="+i+"j="+j+"\t");
             }
        }
    }
}

A.i=1 j=0
B.i=1 j=0 i=2 j=1
C.i=0 j=1 i=0 j=2 i=1 j=0 i=2 j=0 i=2 j=1
D.i=1 j=0 i=2 j=0 i=2 j=1

答案:D
难度等级:
解析:
java中loop:for(;;)…中的loop只是continue和break的标记,可以在for前面写任意的标记,比如loop1,loop2,在循环中可以break loop1;continue loop1,虽然有此用法,但不推荐这样使用
如果修改代码:

class Example{
        public static void main(String[] args){
            loop1:for(int i=0;i<3;i++){
                loop2:for(int j=0;j<3;j++){
                     if(i==j)  
                         break loop1;
                     System.out.println("i="+i+"j="+j+"\t");
                 }
            }
        }
    }

将没有任何结果输出

7、 一个Java程序运行从上到下的环境次序是()

A. 操作系统、Java程序、JRE/JVM、硬件
B. JRE/JVM、Java程序、硬件、操作系统
C. Java程序、JRE/JVM、操作系统、硬件
D. Java程序、操作系统、JRE/JVM、硬件

答案:C
难度等级:简单
解析:
java编译完的class字节码文件,先放到java运行时环境中的java虚拟机上执行,
而java虚拟机必须基于某个操作系统,而操作系统管理计算机的软件和硬件。
这也是java跨平台的原理,即字节码文件只要有对应的操作系统的虚拟机,字节码就可以运行。

8、下列关于for循环和while循环的说法中哪个是正确的?()

A. while循环能实现的操作,for循环也都能实现  
B. while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果  
C. 两种循环任何时候都可替换  
D. 两种循环结构中都必须有循环体,循环体不能为空

答案:AC
难度等级:简单
解析:
此题考查各个循环的的基本用法

选项A 正确
选项B while和for的判断条件只要是boolean类型即可
选项C 正确
选项D while和for的循环体都可以为空,能够编译通过,但不推荐使用

10.(单选)有变量声明如下: short b = 120; 下列语句中,错误的是()。

A.short s = b;
B.int i = b;
C.byte s1 = b;
D.long l = b;

答案:C
难度等级:简单
解析
此题考查java基本数据类型和长度,以及类型的转型,即向上转型,向下转型
向上转型也叫自动转型 比如:int i=1;double k=i;
向下转型需要强制转换 比如:double k=10.5D; int i=(int)k;
byte 1个字节
boolean 1个字节
char 2个字节
short 2个字节
int 4个字节
long 8个字节
float 4个字节
double 8个字节

选项A 同大小赋值,正确
选项B 向上自动转型 正确
选项C 大字节数向小字节数转换需要强制转化,错误
选项D 向上自动转换 正确

11.(单选)Java语言可以跨平台的原因是:

A.Java面向对象
B.Java虚拟机
C.Java垃圾回收机制
D.Java编译器

答案:B
难度等级:简单
解析:
java编译完的class字节码文件,先放到java运行时环境中的java虚拟机上执行,
而java虚拟机必须基于某个操作系统,而操作系统管理计算机的软件和硬件。
这也是java跨平台的原理,即字节码文件只要有对应的操作系统的虚拟机,字节码就可以运行。

12.(单选)下列属于不合法Java标识符的是()。

A._avaj
B.5save
C.Avaj
D.$80

答案:B
难度等级:简单
解析:
java 标识符可以是 字母、数字、$、_(下划线),但不可用数字开头
不可以是java 的关键字
包名:全部小写(如:com.tarena.test)
类名:每个单词的首字母大写,帕斯卡命名法(如:TestClass)
变量名:第一个字母小写,以后每个单词的首字母大写,骆驼命名法,也有叫驼峰命名法(如:int currentPage)
常量:全部使用大写字母,单词间用下划线隔开(如:final int CLOUD_API_LOGON_SIZE=102410244;)

选项A 正确
选项B java变量不能以数字开头
选项C 正确
选项D 正确

13.(单选)下列关于IDE开发环境Eclipse,说法错误的是:()。

A.Eclipse可以通过插件(plugin)的方式扩展其功能。
B.Eclipse联盟是由IBM公司捐资组建的。
C.Eclipse使用了SWT图形界面技术。
D.Eclipse的运行不需要有JRE的支持。

答案:D
难度等级:简单
解析:
eclipse启动时必须要有jre支持,否则eclipse无法正常启动

14.(单选)分析如下语句,说法错误的是()。

A.break可用于跳出循环,当多层嵌套时,只用于跳出一层循环
B.break即可以出现在循环语句中也可以出现在switch语句中
C.continue可以用于跳出循环
D.continue不能出现在switch语句中

答案:C
难度等级:简单
解析:
break语句可以用在循环中也可以用在switch中,用在循环中,就就是结束当前层的循环;用在switch中结束当前switch。
continue语句只能用在循环中,结束当前循环,继续当前层的循环,不会终止当前层的循环

15.(单选)在Java语言中,字符串“Java程序员”在内存中所占用的字节数是:()。

A.10
B.7
C.13
D.14

答案:D
难度等级:简单
解析:
java中的字符串对象实际上是字符数组,一个char类型是占用2个字节,有七个字符总共14个字节
注意:java中无论是汉字还是英文字母都是字符,占用2个字节

16.(单选)下列表达式中,可以得到精确结果的是()。

A.double d1 = 3.0 - 2.6;
B.double d4 = 2.5 * 1.5;
C.double d2 = 30/300;
D.double d3 = 1/2 + 0.5;

答案:B
难度等级:
解析:
此题考查java的浮点运算的精度问题,如果要精确运算浮点型数据,需要用java.math.BigDecimal来运算

选项A 返回结果0.3999999999999999
选项B 返回结果3.75
选项C 返回结果0.0 因为30和300都是整数,只要把任何一个定义成浮点型数据,数据会更精确
选项D 返回结果0.5 原理同选项C

17.(单选)下列关于JVM说法,错误的是()。

A.JVM通过专门的线程实现内存的回收。
B.使用java命令时,可以通过参数来设置分配JVM的内存大小。
C.JRE包括JVM及Java核心类库。
D.目前主流版本JVM通过纯解释的方式运行Java字节码。

答案:D
难度等级:
解析:
此题考查概念理解
JVM是选择用解释器+JIT编译器的混合执行引擎来执行字节码文件
只有对频繁执行的代码,JIT编译才能保证有正面的收益

18.(单选)下面的程序可以输出1~100内前10个3的倍数:

for (int i = 1, count = 0; i < 100; i++) {
    if (i % 3 == 0) {
        System.out.println(i); 
        (空白处) 
    } 
}  

下列选项中,空白处可以填入的代码是()。

A.if (count + + >= 10) { break; }
B.if (+ +count >= 10) { break; }
C.if (count+ + >= 10) { continue; }
D.if (+ +count >= 10) { continue; }

答案:B
难度等级:
解析:
根据题意,只需要输出前10个3的倍数,那就是到第10数后就终止循环,而且是先输出数据,后判断是否终止循环,所以只有选项B是正确的

19.(多选)下列赋值语句中,会有编译错误的是()。

A.int a = 8888888888;
B.char b = 1000+300;
C.byte c = 100+30;
D.int d = ‘a’+’b’+’c’;

答案:AC
难度等级:简单
选项A 数据超出范围 超出2的31次方减1
选项B 字符对应的是unicode码,没有2的15次方-1
选项C 是类型不匹配等号左端是byte类型,等号右端是整数类型
选项D 英文字母对应的数字就是ascii码值

20.(多选)所谓“水仙花”数是一个整数等于各位数字立方的和,例如:153 = 111+555+333,下面的程序用于输出2~1000内的水仙花数:

for (int n = 2; n <= 1000; n++) { 
    空白处  
    if (s == n) { 
        System.out.println(n); 
    } 
}  

下列选项中,空白处可以填入的代码是:()。

A.int s = 0,  n1 = n;  while (n1 > 0) { int t = n1 % 10;  s += t t;  n1 /= 10; }
B.int s = 0,  n1 = n;  while (n1 > 0) { int t = n1 / 10; s+= t t;  n1 %= 10; }
C.int s = 0;  for(int n1 = n; n1>0;  n1 /= 10) { int t = n1%10;  s += t * t * t; }
D.int s = 0;  for(int n1 = n;  n1>0;  n1 %= 10) { int t = n1 / 10;  s += t * t * t; }

答案:AC
难度等级:
解析:
固定算法,只是用while循环或for循环

21. 在类Hello(Hello.java)中,有以下的main方法。编译通过后敲入下面的命令将输出什么结果(JAVA)

命令:java Hello 您好 亚信
main方法如下:

public static void main(String bicycle[]){
    System.out.println(bicycle[0]);
}

A None of these options
B Hello
C 您好
D 亚信

答案:C
难度等级:简单
解析:
命令行执行java的字节码文件,
java是命令
Hello是字节码文件的名称
您好 亚信是执行Hello字节码文件的参数,各个参数中间用空格间隔,
字符串”您好“是对应main方法的参数数组bicycle[0]
字符串”亚信“是对应main方法的参数数组bicycle[1]

22.下面为java关键字的选项是:

a goto
b malloc
c extends
d FALSE

答案:C
难度等级:简单
解析:
了解java的关键字 FALSE不是关键字,但false就是关键字,goto和malloc都是c语言的关键字

23、 下面语句哪一个正确( )

A、java程序经编译后会产生 machine code
B、java程序经编译后会产生 byte code
C、java程序经编译后会产生 DDL
D、以上都不正确

答案:B
难度等级:简单
解析:
java的源代码,经过编译后会产生字节码文件
byte 字节
code 代码

24、下列运算符合法的是( )

A、&
B、<>
C、if
D、:=

答案:A
难度等级:简单
解析:
只有&是java的运算符,其他的都不是

25、 执行如下程序代码

int a=0;
int c=0;
do{
    --c;
    a=a-1;
}while(a>0);

后c的值是( )

A、0
B、1
C、-1
D、死循环

答案:C
难度等级:简单
解析:
就执行了一次循环,在循环体中c变量减一操作后c为-1,然后0>0为假值退出循环

generated by haroopad

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔同学Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值