java答疑
问 什么是 Java 的字节码?
答 它是程序的一种低级表示,可以运行于 Java 的虚拟机。将程序抽象为字节码可以保证 Java 程序员的
代码能够运行在各种设备之上。
问 Java 允许整型溢出并返回错误值的做法是错误的。难道 Java 不应该自动检查溢出吗?
答 这个问题在程序员中一直是有争议的。简单的回答是它们之所以被称为原始数据类型就是因为缺乏
此类检查。避免此类问题并不需要很高深的知识。我们会使用 int 类型表示较小的数(小于 10 个十
进制位)而使用 long 表示 10 亿以上的数。
问 Math.abs(-2147483648)
的返回值是什么?
答 -2147483648 。这个奇怪的结果(但的确是真的)就是整数溢出的典型例子。
问 如何才能将一个 double 变量初始化为无穷大?
答 可以使用 Java 的内置常数:
Double.POSITIVE_INFINITY 和 Double.NEGATIVE_INFINITY 。
问能够将 double 类型的值和 int 类型的值相互比较吗?
答 不通过类型转换是不行的,但请记住 Java 一般会自动进行所需的类型转换。例如,如果 x 的类型是
int 且值为 3 ,那么表达式
(x<3.1) 的值为 true ——Java会在比较前将 x 转换为 double 类型(因为 3.1
是一个 double 类型的字面量)。
问如果使用一个变量前没有将它初始化,会发生什么?
答 如果代码中存在任何可能导致使用未经初始化的变量的执行路径,Java 都会抛出一个编译异常。
问Java 表达式 1/0 和 1.0/0.0 的值是什么?
答 第一个表达式会产生一个运行时除零异常(它会终止程序,因为这个值是未定义的);第二个表达
式的值是 Infinity (无穷大)。
问 能够使用 < 和 > 比较 String 变量吗?
答 不行,只有原始数据类型定义了这些运算符。请见 1.1.2.3 节。
问负数的除法和余数的结果是什么?
答 表达式 a/b 的商会向 0 取整; a % b 的余数的定义是 (a/b)*b
+ a % b 恒等于 a 。例如 -14/3 和
14/-3 的商都是 -4 ,但 -14 % 3 是 -2 ,而 14 % -3 是 2。
问为什么使用 (a
&& b) 而非 (a & b) ?
答 运算符 & 、 | 和 ^ 分别表示整数的位逻辑操作与、或和异或。因此, 10|6 的值为 14 , 10^6 的值为
12 。在本书中我们很少(偶尔)会用到这些运算符。 && 和 || 运算符仅在独立的布尔表达式中有效,
原因是短路求值法则:表达式从左向右求值,一旦整个表达式的值已知则停止求值。
问嵌套 if 语句中的二义性有问题吗?
答 是的。在 Java 中,以下语句:
if
<expr1> if <expr2> <stmntA> else <stmntB>
等价于:
if
<expr1> { if <expr2> <stmntA> else <stmntB> }
即使你想表达的是:
if
<expr1> { if <expr2> <stmntA> } else <stmntB>
避免这种“无主的” else 陷阱的最好办法是显式地写明所有大括号。
问 一个 for 循环和它的 while 形式有什么区别?
答 for 循环头部的代码和 for 循环的主体代码在同一个代码段之中。在一个典型的 for 循环中,递
增变量一般在循环结束之后都是不可用的;但在和它等价的 while 循环中,递增变量在循环结束
之后仍然是可用的。这个区别常常是使用 while 而非 for 循环的主要原因。
问 有些 Java 程序员用 int a[] 而不是 int[] a 来声明一个数组。这两者有什么不同?
答 在 Java 中,两者等价且都是合法的。前一种是 C 语言中数组的声明方式。后者是 Java 提倡的方式,
因为变量的类型 int[] 能更清楚地说明这是一个整型的数组。
问为什么数组的起始索引是 0 而不是 1 ?
答 这个习惯来源于机器语言,那时要计算一个数组元素的地址需要将数组的起始地址加上该元素的索
引。将起始索引设为 1 要么会浪费数组的第一个元素的空间,要么会花费额外的时间来将索引减 1 。
问如果 a[] 是一个数组,为什么 StdOut.println(a) 打印出的是一个十六进制的整数,比如 @
f62373 ,而不是数组中的元素呢?
答 问得好。该方法打印出的是这个数组的地址,不幸的是你一般都不需要它。
问我的程序能够重新读取标准输入中的值吗?
答 不行,你只有一次机会,就好像你不能撤销 println() 的结果一样。
问 如果我的程序在标准输入为空之后仍然尝试读取,会发生什么?
答 会得到一个错误。 StdIn.isEmpty() 能够帮助你检查是否还有可用的输入以避免这种错误。
问这条出错信息是什么意思?
Exception
in thread "main" java.lang.NoClassDefFoundError: StdIn
答 你可能忘记把 StdIn.java 文件放到工作目录中去了。
问 在 Java 中,一个静态方法能够将另一个静态方法作为参数吗?
答 不行,但问得好,因为有很多语言都能够这么做。
java答疑的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java Object 对象拷贝答疑
Java Object 对象拷贝答疑 @author ixenos 摘要:在对象的clone过程需要注意的几点.关于关键字this.super 关于clone[对象拷贝] 在实际编程过程,有时候我们会 ...
- SSH答疑解惑系列(二)——java.lang.reflect.InvocationTargetException异常
在项目中遇到了invocationTargetException的问题,在这里跟大家分享一下. 报错信息如下: 使用反射时,比如执行invoke方法,如果被反射执行的方法体抛出了Exception,这 ...
- 《连载 | 物联网框架ServerSuperIO教程》1.4种通讯模式机制。附小文:招.NET开发,结果他转JAVA了,一切都是为了生活
参考文章: 1.SuperIO通讯框架介绍,含通信本质 2.C#跨平台物联网通讯框架ServerSuperIO(SSIO) 一.感慨 上大学的时候,没有学过C#,花了5块钱在地坛书市买了一本教程,也就 ...
- 2016-2017-2 《Java程序设计》教学进程
2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...
- JAVA抽象类与接口的详细解读与示例
接口存在的原因: JAVA是单继承的,不支持多继承,但是有了接口,JAVA可以实现多个接口: 一个类要是实现某一个接口就必须实现接口内声明的所有方法(强迫执行,即便是空方法,也要实现): 接口特点: ...
- java问卷
1.你对自己的未来有什么规划?做了那些准备? 对于每个人来讲只有一次,七八十年的时间是一个即漫长然而又很短暂的过程,对于漫长与短暂的看法,由于每个人所处的环境的不同以及对人生看法的不同而有所差异.痛苦 ...
- 2015-2016-2 《Java程序设计》教学进程
2015-2016-2 <Java程序设计>教学进程 目录 考核方式 寒假准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...
- 2015-2016-2 《Java程序设计》 游戏化
2015-2016-2 <Java程序设计> 游戏化 实践「<程序设计教学法--以Java程序设计为例>」中的「游戏化(Gamification)理论」,根据 2015-201 ...
随机推荐
- Nginx介绍 分类: Nginx 服务器搭建 2015-07-13 10:50 19人阅读 评论(0) 收藏
海量请求,高性能服务器. 对比Apache, Apache:稳定,开源,跨平台,重量级,不支持高度并发的web服务器. 由此,出现了Lighttpd与Nignx:轻量级,高性能. 发音:engine ...
- 模板类之间的友元关系实现Blob和BlobPtr
16.12编写你自己版本的Blob和BlobPtr模板,包含书中未定义的多个const成员. Blob.h(注意,成员函数的声明和定义要放在一个头文件中) /*记住,模板的头文件中通常既包括声明也包括 ...
- 应用Druid监控SQL语句的执行情况--转载
Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...
- Div+css中ul ol li dl dt dd使用
ol 有序列表.<ol><li>……</li><li>……</li><li>……</li></ol>表现 ...
- iOS UIKit:animation
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...
- 关于json中对象的删除
一个json对象在后台产生了,但是有些数据可能无效或者不合法,所以需要在前台作些例外处理,比如删除掉. json的删除有很多种,直接用过 delete json对象方式. 举例如下 Js代码 var ...
- Linux查看系统负载常用命令
1.查看负载 uptime :: up day, :, user, load average: 0.00, 0.00, 0.00 在过去1分钟.5分钟.15分钟内平均进程数量 2.查看用户 w :: ...
- U3D 收藏一个飞机随机运动的方法
文章转载:http://www.manew.com/thread-43578-1-1.html 前面的学习中已经涉及到了随机运动,这一篇主要还是前面的随机运动的改进,不废话直接上效果图吧,对比前面的随 ...
- js跨浏览器事件对象、事件处理程序
项目中有时候会不用jquery这么好用的框架,需要自己封装一些事件对象和事件处理程序,像封装AJAX那样:这里面考虑最多的还是浏览器的兼容问题,原生js封装如下:var EventUtil={ //节 ...
- Maven3(笔记一)
第一节:Maven 简介 百度百科:Maven 官网:http://maven.apache.org/ 第二节:Maven 安装与配置 Maven 下载:http://maven.apache.org ...