Java面试题----简答题

1.Java的基本类型有?

答案:int long char byte double boolean short float
难度等级:简单

2.我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象?

答案:
是的,我们可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化是,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 127。
难度等级:简单

3.3*0.1 == 0.3 将会返回什么?true 还是 false?( )

答案:
false,因为有些浮点数不能完全精确的表示出来,使用BigDecimal能够精确的运算浮点型数据。
难度等级:简单

4.Java语言中使用哪两个类封装大数据类型?分别有什么作用?

答案:实际编程中,往往会由于数值超出长度范围而失去精度。Java语言中提供了大数据类型解决这个问题,程序员应该对此熟练掌握,在需要进行大数据运算时使用。
参考答案:Java语言中有两个大数据类型,即BigInteger和BigDecimal,其中BigInteger可以封装任意精度的整形数值,而BigDecimal可以封装任意精度的有符号数,包括整书和浮点数。
难度等级:

5.&和&&的区别?

答案:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x33 & ++y>0) y会增长,If(x33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
难度等级:简单

6.continue和 break有什么区别?

答案:break和continue都是用来控制循环结构的,主要是停止循环。
1.break
有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。
这是我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。
2.continue
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。

可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。

难度等级:简单

7.java的基本数据类型有那些?

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

8.列出JAVA中所有基本数据类型,并说明这些数据类型占用的字节数?

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

9.请用java代码写出获取今天是星期几。

答案:

Calendar cal = Calendar.getInstance();
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
String week = weekDays[cal.get(Calendar.DAY_OF_WEEK)-1];
System.out.println(week);

难度等级:

10.指出下面的代码有哪些需要改进的地方

(1)if(username.equals("zxx")){}
(2)int i=1;
(3)return i==1?true:false;

答案:
第一行代码应写成if(“zxx”.equals(username)),这样能避免空指针异常
第二行和第三行代码改成
int i=1;
boolean flag=(i==1)? true : false;
return flag;
难度等级:

11.运行下面的程序得到i和j的结果是

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

答案:2,1
此题考查变量的定义和数据初始化
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.
难度等级:简单

12.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

答案:
short s1 = 1; s1 = s1 + 1;有错误,s1 + 1的结果类型是整型,向上转型了,不能把整型的数据赋值给short类型的s1,除非强制转换
short s1 = 1; s1 += 1;没有错误,能够运行,此种方式可以解决类型强转的问题
难度等级:

13.在switch语句中可以用byte吗?可以用long吗?可以用String吗?

答案:
jdk1.6 可以用 byte ,int,short,char
jdk1.7及以上可以用byte,int,short,char,String
难度等级:简单

14.

i++和++i的区别?

答案:
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.
难度等级:简单

15.jdk、jre、jvm的区别?

答案:
JDK : Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE:Java Runtime Enviromental(java运行时环境)。也就是我们说的JAVA平台,所有的Java程序都要在JRE下才能运行。包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。
JVM:Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调用。
难度等级:简单

16.Java的八大基本类型有哪些?

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

17.例举6种数据结构和它们的作用

答案:
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步
LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
Vector非常类似ArrayList,但是Vector是同步的。
Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。
Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。
WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。

难度等级:

18.以下代码会输出什么?

for(int i=0;i<5;i++){
        System.out.print("i"+i+"  ");
        for(int j=0;j<5;j++){
            System.out.print("  j"+j);
        }
        System.out.println();
}

答案:
难度等级:

19.请写出下面输出的值:

Int i=10;
i++;
print("i的第一次值为:"+i);
i+=100;
print("i的第二次值为:"+i);
i+i>100?50:60;
print("i的第三次值为:"+i)

答案:
i0 j0 j1 j2 j3 j4
i1 j0 j1 j2 j3 j4
i2 j0 j1 j2 j3 j4
i3 j0 j1 j2 j3 j4
i4 j0 j1 j2 j3 j4

难度等级:简单

20.已知Java的安装目录为%JAVA_HOME%,JAVA环境变量中path应该如何配置才能在cmd中直接使用java这个命令,比如java-version

答案:
%JAVA_HOME%/bin
难度等级:简单

21.请写出几个常用的linux命令并描述其功能

答案:
pwd:用于返回当前目录名
ls:用于显示当前目录的内容,显示方式只是显示内容的名字
ll :用于显示当前目木的内容,
显示方式不但显示内容的名字还有其其他的信息
cd:改变目录
ifconfig 察看当前计算机的ip地址
ssh 语法 ssh 用户名@主机ip 用指定的用户名访问指定的主机

难度等级:简单

22.for循环中break与continue的区别?

答案:
break和continue都是用来控制循环结构的,主要是停止循环。
1.break
有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。
这是我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。
2.continue
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。

可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。
难度等级:简单

23.请描述冒泡排序算法的基本思想。

答案:
1.冒泡排序的基本思想 冒泡排序是交换排序中一种简单的排序方法。它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最终达到有序化。其处理过程为: (1)将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。 (2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上”飘浮”(左移),关键字值大的记录好像石块,向下“堕落”(右移)。 每经过一趟冒泡排序,都使无序区中关键字值最大的记录进入有序区,对于由n个记录组成的记录序列,最多经过n-1趟冒泡排序,就可以将这n个记录重新按关键字顺序排列。 2.原始的冒泡排序算法 对由n个记录组成的记录序列,最多经过(n-1)趟冒泡排序,就可以使记录序列成为 有序序列,第一趟定位第n个记录,此时有序区只有一个记录;第二趟定位第n-1个记录,此时有序区有两个记录;以此类推,算法框架为: for(i=n;i>1;i—) { 定位第i个记录; }
若定位第i个记录,需要从前向后对无序区中的相邻记录进行关键字的比较,它可以用如下所示的语句实现。
for(j=1;j< =i-1;j++)
if (a[j].key>a.[j+1].key) {
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
下面给出完整的冒泡排序算法:

void BubbleSort1 (DataType a,int n) {   
    for (i=n;i>1;i--) {   
        for (j=1;j<=i-1;j++) {  
            if(a[j].key>a.[j+1].key) {   
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp; 
             } 
         } 
    }

难度等级:

24.&, &&, >, >>,>>>的区别

答案:
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x33 & ++y>0) y会增长,If(x33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

表示大于,如:if(a>b)…结果是boolean类型

表示带符号右移,如:int i=15; i>>2的结果是3,移出的部分将被抛弃。
转为二进制的形式可能更好理解,0000 1111(15)右移2位的结果是0000 0011(3),0001 1010(18)右移3位的结果是0000 0011(3)。

无符号右移:
按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
其他结构和>>相似。

难度等级: 简单

25.写出以下代码的输出结果:

double a=0;
int b=a++>0&&a--<0?1:(a==0?-1:0);
System.out.plintln("a="+a+",b="+b);

答案:
a=1.0,b=0
难度等级:简单

generated by haroopad

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小乔同学Online

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

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

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

打赏作者

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

抵扣说明:

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

余额充值