"Java基础题"
本资源包含了Java编程基础的一些常见面试问题,涵盖了类与文件结构、关键字的理解、操作符、循环控制、数据类型、方法、访问控制、多态、继承与接口等多个方面。以下是这些问题的详细解答:
1、一个.java源文件中可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开类。
2、Java没有goto语句,它鼓励使用结构化编程思想,避免无序的跳转。
3、&是位运算符,表示按位与;&&是逻辑运算符,只有当两边的操作数都为真时结果才为真。在布尔表达式中,&&具有短路特性,只会在必要时评估第二个操作数。
4、跳出多重嵌套循环可以使用标签(label)配合break语句,如:`outer: for (...) { inner: for (...) { ... break outer; } }`
5、switch语句不能作用于byte,但Java 7后可以用枚举类型;不能作用于long,但Java 14引入了switch表达式可以处理;可以作用于String,从Java 7开始。
6、对于short s1=1;,s1=s1+1;会丢失精度,因为+1的结果是int类型,需要显式转换。而s1+=1是合法的,编译器会自动处理类型转换。
7、char型变量可以存储一个中文汉字,因为UTF-16编码中,一个中文字符占两个字节。
8、计算2乘以8最有效率的方式是直接赋值:`int result = 2 * 8;`
9、设计一个一百亿的计算器要考虑数值溢出问题,可能需要使用BigInteger类处理大整数运算。
10、final修饰变量时,变量的引用不能变,但如果是对象,其内部状态可以改变。
11、"=="比较的是对象的引用,equals方法比较的是对象的内容(对于基本类型包装类和字符串,equals做了重写)。
12、静态变量属于类,实例变量属于对象,生命周期、作用域和访问权限均不同。
13、不能从static方法内部直接调用非static方法,因为static方法与类关联,而非static方法与对象关联。
14、Integer是int的包装类,用于对象封装,两者之间可以进行自动装箱拆箱。Integer的缓存范围有限,一般-128到127。
15、Math.round(11.5)等于12,Math.round(-11.5)等于-11,四舍五入处理。
16、代码不妥之处可能是指未初始化的变量、语法错误或逻辑错误,具体要看代码内容。
17、public是全局访问,private仅限本类访问,protected是子类和同包访问,不写默认为包访问。
18、Overload是重载,方法名相同但参数列表不同;Override是重写,子类覆盖父类方法。重载不改变返回值类型。
19、构造器不可被override,但可以重载。
20、接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,抽象类中可以有静态的main方法。
21、clone()方法通常会包含`super.clone()`以确保正确克隆。
22、面向对象的特征包括封装、继承、多态。
23、Java通过方法重写(Override)和方法多态来实现多态。
24、abstract class可以有方法实现,而interface不能;abstract class可以有构造器,interface没有;abstract class可以有非抽象方法,interface所有方法必须是抽象的。
25、abstract method不能同时是static、native或synchronized,因为它们的性质相互冲突。
26、内部类是嵌套在另一个类中的类,StaticNestedClass是静态内部类,不需要外部类实例就能创建,而InnerClass需要外部类实例。
27、内部类可以访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。
28、A类包含B类作为成员,B类中有一个方法m(),如果A类也定义了一个方法m(),则在B类的m()中调用A类的m()需使用`A.this.m();`
以上是针对Java基础知识的详细解释,这些问题对于理解和掌握Java编程至关重要。