Tag: java

“while(true)”循环如此糟糕?

我已经使用Java进行了几年的编程,但是最近我刚回到学校学习正式课程。 我很惊讶地发现,在我的最后一项任务中,我失去了使用如下所示循环的要点。 do{ //get some input. //if the input meets my conditions, break; //Otherwise ask again. } while(true) 现在对于我的testing,我只是扫描一些控制台input,但我被告知,这种循环是不鼓励的,因为使用break类似于goto ,我们只是不这样做。 我完全理解goto及其Java表兄弟break:label的缺陷break:label ,我有良好的意识不要使用它们。 我也意识到,一个更完整的程序将提供一些其他的逃生方法,比如说,只是结束程序,但这不是我的教授引用的原因,所以… 什么是错误的, do-while(true) ?

为什么这个Java程序终止,尽pipe这显然不应该(也没有)?

今天我实验室的一个敏感操作完全错了。 电子显微镜上的执行器越过了边界,经过一连串的事件,我损失了1200万美元的设备。 我已经在故障模块中缩小了40多条线路,这是因为: import java.util.*; class A { static Point currentPos = new Point(1,2); static class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } } public static void main(String[] args) { new Thread() { void f(Point p) { synchronized(this) {} if (p.x+1 != py) { […]

如何将string转换为CharSequence?

如何将String转换为Java中的CharSequence ?

Java:为什么字符集名称不是常量?

字符集问题本身就是令人困惑和复杂的,但最重要的是,您必须记住您的字符集的确切名称。 它是"utf8"吗? 或"utf-8" ? 或者也许"UTF-8" ? 当search代码样本的互联网,你会看到以上所有。 为什么不把它们命名为常量并使用Charset.UTF8 ?

Eclipsedebugging器总是阻塞ThreadPoolExecutor,没有任何明显的exception,为什么?

我正在开发通常的Eclipse项目,这是一个J2EE应用程序,由Spring,Hibernate等构成。 我正在使用Tomcat 7(没有特别的原因,我没有利用任何新function,我只是想尝试)。 每当我debugging我的应用程序时,Eclipsedebugging器就会popup来,就像它已经到达断点一样,但事实并非如此,事实上,它停止在一个名为ThreadPoolExecutor的Java源文件上。 控制台上没有堆栈跟踪,只是停止。 然后,如果我点击简历,它继续下去,应用程序完美地工作。 这是在debugging器窗口中显示的内容: Daemon Thread ["http-bio-8080"-exec-2] (Suspended (exception RuntimeException)) ThreadPoolExecutor$Worker.run() line: 912 TaskThread(Thread).run() line: 619 我真的不能解释这一点,因为我根本没有使用ThreadPoolExecutor 。 必须是来自Tomcat,Hibernate或Spring的东西。 这是非常烦人的,因为我总是不得不在debugging过程中恢复。 任何线索?

为什么一次性Javastream?

与C#的IEnumerable ,在执行stream水线可以执行多次的情况下,Java中的stream只能被“迭代”一次。 任何对terminal操作的调用都会closuresstream,导致stream不可用。 这个“function”带走了很多权力。 我想这是不是技术性的原因。 这个奇怪的限制背后的devise考虑是什么? 编辑:为了演示我在说什么,请考虑以下在C#中的快速sorting实现: IEnumerable<int> QuickSort(IEnumerable<int> ints) { if (!ints.Any()) { return Enumerable.Empty<int>(); } int pivot = ints.First(); IEnumerable<int> lt = ints.Where(i => i < pivot); IEnumerable<int> gt = ints.Where(i => i > pivot); return QuickSort(lt).Concat(new int[] { pivot }).Concat(QuickSort(gt)); } 可以肯定的是,我并不是主张这是一个快速sorting的好实现! 然而,这是lambdaexpression式与stream操作相结合的performance力的一个很好的例子。 而且不能用Java来完成! 我什至不能问一个stream是否是空的,而不会使其无法使用。

编码约定 – 命名枚举

是否有一个约定在Java中枚举枚举? 我的首选是一个枚举types。 所以,例如,你有一个枚举 Fruit{Apple,Orange,Banana,Pear, … } NetworkConnectionType{LAN,Data_3g,Data_4g, … } 我反对命名它: FruitEnum NetworkConnectionTypeEnum 我明白,挑选哪些文件是枚举很容易,但是你也可以: NetworkConnectionClass FruitClass 另外,是否有一个很好的文档描述常量,在哪里声明它们等?

为什么MongoDB Java驱动程序在条件中使用随机数生成器?

我在MongoDB的Java Connection驱动程序的 这个提交中看到了下面的代码,它首先出现在某种笑话中。 下面的代码是做什么的? if (!((_ok) ? true : (Math.random() > 0.1))) { return res; } (编辑: 自发布此问题后,代码已经更新 )

Java中的合法标识符

我正在阅读SCJP,我对这一行有个疑问: 标识符必须以字母,货币字符($)或连接字符(如下划线(_))开头。 标识符不能以数字开头! 它指出一个有效的标识符名称可以以连接字符(如下划线)开头。 我以为下划线是唯一有效的select? 还有什么其他的连接字符 ?

在运行时扫描Java注释

search带注释类的整个类path的最佳方法是什么? 我在做一个库,我想允许用户注释他们的类,所以当Web应用程序启动时,我需要扫描整个类path的特定注释。 你知道一个图书馆或Java设施来做到这一点吗? 编辑:我正在考虑像Java EE 5 Web服务或EJB的新function。 您使用@WebService或@EJB注释您的类,系统在加载时查找这些类,以便它们可以远程访问。