常见Java面试题

以下这些都是我自己整理出来的,贴出来和大家分享一下!

面向对象的特征有哪些方面?

参考答案:

抽象、继承、封装和多态

 

如果把一个对象作为参数传递给一个方法,这个方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

参考答案:值传递

 

java中使用什么机制实现多态?

参考答案:重载和重写

 

什么是自动装包/拆包?

参考答案:

自动完成基本数据类型与对应的包装类型的转换

 

Java中会存在内存泄露吗?

参考答案:

Java语言也存在内存泄露问题。

 

int 和 Integer 有什么区别

参考答案:

int是java的基本数据类型,Integer是java为int提供的封装类。

 

String是Java的基本数据类型吗?

参考答案:

String是字符串对象,不是Java的基本数据类型之一。

 

char类型变量是否能保存一个汉字?

参考答案:

char类型变量可以存储汉字,因为java中以unicode编码,一个char占16个位即两个字节,所以放一个中文是没问题的.

 

Java中是否有goto语句?

参考答案:

goto作为Java语言的保留关键字,但是目前没有使用。

 

 

变量和常量有什么区别?

参考答案:

变量的值可以改变,而常量的值不能改变。

 

程序编码float num=3.14159是否正确?

参考答案:

 

不正确。不能把double类型直接赋值给float类型。

 

short和char类型的取值范围各式多少?

参考答案:

 

short类型的取值范围是32767~-32768,而char字符类型的编码值的取值范围是0~65535。

 

"3+5=" + 3 + 5表达式的值是?

参考答案:

 

3 + 5 = 35。

 

final参数可以修改吗?

参考答案:

参数x被修饰成final,意味着不能在addOne method中被修改,所以方法体中++x无法编译通过。

 

下面代码要实现doSomething()方法中局部变量的定义,看看这段代码中的定义是否正确?

public class Something {

void doSomething() {

int l = s.length();

}

}

 

参考答案:

 

这样编码是错误的,定义变量s的语句无法通过编译。

 

下列代码的运行结果是?( )

public class Test {

public static void main(String[] args) {

System.out.println((3 - 2.6 == 0.4));

}

}

A)编译错误

B)运行错误

C)true

D)false

参考答案:D

 

 

下列程序代码会在控制台输出变量a、b和c分别进行3次运算的值,写一下它们在控制台会输出的内容。

public class Example {

public static void main(String[] args) {

int a = 3, b = 5, c = 0;

c = b++ * 5 / a++;

System.out.println("a=" + a + "\tb=" + b + "\tc=" + c);

c = b++ + ++a;

System.out.println("a=" + a + "\tb=" + b + "\tc=" + c);

c = a++ - ++b;

System.out.println("a=" + a + "\tb=" + b + "\tc=" + c);

}

}

 

参考答案:

a=4    b=6   c=8

a=5    b=7   c=11

a=6    b=8   c=-3

 

 

假设变量a=4,b=5,c=6,d=true。请写出下列几个逻辑表达式的值。

(1)a + b > c && b == c

(2)d || b + c < a && c > b

(3)!(a > b) && !d || true

(4)!(a + b < c) && d

(5)!(a == b) && c > b && d

参考答案:

(1)结果为false

(2)结果为true

(3)结果为true

(4)结果为true

(5)结果为true

 

&和&&两个运算符的区别?

 

参考答案:

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与运算。&&运算符更效率。

 

用最有效率的方法算出2乘以16等于几?

 

参考答案:

2 << 4

 

=与= =的区别?

参考答案:

 

=是赋值运算符,而= =是相等条件判断运算符。

 

 

下列代码实现short类型数据的加法运算,这段代码是否可以正确编译,请说明原因。

short s1 = 1;

s1 = s1 + 1;

参考答案:

无法正确编译,因为s1与int类型数据求和后是int类型的数值,无法赋值给short类型的变量。

 

a++与++a有什么区别?

参考答案:

 

a++会返回当前变量a的值,然后在把变量a的值+1,而++a会先把变量的值+1在返回这个值。

 

9 / 2与9 / 2.0的结果是否相等?

参考答案:

不相等,因为两个表达式的运算结果分别为4和4.5。

 

如何判断一个整数是奇数还是偶数?

参考答案:

 

假设整数为N,那么判断N%2的结果,结果等于1就说明N是奇数,否则N就是偶数。

 

求1+2+…+n的值。要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句。

 

参考答案:

public class Swap {

static int sum;

public static int iSum(int n) {

sum += n;

sum = n == 0 ? sum : iSum(--n);

return sum;

}

}

 

(3%7+2)*(6-5)这个表达式如果去掉所有括号,它的运算结果是多少?

参考答案:

 

原来表达式的结果是5,去掉所有括号后的运算结果是10。

 

在Java1.6中byte、long和String类型是否可以作为switch语句的判断表达式。

参考答案:

byte类型可以应用与switch语句中,但是long不可以,而String类型目前也不可以。

 

 

如果x=35,y=80,下面代码的输出结果是()。

if (x < -10 || x > 30) {

if (y >= 100) {

System.out.println("危险!");

} else {

System.out.println("报警!");

}

} else {

System.out.println("安全");

}

A)危险

B)报警

C)报警 安全

D)危险 安全

参考答案:B

 

 

下列程序代码把字符类型数据与int类型数据进行对比,判断这个程序的输出结果。

public class Example {

public static void main(String[] args) {

if ('c' == 99) {

System.out.println("条件成立");

} else {

System.out.println("不复合条件");

}

}

}

参考答案:条件成立

 

 

判断下列程序代码的运行结果,如何修改代码中的条件判断才能正确执行分支语句。

public class Example {

public static void main(String[] args) {

if(true)

System.out.println("合法");

else;

System.out.println("非法");

}

}

参考答案:

合法

非法

正确的执行流程是希望根据判断来输出这两个内容之一,那么应该去掉代码中else后缀的分号。

 

 

下列程序代码的输出结果是什么?如果向正确的根据分数输出判断结果,应该如何修改程序代码。

public class Example {

public static void main(String[] args) {

int score=70;

switch (score) {

case 10:

case 20:

case 30:

case 40:

case 50:

System.out.println("不及格");

case 60:

case 70:

case 80:

System.out.println("不错的成绩");

case 90:

System.out.println("优秀");

case 100:

System.out.println("满分");

default:

break;

}

}

}

参考答案:

不错的成绩

优秀

满分

 

 

如果要正确的根据分数判断输出结果,应该在代码中每个输出语句之后添加break;语句。

如果希望让下面这段程序输出“Come”,该如何定义ch变量的类型和变量值?

switch (ch) {

case 'C':

System.out.println("Come");

break;

case 'D':

System.out.println("Demo");

break;

}

参考答案:

把ch定义为char类型并赋值’C’,还可以把ch定义为byte、short和int类型,并赋值为67。

while与do…while语句的区别?

 

 

参考答案:

while循环会先判断循环条件,如果条件满足就执行循环,否则退出循环,但是do…while循环会先执行一次循环,然后在判断循环条件是否满足。

 

编写程序代码,实现在控制台输出有“*”字符组成的三角形,要求这个三角形是倒立的。

 

public class Example {

public static void main(String[] args) {

int len=10;

String str="";

for(int i=len;i>=0;i-=2){

str=str+" ";

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

System.out.print('*');

}

System.out.println();

System.out.print(str);

}

}

}

 

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

参考答案:

 

用break终止循环,或者用return终止当前方法体

 

下列代码

public class Example {

public static void main(String[] args) {

int sum = 0;

int i = 0;

while (i++ < 100);

sum += i;

System.out.println(sum);

}

}

输出:101

你可能感兴趣的:(Java编程)