【Java错题收集与解析】(1)
来源:互联网 发布:网络运行工作计划 编辑:程序博客网 时间:2024/06/01 07:41
1.访问修饰符的作用范围从大到小是?
答案:public->protected->default->private
解析:protected比default的作用范围大,protected修饰的成员,除了可以被同包中的类进行调用,还可以被不同包下的当前类的子类所调用。而default,顾名思义,默认权限,也就是同包权限。
2.Math.round(2.6)=? Math.round(-2.6)=?
答案:Math.round(2.6)=3 Math.round(-2.6)=-2
解析: Math.round()是四舍五入,返回最近的整数。
3.
public class Test { public static void change(String message,StringBuffer stringBuffer){ message="讨厌"; int sb_length = stringBuffer.length(); stringBuffer.delete(0,sb_length); stringBuffer.append("才怪"); } public static void main(String[] args) { String message="喜欢"; StringBuffer stringBuffer=new StringBuffer(); stringBuffer.append("好久了"); change(message,stringBuffer); System.out.println("我"+message+"你"+stringBuffer.toString()); }}
输出结果为?
答案:我喜欢你才怪
解析:除了8种原始的数据类型外,方法调用传递的都是引用,从本质上来说,就是按值传递,当我们调用change方法时,实际上是把message的值(message指向空间的首地址)复制了一份,给形参message,我们在change方法里面,由于string是字符串常量,因此“message=”讨厌”;”只是改变了形参message的指向,使它指向了另一个字符串常量,因此主函数的message不变;
同理,stringBuffer是对申请的那段空间的引用,它的值其实是那段空间的首地址,当我们调用change方法时,实际上是把这个引用关系复制了一份给形参stringBuffer,当我们通过形参stringBuffer,改变形参stringBuffer所指向空间的值时,主函数里的stringBuffer所指向的空间的值就会改变,因为它们指向的是同一个空间。
再来看一个类似的题
public class Test { public static void change(String message,StringBuffer stringBuffer){ message="讨厌"; stringBuffer=new StringBuffer(); stringBuffer.append("才怪"); } public static void main(String[] args) { String message="喜欢"; StringBuffer stringBuffer=new StringBuffer(); stringBuffer.append("好久了"); change(message,stringBuffer); System.out.println("我"+message+"你"+stringBuffer.toString()); }}
这次的运行结果是?
答案:我喜欢你好久了
解析:很简单,正如之前所说的,形参实参传递其实是复制,当我们调用change方法时,主函数里的stringBuffer和形参stringBuffer指向同一段空间a,这时,我们更改了形参stringBuffer的指向,使他指向另外一 段空间b,再改变形参stringBuffer所指向空间的值,实际上是改变了b空间的值,而a空间的值(主函数里的stringBuffer所指向的空间的值)并没有发生改变。
4.以下关于类的说法正确的是?
A只要没有定义不带参数的构造方法,JVM都会给类生成一个默认的构造方法
B局部变量的作用范围仅仅在定义他的方法内,或者是在定义它的控制流块中
C使用其他类的方法,仅仅需要引用 方法的名字即可
D在类中定义的变量成为类的成员变量,在其他类中可以直接使用
答案:B
解析: 只要没有定义构造方法,JVM都会给类生成一个默认的构造方法,A错; 使用其他类的方法,要使用类名.方法来调用,C错;只有在类中定义的被static修饰的变量才是类的成员变量,而且,类的private修饰的成员变量不能被其他类使用,D错。
5.某系统有11个资源,n个进程公用这些资源,每个进程要使用3个资源,当n的取值不超过多少时,系统不会发生死锁?
答案:5
解析:这类题型可以这样来计算,a个资源,n个进程,每个进程b个资源,求n的最小值,那么,n的最小值就是:a/(b-1),当n小于等于a/(b-1)时,系统就不会发生死锁。
- 【Java错题收集与解析】(1)
- java垃圾收集解析
- 与Java相关的技术收集(持续收集)
- java垃圾收集器与内存分配策略(1)
- JAVA面试错题收集:(四)
- 常用的Linux命令收集与解析
- 程序执行时错误与解析收集
- iOS Crash日志收集与解析
- java开源HTML解析器收集
- Java在线教程与书籍收集
- java异常收集与整理
- Java 理论与实践: JVM 1.4.1 中的垃圾收集
- 垃圾收集器与Java编程(转载)
- java 笔试题收集
- JAVA面试题收集(1)
- JAVA面试题收集(1)
- java面试题收集整理(1)
- Java试题收集1
- table导出成excel
- 【工具】这是一篇获取工具的帖子
- Deep Learning(深度学习)学习笔记整理系列之(二)
- 【笔记-C语言】 基本数据类型
- Python3爬虫学习笔记(1.urllib库详解)
- 【Java错题收集与解析】(1)
- 动态规划【1】最长公共子序列
- MapReduce的一个通俗解释
- 第十四周项目2
- 大小字母的互换
- C语言关键字
- centos 7安装 mysql-5.7.20
- Activemq消息队列的集成与使用
- 前(AngluarJS)后(Java)端分离微信授权