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

2.Java有没有goto?在JAVA中如何跳出当前的多重嵌套循环?

3.&和&&的区别?

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

5.short s1 = 1; s1 = s1 + 1;和 short s1 = 1; s1 += 1;哪个正确?

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

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

8.public void method(final  StringBuffer  param){}中可以修改参数的值吗? 

9."=="和equals方法究竟有什么区别?

10.静态变量和实例变量的区别?

 

11.Integer与int的区别

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

 

 

 

 

1答案:可以有多个类,但public类型的只能有一个,而且这个类的名称必须和源文件名称一致!要问为什么?因为这是规定!

2答案:Java里有goto,但只做保留关键字,不起任何作用,即我们不能使用 goto 来进行跳转到某行。因为goto会降低程序的可读性。你可以通过给循环定义标签来实现跳转到某行,如定义loop1:for循环,然后你在循环中用break/continue 标签名来指明跳出或继续哪个循环。这种方法也是在Java中跳出当前多重嵌套循环的一种方法。你也可以让外层的循环条件表达式的结果可以受到里层循环体代码的控制从而达到跳出当前多重嵌套循环。

3答案:共同点:都可作为逻辑与的运算符,当运算符两边都为true时运算结果才为true,否则为false。

   不同点:一、作为逻辑与的运算符时,&&具有短路功能,即如果第一个表达式为false则不再计算后面的表达式,避免后面表达式可能有异常时不会报错,而&则会可能报空指针等异常。二、&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01

4答案:switch()的参数只能是一个整数表达式或枚举常量,因而可以是int类型或Integer包装类型,而byte、short、char都可以隐含转换为int,因此这些类型及他们的包装类型都可以用于switch,而long和String则不可以

5答案:s1+1在运算时会自动提示表达式类型,所以结果是int类型,在赋值给short类型时则会报需要强制类型转换的错误。而+=是Java规定的运算符,编译器会对他特殊处理,不会报错。

6答案:char是用来存贮Unicode编码的字符的,而绝大部分汉字也包含在内,因此char可以存贮汉字,只有极少个别特殊汉字不包含在内,此时char就不能呢个存贮这些汉字了,注意的是Unicode占二个字节,所以char变量也是二个字节。

7答案:我们知道将一个数左移n位,就是这个数乘以2的n次方,而位运算是cpu直接支持的,效率最高所以2*8最效率方法是2<<3

8答案:首先我们要清楚被final修饰的变量是引用变量不能改变,但是引用变量所指向的对象的值是可以改变的!这个问题中我们可以用param.append()方法来改变参数值,但不能用param=new StringBuffer()来改变引用对象。

9答案:“==”专门用来比较两个变量的值是否相等即比较两个变量对应的内存存贮的数值是否相等,只能用“==”,如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如Objet obj = new Object();变量obj是一个内存,new Object()是另一个内存,此时,变量obj所对应的内存中存储的数值就是对象占用的那块内存的首地址。对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。

10答案:在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

11答案:联系:Integer是int的封装类;区别:int默认值为0,而Integer默认值为null,即int则无法表达出未赋值的情况。因此int不适合作为web层的表单数据的类型

12答案:Math类三种取整方法:Math.ceil(x)   ceil是天花板的意思即向上取整、

   Math.floor(x)   floor是地板的意思即向下取整、

   Math.round(x)  round则是四舍五入取整,它等于Math.floor(x+0.5),因此答案是12和-11