JAVA分享篇(1)基础知识大总结

当你用 Java 来实现你的第一个应用程序时,可能有人告诉你不应该使用 + 来连接字符串。

如果在应用程序逻辑中连接字符串,则这是正确的。字符串是不可以改变的,每个字符串的连接结果都存储在一个新的String对象中。这需要额外的内存并减慢您的应用程序的速度,尤其是当您在循环中连接多个字符串时。

在这样的情况下,你应该遵循技巧使用StringBuilder以编程方式连接String。但是,你如果只是将字符串,分成多行来改善代码的可读性,那情况就大不相同。

Query q = em.createQuery(“SELECT a.id, a.firstName, a.lastName ”+ “FROM Author a ”+ “WHERE a.id = :id”);

在这些情况下,你应该使用简单的 + 来连接你的字符串。java 编译器对此进行优化并在编译时执行连接。因此,在运行时,你的代码将只使用一个没有连接的字符串。

另一种避免任何开销和提高应用程序性能的简单快捷的方法是使用基本类型而不是它们的包装类。因此,最好使用int来替代Integer,使用double来替代Double。这允许JVM将值存储在堆栈而不是堆中以减少内存消耗,并作出更有效的处理。

BigInteger 和 BigDecimal 比简单的 long 或 double 需要更多的内存,并且会明显减慢所有计算速度。

所以如果你需要额外的精度,或者如果数字会超过long的范围,你最好三思而后行。这可能是你需要更改以解决性能问题的唯一方法,尤其是在实现数学算法时。

创建调试消息之前,你应该首先检查当前日志级别。否则,您可能会创建一个稍后将被忽略的日志消息字符串。

列举两个反面例子。

// don’t do thislog.debug(“User [” + userName + “] called method X with [” + i + “]”);// or thislog.debug(String.format(“User [%s] called method X with [%d]”, userName, i));

在这两种情况下,您将执行所有必要的步骤来创建日志消息,而无需知道日志框架是否会使用日志消息。因此,最好在创建调试消息之前检查当前日志级别。

// do thisif (log.isDebugEnabled()) { log.debug(“User [” + userName + “] called method X with [” + i + “]”);}

一般来说,字符串Replace方法正常工作并且效率很高,尤其是在使用Java9时。但是,如果你的应用程序需要大量替换操作并且没有更新到最新的java版本,那么仍然需要寻找更快更有效的替代方案。

免责声明:部分文章信息来源于网络以及客户意见反馈,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快联系您处理。

相关新闻

QR code