@
目录- 1.一个“.Java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
- 2.Java有没有goto?
- 3.&于&&的区别
- 4.在Java中如何跳出当前的多重嵌套循环?
- 5.Switch语句能否用在byte,long,String上?
- 6.short s1 = 1;s1 = s1+1;有什么错?short s1 = 1;s1 += 1;有什么错?
- 7.char型变量中能不能存储一个中文汉字?为什么?
- 8.用最有效率的方法算出2*8等于几?
- 9.使用final关键字修饰一个变量时,是引用变量不能变还是引用的对象不能变
- 10."=="和equals方法的区别
1.一个“.Java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
Java源文件中可以有多个类,但是只能有一个public的类,并且public的类名必须与文件名一致
扩展:内部类是什么?
内部类是指Java定义的类中嵌套的一个分类,如以下代码所示:
/* 公共的OuterClass类 */
public class OuterClass{
public static void main(String[] args){ //main函数
}
/*************定义一个内部类************/
private class InnerClass{
//构造方法
public InnerClass(){
}
}
}
内部类可以直接访问外部类的实例的方法和字段,内部类的实例只能存在于外部类的实例中,
实例化内部类必须先实例化外部类,使用以下语法在外部对象中创建内部对象:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
2.Java有没有goto?
答:Java没有goto,但是goto是Java中的保留字
保留字是指现有Java版本未使用,但以后的版本可能会作为关键字使用
在C语言中,goto是无条件转移语句,可以让程序直接跳转到任意标记的位置。
3.&于&&的区别
答:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作
4.在Java中如何跳出当前的多重嵌套循环?
答:方式一:使用break语句; 方式二:让外层的循环条件表达式的结果可以受到里层循环体代码的控制。通常使用的方法是第二种
方式一 : break只能跳出一层循环,想要使用break跳出多重循环,可以在外面的循环语句前定义一个标号然后在里层循环体的代码中使用带有标号的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;
}
}
}
5.Switch语句能否用在byte,long,String上?
答:在Switch(expr)中,expr只能是整数表达式或者枚举常量。由于byte,short,char都可以隐式转换成int ,因此可以用在Switch语句上。
long类型不能隐式转换成int类型,因此不可以使用。
java1.7开始支持Switch使用String。
扩展:隐式转换:类型范围小的变量可以直接赋值给类型范围大的变量。
6.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编译器会对它进行特殊处理,因此可以正确编译。
7.char型变量中能不能存储一个中文汉字?为什么?
答:char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字。
如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
8.用最有效率的方法算出2*8等于几?
答:2 << 3。因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可
9.使用final关键字修饰一个变量时,是引用变量不能变还是引用的对象不能变
答:使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:
final StringBuffer a=new StringBuffer("immutable");
执行如下语句将报告编译期错误:
a=new StringBuffer("");
但是,执行如下语句则可以通过编译:
a.append(" broken!");
10."=="和equals方法的区别
答: == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用 == 操作符。
equals方法是用于比较两个独立对象的内容是否相同
String a=new String("foo");
String b=new String("foo");
System.out.println(a.equals(b));
标签:面试题,short,Java,String,收集,int,s1,变量
From: https://www.cnblogs.com/sillyfox/p/17801019.html