Questions tagged «java»

Java是最初由Sun Microsystems开发的高级,独立于平台的,面向对象的编程语言。Java目前归甲骨文所有,甲骨文于2010年收购了Sun。

6
当大多数情况下建议使用双精度时,为什么浮点数仍是Java语言的一部分?
在我所见过的每个地方,它都说在几乎所有方面double都优于float。在Java中float已经过时了double,为什么仍要使用它呢? 我用Libgdx编写了很多程序,它们迫使您使用float(deltaTime等),但是在我看来double,就存储和内存而言,使用起来更容易。 我还读了什么时候使用float以及什么时候使用double,但是如果float真的只对小数点后有很多数字的数字有用,那为什么我们不能仅使用的多种变体之一double? 关于人们为什么仍然坚持使用浮点数,即使它实际上不再具有任何优势,是否有任何理由呢?改变这一切只是太多的工作吗?

11
Java开发人员是否有意识地放弃了RAII?
作为一个长期的C#程序员,我最近来了解有关资源获取即初始化(RAII)的优点的更多信息。特别是,我发现了C#习惯用法: using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } 具有C ++等效项: { DbConnection dbConn(connStr); // do stuff with dbConn } 这意味着记住以包围资源的使用像DbConnection在一个using块是在C ++不必要!这似乎是C ++的一大优势。当您考虑一个类的实例成员类型为时,这甚至更令人信服DbConnection。 class Foo { DbConnection dbConn; // ... } 在C#中,我需要IDisposable像这样实现Foo : class Foo : IDisposable { DbConnection dbConn; public void Dispose() { dbConn.Dispose(); …
82 java  c#  c++  language-design 

6
为什么存在TRACE级别,何时应该使用它而不是DEBUG?
在Log4J,Slf4J和Java中的其他几个日志记录框架中,您有两个“开发人员”级别用于记录日志: 调试 跟踪 我了解DEBUG的作用,因为解释很清楚: 调试级别指定细粒度的信息事件,这些事件对于调试应用程序最有用。 但是TRACE级别对其用例不是很明确: 与调试相比,TRACE级别指定的信息事件更详细 (来源:log4J JavaDoc) 这没有告诉我如何或何时使用TRACE。有趣的是,这不是syslog标准中定义的严重性级别。搜寻TRACE和DEBUG之间的区别似乎只是返回“使用DEBUG,哦,也有TRACE”。我找不到TRACE级别的特定用例。我能找到的最好的东西是这个古老的Wiki页面,讨论了该级别存在的优点。 作为一名建筑师,这在我脑海中引发了许多旗帜和问题。如果一个年轻的开发人员要求我将TRACE添加到我的体系结构中,我会用以下问题轰炸他: 应该使用TRACE而不是DEBUG记录的一些信息示例是什么? 通过记录该信息可以解决什么具体问题? 在这些示例中,已记录信息的属性有哪些可清楚地区分TRACE级别而不是DEBUG级别的记录? 为什么该信息必须通过日志基础结构? 将这些信息保留在日志日志中而不只是使用这些日志有什么好处System.out.println? 为什么最好为此使用日志而不是调试器? 在TRACE级别进行日志记录的典型示例是什么? 在示例中,通过以TRACE级别而不是DEBUG进行记录获得了哪些具体收益? 为什么这些收益很重要? 相反:通过将其记录在TRACE而不是DEBUG上可以避免什么问题? 我还能如何解决这些问题?为什么在TRACE级别上进行日志记录比其他解决方案更好? TRACE级别的日志语句是否应保留在生产代码中?为什么? 但是考虑到它存在于大多数主要框架中,我猜它对某些事情有用吗?那么... TRACE的用途是什么,它与DEBUG有何区别?
82 java  logging 

3
不带参数不返回任何值的函数的名称是什么?[关闭]
在Java 8的java.util.function程序包中,我们有: 功能:接受一个参数,产生一个结果。 消费者:采取一种论点,什么都不做。 供应商:不带任何争议,得出一个结果。 ...:其他处理原语,2个参数等的情况... 但是我需要处理“ 不带参数,不产生任何东西 ”的情况。 在中没有任何内容java.util.functionnal。 因此,问题是: “ 不带参数不返回任何值的函数 ”的名称是什么? 在Java 8中,其定义为: @FunctionalInterface public interface InsertANameHere { void execute(); } 执行程序已经存在并具有另一个用途:“ 一个对象,该对象执行已提交的可运行任务 ”。签名不匹配(execute(Runnable):void),甚至都不是一个功能接口。 Runnable存在,但它与线程上下文紧密关联: 这个包java.lang不是java.util.function。 javadoc指出:“ Runnable接口应该由实例打算由线程执行的任何类实现 ”。 名称“ Runnable”建议在线程内运行一些代码。

8
为什么使用try…最终没有catch子句?
经典的编程方式是使用try ... catch。什么时候适合使用try不catch? 在Python中,以下内容看起来合法且有意义: try: #do work finally: #do something unconditional 但是,代码没有catch任何内容。类似地,在Java中可能会认为如下: try { //for example try to get a database connection } finally { //closeConnection(connection) } 看起来不错,突然间我不必担心异常类型等。如果这是一种好的做法,那么什么时候才是好的做法?另外,为什么这不是良好做法或不合法?(我没有编译源代码。我正在询问它,因为它可能是Java的语法错误。我检查了Python是否确实可以编译。) 我遇到的一个相关问题是:我继续编写函数/方法,最后必须返回一些内容。但是,它可能位于不应该到达的地方,必须是返回点。因此,即使我处理了上面的异常,我仍会NULL在代码中某些不应该到达的位置(通常是方法/函数的结尾)返回或返回一个空字符串。我一直设法对代码进行重组,以使它不必一定要进行重组return NULL,因为这看起来绝对不像是一种好习惯。

15
为什么Java可能比C ++更快?
在基准测试中,Java有时会胜过C ++。当然,有时C ++的表现会更好。 请参阅以下链接: http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ 但这怎么可能呢?令我惊讶的是,解释的字节码可能比编译的语言还要快。 有人可以解释一下吗?谢谢!
79 java  c++  performance 



11
为什么在不再引用Java对象后不立即删除它们?
在Java中,只要对象不再具有任何引用,就可以删除它,但是JVM决定何时实际删除该对象。要使用Objective-C术语,所有Java参考本质上都是“强”的。但是,在Objective-C中,如果对象不再具有任何强引用,则该对象将被立即删除。为什么在Java中不是这种情况?

13
为什么Java没有更广泛地用于游戏开发?[关闭]
我不是游戏开发者,也不是任何人,但是我知道Java在游戏开发中的使用并不广泛。Java对于大多数游戏来说应该足够快,所以要抓住什么呢?我可以想到一些原因: 缺乏具有Java专业知识的游戏开发人员 缺乏良好的游戏开发框架 程序员不想接受Java作为游戏编程语言。大多数人只接受C ++吗? 不支持游戏机(尽管PC市场仍然存在) 当然可以是其他东西。谁能比我更好地了解这个业务,可以解释一下为什么Java在游戏开发方面没有发展势头吗?

2
什么是“阴影” Java依赖项?
JVM开发人员在这里。最近,我在IRC聊天室甚至在我自己的办公室里看到了所谓的“ 阴影 ” Java库的玩笑。使用的上下文将类似于: “ 这样为XYZ提供了一个“阴影”客户端。 ” 完美的例子是针对HBase的Jira问题:“ 发布具有阴影依赖项的客户端工件 ” 所以我问:什么是阴影 JAR,“阴影”是什么意思?
74 java  libraries  jvm 

10
Java中每个类有多少行?[关闭]
根据您的经验,对于Java中的一个类来说,太多的代码行太多是什么有用的经验法则? 明确地说,我知道行数甚至不接近用于特定类中什么应该不使用的实际标准。应该根据适当的OOP原理(封装等)来设计类。就是说,经验法则可以为重构考虑提供一个有用的起点(例如,“嗯,此类有> n行代码;它可能不可读,并且在封装方面做得很差,所以我可能想看看是否应该在某个时候重构”)。 在另一方面,也许您遇到过非常大的类的示例,这些类仍然很好地遵守了OOP设计,并且尽管它们的长度很长,但是它们都是可读性和可维护性的? 这是一个有关每个函数行数的相关,不可重复的问题。

10
永远不要在Java中使用字符串?[关闭]
我偶然发现了一个博客条目,不鼓励在Java中使用字符串来使您的代码缺乏语义,建议您改用瘦包装器类。这是该条目提供的用于说明问题的示例的前后: public void bookTicket( String name, String firstName, String film, int count, String cinema); public void bookTicket( Name name, FirstName firstName, Film film, Count count, Cinema cinema); 根据我阅读编程博客的经验,我得出的结论是90%都是胡说八道,但是我想知道这是否是正确的观点。不知何故,我觉得不合适,但是我无法确切指出编程风格的不对之处。


3
实际上,“具有类路径异常的GPL”是什么意思?
Oracle似乎在GPL下许可了所有与Java相关的开放源代码,但有classpath例外。据我了解,这似乎可以将这些库与您自己的代码组合成GPL不必涵盖的产品。 这是如何运作的? 有哪些示例说明我如何使用和不能使用这些类? 为什么使用这个新许可证而不是LGPL,LGPL似乎允许几乎相同的事情,但是可以更好地建立和理解? 与LGPL有何区别?
69 java  licensing  gpl  lgpl 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.