【Java面试题解析】 1. 代码运行结果分析: ```java public class TestString{ public static void link(String a){ a += "World"; } public static void main(String[] args){ String a = "Hello"; link(a); System.out.println(a); } } ``` 答:这段代码的输出是 "Hello"。原因是Java中的字符串是不可变的,`a += "World"` 实际上创建了一个新的字符串对象,并没有改变原始的`a`引用。因此,`main`方法中的`System.out.println(a)`依然打印出原始的字符串。 2. 代码运行结果分析: ```java package test; public class FatherClass { public FatherClass() { System.out.println("FatherClass Create"); } } package test; import test.FatherClass; public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClass Create"); } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } } ``` 答:这段代码会打印 "FatherClass Create" 两次,然后是 "ChildClass Create"。首先创建了`FatherClass`的对象,然后创建了`ChildClass`的对象,由于`ChildClass`继承自`FatherClass`,所以在构造`ChildClass`时,会先调用`FatherClass`的构造器。 3. 字符串分隔函数实现: 题目要求编写一个函数,根据给定的字符长度将字符串分隔成多个子字符串。给出的函数代码如下,需要补充完整。 ```java public String[] split(String str, int chars){ int n = (str.length()- 1 + chars)/chars; String ret[] = new String[n]; for(int i=0; i<n; i++){ if(i < n-1){ ret[i] = str.substring(i*chars , (i+1)*chars); }else{ ret[i] = str.substring(i*chars); } } return ret; } ``` 这段代码已经实现了基本功能,根据字符长度`chars`将字符串`str`分割成若干个子字符串,并存储到数组`ret`中。 4. 字节与位的关系: 一个`byte`包含8个`bit`。 5. 字符串常量比较: "beijing" == "beijing" 的返回结果是 `True`。在Java中,字符串常量池中相同的字符串会共享同一个引用,因此两个双引号包围的相同字符串是相等的。 6. String、StringBuffer 和 StringBuilder 的区别: - `String`:不可变对象,每次修改都会生成新的字符串对象,不适用于频繁修改的情况。 - `StringBuffer`:线程安全,适合多线程环境下对字符串进行修改,性能相对较差。 - `StringBuilder`:从JDK 5开始引入,非线程安全,单线程环境下性能优于`StringBuffer`。 7. try-catch-finally 语句的执行顺序: 当`try`块中有`return`语句时,`finally`块的代码仍然会执行,但`return`语句会在`finally`块执行完毕后执行,即`finally`块在`return`语句之前执行。 8. 数组和String的length属性和方法: - 数组没有`length()`方法,但有一个`length`属性,可以获取数组的元素数量。 - `String`类有`length()`方法,用于获取字符串的长度(字符数量)。 9. 浮点数与整型的转换: 语句 `float f=1.3;` 无法通过编译,因为直接将浮点数赋值给`float`变量需要强制类型转换,正确形式应为 `float f=(float)1.3;`。 10. 关键字final、finally和finalize: - `final`:用于声明变量、方法或类,表示不可变或不可重写。 - `finally`:用于异常处理,确保代码块无论如何都会被执行。 - `finalize`:是Object类的一个方法,用于在对象被垃圾收集前执行清理工作,但不推荐直接使用,因为其执行时间不确定,且性能影响较大。通常更好的做法是使用`try-with-resources`或显式关闭资源。
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助