goto是java语言中的保留字,目前还没有在java中使用。goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,方便。
2.对两个整数变量进行互换,要求在不使用第三方变量的前提下?
在这里我把思考的过程和演算的过程都写下,面试的时候,你们只需要写下最终
的结果就可以了。
1,我们知道一个数异或另一个数2次,结果还是这个数。举例:2^3^3=2.这个大家明白吧,应该没问题.同样,3^2^3=2,其实我只是把顺序换了下位置,这个都不难理解.
2, 题目中不是说两个整数变量吗?那么我们就设两个整数变量.比如: int x = 2; int y = 3;现在我们就把这两个数用异或的方法进行数值换位.
3,由于我们人的思想习惯是xy的顺序,那么我们就先来换位x,于是有:
x = x^y;//此时x=2^3.这时再算出y,于是有
y = x^y;//相当于2^3^3=2,这时的y=2,我们完成了一个换位.于是开始换x.
此时x^y=2^3^2=3,那么我们就把这个值赋给x,那么就是
x = x^y;//相当于2^3^2=3.这时x=3;
在java中,要想跳出多重循环,可以在外循环语句前面定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,这样就可以跳出外层循环了,普通的情况下break跳出当前循环。
A:for(int i=0; i<10; i++){ //外循环定义标号A.
for(int j=0; j<10; j++){
System.out.println("i="+i+",j="+j);
if(j==6){
break A; //break A,就是跳到外循环处(也就是整个外循环都结束了).
}
}
}
答案:对于比较基本数据类型来说,==比较的就是数值的大小,例如:
int m = 2;
int n = 3;
boolean b = m==n;
System.out.println(b);//结果为false,因为2和3不等吗.
但是对于引用类型数据来说,==和equals就有些不同了,在大多数类中的equals方法调用的依然是==,但比较的是两个引用变量的地址是否相同.
例如:
int[] arr1 = {1,2,3};
int[] arr2 = {1,2,3};
System.out.println(arr1==arr2);//结果是false,因为比较的是地址值.
System.out.println(arr1.equals(arr2));//结果还是false,因为比较的还是地址值.其实调用的方法还是"=="
但是在字符串String中就不一样了,因为String中的equals方法被重写了,它比较的是两个字符串对象中的内容是否相同.
例如:
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1==s2);//结果是false,因为比较的是地址值.
System.out.println(s1.equals(s2));//结果是true,因为比较的是对象中内容是否相同.
5.short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错?
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型(byte,short,char 这三种类型在参与运算时,会自动转换成int类型),所以最后的结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误(因为int类型转换成short类型可能会损失精度,计算机只要认为可能出错,这哥们就会提示给我们,它还是比较尽职的)。
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,也就是类型自动提升,因此可以正确编译。
6.使用final关键字修饰一个变量时,是引用变量不能变,还是引用的对象的内容不能变?
sb = new StringBuffer("World");