有人可以向我解释为什么以下代码在Java中编译好吗?
char c = 'a' + 10;
Run Code Online (Sandbox Code Playgroud)
为什么这不等于以下,不编译?
int i = 10;
char c = 'a' + i;
Run Code Online (Sandbox Code Playgroud)
Java语言规范(第3.10.1节)规定"如果整数文字long后缀为ASCII字母L或l(ell),则为整数文字;否则为类型int(§4.2.1)." 第4.2.2节引用"数值运算符,它产生类型int或值的值long".因此,在我的理解中,添加的结果应该是一个int,不能分配给char变量c.
但是,它编译得很好(至少在Sun JDK 1.6.0版本17和Eclipse Helios中).
也许是一个人为的例子,但是它被用在我一直在教的Java入门课程中,现在我发现我并不真正理解为什么它有效.
我正在为现有的Java Swing应用程序实现一些测试,这样我就可以安全地重构和扩展代码而不会破坏任何东西.我开始在JUnit中进行一些单元测试,因为这似乎是最简单的入门方法,但现在我的首要任务是创建一些端到端的测试来整体运行应用程序.
我在每个测试中重新启动应用程序,方法是将每个测试方法放在一个单独的测试用例中,并使用fork="yes"Ant的junit任务中的选项.但是,我想要作为测试实现的一些用例涉及用户退出应用程序,这导致调用System.exit(0)的方法之一.这被JUnit视为错误:junit.framework.AssertionFailedError: Forked Java VM exited abnormally.
有没有办法告诉JUnit退出代码为零实际上是否正常?
我花了一些时间在这里阅读和试验,并提出了一些方法,但还没有完成任何工作,所以我想知道更多有经验的Swing程序员会做什么.
我的应用程序的主窗口包含JPanel的自定义子类型,用于显示从数学函数计算的图像.这可能需要一些时间来计算,所以当发生这种情况时,我会在面板中间显示一条文本消息和一个进度条.我希望文本和进度条在调整面板大小时适当调整大小,可能使用面板宽度的恒定分数.
目前我有另一个包含文本和进度条的JPanel子类型,我将这个"进度面板"添加到主面板,并将其设置为在需要时可见.主面板不包含任何其他组件,但有自己的paintComponent()方法来显示从另一个类获取的BufferedImage.这有一些问题,因为它代表:
那你会怎么做?
如何调整文本大小.我是否需要在调整面板大小时显式创建新的字体,或者是否有任何方法可以更自动地执行此操作? -
我是Restructured Text的新手,我正在尝试编写一个文档,该文档引用名称中带有"at"符号的项目,例如"Foo @ BAR".当我使用docutils"rst2html"工具将.rst文件转换为HTML时,会将其转换为"mailto"链接.如果我使用双反引号进行逐字渲染,则会将其转换为等宽文本.如何让它以普通文本字体呈现,而不是转换为链接?
类javax.swing.CellRendererPane"插入在单元格渲染器和使用它们的组件之间"和"只是存在以阻止repaint()和invalidate()方法,否则这些方法会在配置渲染器时向上传播."
这就是JavaDoc告诉我的内容,但这是什么意思?它是如何使用的,如果会发生什么,repaint()并且invalidate()被允许,而不是传播上树?具体的例子特别受欢迎.