`

6、java面试题一

阅读更多

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

 

  • 答:可以有多个类,但是只能有一个public的类,并且public的类名必须与文件名一致

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

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

 

3、在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;
			}
		}
	}

 

4、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 

 

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

5、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 

 

  • 对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
  • 对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译

6、char型变量中能不能存贮一个中文汉字?为什么? 

 

  • char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。
  • 不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
  • 补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
  • 备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,做到知无不言,言无不尽。

 

7、静态变量和实例变量的区别?

 

  • 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
  • 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
  • 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
  • 总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
  • 例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;
  • 但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。
  • public class VariantTest
    {
    	public static int staticVar = 0;
    	public int instanceVar = 0;
    
    	public VariantTest()
    	{
    		staticVar++;
    		instanceVar++;
    		System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);
    	}
    }
     
  • 备注:这个解答除了说清楚两者的区别外,最后还用一个具体的应用例子来说明两者的差异,
  • 体现了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力!

8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

 

  • Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,
  • 例如,ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;
  • floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;
  • 最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,
  • 所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

 

 

分享到:
评论

相关推荐

    JAVA面试题JAVA面试题JAVA面试题

    JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题JAVA面试题

    java面试题java面试题java面试题

    java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题java面试题...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    Java 面试题 Java 面试题

    Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题 Java 面试题

    java面试题,J2EE面试题 笔试题

    最全的j2EE面试题,题量...8、java面试题及答案 9、java面试题编程篇 10、Oracle面试题 11、Oracle企业面试题集锦 12、Spring面试题 13、SSH面试题 14、Strut+Spring+Hibernate面试题 15、张孝祥整理Java就业面试题大全

    北大青鸟JAVA面试题

    北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题北大青鸟JAVA面试题...

    Java面试题2022

    Java面试题

    2023java最新阿里巴巴面试题,2023java最新阿里巴巴面试题

    2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里巴巴面试题2023java最新阿里...

    JAVA面试题2019

    JAVA面试题2019

    Java面试题以及答案整理.pdf

    Java面试题以及答案整理

    java面试题18道java面试题18道

    java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java...

    java面试题总结资料

    java面试题总结资料

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...

    java面试题大汇总(非常重要)

    java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总(非常重要)java面试题大汇总...

    java面试题20道java面试题20道

    java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java面试题20道java...

    java面试题整理

    java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理java面试题整理

    Java面试题Java面试题Java面试题Java面试题

    Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题Java面试题

    最新各大公司企业真实面试题-Java面试题

    最新各大公司企业真实面试题-Java面试题最新各大公司企业真实面试题-Java面试题

Global site tag (gtag.js) - Google Analytics