当前位置: 首页 > 面试题库 >

字符串连接使用效率低下

陆文博
2023-03-14
问题内容

我突然在我的java-app(使用NetBeans作为IDE)中创建记录器时,突然看到一条警告:“记录器中字符串连接使用效率不高”。

我的原始代码是

srcLogger.getLogger().log(Level.INFO,"UploadBean.doUpload completado [" + file.getName() + "]\n");

但是NetBeans建议将此代码转换为模板(“模板”在这里意味着什么?),并提供以下代码:

srcLogger.getLogger().log(Level.INFO, "UploadBean.doUpload completado [{0}]\n", file.getName());

这两种串联方式有什么不同,尽管我从未使用过后者。

干杯。


问题答案:

我会忽略该警告(如果可能,请将其关闭)。串联的效率不是那么低,因为现代编译器将其替换为基于的高效实现StringBuilder(如果您查看类文件的字节码,就会看到它)。

建议的替换方法不会串联字符串,但是需要一些额外的处理才能解析模板并将其与参数合并。

Netbeans,这是一个坏建议。

Java 1.5及更高版本是这样。 较旧版本的Java(可能)String在串联期间会创建许多未使用的实例。



 类似资料:
  • 问题内容: 我在Java中使用过String,StringBuilder和StringBuffer。 当我从效率的角度思考时,我想到了这个问题。 字符串连接中使用“ +”会影响效率吗? 问题答案: 是的,但是在大多数情况下都没关系。 对字符串常量使用“ +”是最有效的方法,因为编译器可以执行串联操作。 如果要连接两个String,则该方法效率最高,因为它避免使用StringBuilder。 除了向

  • 问题内容: 以下作品: 以下失败: 上面的错误消息是: DBAPIError:(错误)(“ 08001”,“ [08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnectW)”)无无 有人能指出我正确的方向吗?有没有一种方法可以简单地告诉sqlalchemy将特定的连接字符串传递给pyodbc? 请注意: 我想保留此DS

  • 问题内容: 我使用来了解Java与运算符的工作方式。 它是用同样的操作? 问题答案: 不。使用和做不一样。 在Java中,字符串实例是不可变的。 因此,如果您这样做: 每次连接时都在创建新的字符串。 另一方面,StringBuilder就像一个缓冲区,可以在追加新Strings时根据需要增长。 经验法则是(由于我的评论而改变): 如果要进行大量连接(例如,在循环内进行连接,或生成由多个字符串连接的

  • 我目前正在使用以下连接字符串连接到数据库(数据库与ServerIP在同一台服务器上): 这在asp中使用时连接良好。网(我已经手动创建了dbUserId,并从sql server management studio为其分配了dbUserPassword。dbUserId是数据库“dbName”的所有者) 我在另一台电脑上有一个java swing应用程序,需要连接到同一个数据库。我正在使用sqlj

  • 我使用ServiceBustigger创建了一个Azure Function应用程序(监听主题订阅)。很好。但是现在我试图制作一个QueueTrigger来监听一个简单的队列,但是我得到了以下错误。 我也是这样做的。我在Visual Studio中创建了一个新项目,并将其指向我在Azure上的存储帐户。指定了队列名称。队列存在。我尝试创建一个新的共享访问策略。已将连接字符串复制到本地。设置。jso

  • 问题内容: 我有以下代码 输出为。 Java如何完成字符串连接的技巧? 问题答案: 因为Java将表达式转换为类似 实际上,我认为它可能使用s,因此: 解决更高效 这使用“ 字符串”构建器上的方法(针对每种类型),这些方法可以正确处理