Java面试题

1:String是最基本的数据类型吗?

不是
基本数据类型包括byte、int、char、long、float、double、boolean和short。
引用数据类型包括:类,数组,接口等(简单来说就是除了基本数据类型之外的所有类型)
所以String 是引用数据类型

2:说说&&&的区别。

     &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为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)不会增长

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

     备注:这道题先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。

3:switch语句能否作用在byte上,能否作用在long上,能否作用在String?

     在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

4:Integerint的区别

     int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,                

所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。

     在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。

     另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

5:J2EE是技术还是平台还是框架?

   J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。

   J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术

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

在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如,

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;

         }

   }

另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。

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;

                     break;

               }

         }

   }

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

     2 << 3,

     因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。

posted @ 2017-02-20 22:16  Sunray0330  阅读(163)  评论(0编辑  收藏  举报