草庐IT

string.format

全部标签

java - Java 编译器会在 for 循环的条件下优化 String.length() 吗?

考虑以下Java代码片段:Stringbuffer="...";for(inti=0;i由于String是不可变的并且buffer不会在循环内重新分配,Java编译器是否足够聪明以优化掉buffer.length()调用for循环的条件?例如,它会发出等同于以下内容的字节代码吗?其中buffer.length()被分配给一个变量,并且该变量在循环条件中使用?我读到一些语言(如C#)会进行此类优化。Stringbuffer="...";intlength=buffer.length();for(inti=0;i 最佳答案 在Java(

java - 为什么传递给 List 参数的 List<Integer> 上的 add(String) 不抛出异常?

为什么可以插入String进入List在下面的代码中?我有一个将数字插入整数列表的类:publicclassMain{publicstaticvoidmain(String[]args){Listlist=newArrayList();list.add(2);list.add(3);list.add(4);Inserterinserter=newInserter();inserter.insertValue(list);System.out.print(list);}}然后我有一个单独的类,它插入一个String进入List,带有数字字符串值"42":publicclassInsert

java - 如何将非泛型 List 转换为 List<String>?

当我尝试使用Java8流进行转换时,出现编译错误:IncompatibletypesRequired:ListFound:java.lang.ObjectArrayListlist=newArrayList();list.add("Test");list.add("Java");list.add("Other");//Thiswon'tcompileListstrings=list.stream().map(object->Objects.toString(object,null)).collect(Collectors.toList()); 最佳答案

java.lang.ClassCastException : [B > cannot be cast to java. lang.String

publicLoginauthenticate(Loginlogin){try{MessageDigestmd=MessageDigest.getInstance("SHA-256");Stringpassword=login.getPassword();try{md.update(password.getBytes("UTF-16"));byte[]digest=md.digest();Stringquery="SELECTLFROMLoginASLWHEREL.email=?ANDL.password=?";Object[]parameters={login.getEmail(),

Java 字符串文字自动解释为 String 对象,但是如何呢?

Java自动将字符串文字解释为String对象背后的机制是什么,因为没有重载运算符并且没有对低级字符串缓冲区(不包括高级StringBuffer)的默认支持?这是语言还是虚拟机上下文? 最佳答案 两者兼而有之。JVM具有用于将字符串文字加载到运行时堆栈的字节代码,并且这些操作码在JVM规范中指定为通过将适当构造的String对象插入堆栈来工作,该对象的内容等于在类文件。除了必须驻留String对象之外,没有关于如何完成此操作的规范,这意味着转换是特定于实现的。在语言级别,编译器可以将它看到的任何String文字视为一个完整的Stri

String 对象改变时的 Java String Immutability 存储

我知道如果一个字符串是用文字初始化的,那么它会在字符串池中分配一个空间,如果用新的关键字初始化它会创建一个字符串的对象。但是我对下面写的一个案例感到困惑。我的问题是,如果使用new关键字创建一个字符串,然后使用文字更新它的值怎么办?例如Strings=newString("Value1");--Createsanewobjectinheapspace那么如果写下一条语句如下呢s="value2";所以我的问题是,1它会在字符串池中创建一个字符串文字还是会更新该对象的值?2如果它在字符串池中创建一个新文字,当前存在的对象会发生什么?它会被销毁还是会一直存在直到调用垃圾收集器。这是一个小字

java - JDK-9 不允许我使用字符串 : "java.lang.String is ambiguous"?

一周前,我的每个项目都正常工作,但是当我将Eclipse更新到Oxygen版本并安装JDK-9时,事情就变得奇怪了。当我尝试使用字符串时,一段时间后(更像是每次我保存项目时),编译器会针对我项目中的每个字符串向我抛出一个错误。字符串类型被识别为有歧义的类"Thetypejava.lang.Stringisambiguous"所以我尝试导入java.lang.String看看它是否修复了错误:导入后"Thepackagejava.langisaccessiblefrommorethanonemodule:java.base,java.base"惊喜!?它不会:(我尝试在Google和SO

【Unity】内存优化之— —Texture的MaxTextureSize以及Format压缩格式

本人才疏学浅,只是近期略看了一下Texture的内存,如有不对的地方,还望大佬指正。参考文章:你所需要了解的几种纹理压缩格式原理1.说一说图片占用的内存关于图片的内存,是怎么算的呢,就是图片的长乘以宽,乘以每个像素点占的byte大小。MaxTextureSize,影响的就是基础的长和宽。图片的压缩格式,影响的就是每个像素点占的byte大小。就举一个最基础的例子,1024X1024大小,格式是RGBA32的图片。那其内存就为1024x1024x32/8=4x(1024x1024)=4MB。我们知道1024x1024就是1M(bit),除以8换算为M(Byte),乘以32则是RGBA32中的那个单

java - Liquibase 错误 [Postgresql] : unterminated dollar-quoted string at or near "$BODY$

Liquibaseerror:unterminateddollar-quotedstringatornear"$BODY$`Chaneg日志xml有一个条目:见下文包含文件="/home/dev/....../admin_script.sql"文件内容:...............CREATEORREPLACEFUNCTIONmy_schema.function-name()RETURNSsmallintAS$BODY$DECLAREv_next_gen_idsmallint:=0;BEGIN..........异常(exception):liquibase.exception.Da

java - 如何让 string.format 在编译时报错

编译器可以访问格式字符串以及所需的类型和参数。所以我假设会有一些方法来指示可变参数的缺失参数......即使只针对一部分情况。eclipse或其他ide是否有某种方式表明传递的可变参数可能会在运行时导致问题? 最佳答案 看起来FindBugs可以解决您的问题。有一些与格式字符串相关的警告类别。http://www.google.com/search?q=%2Bjava+%2Bprintf+%2Bfindbugshttp://findbugs.sourceforge.net/bugDescriptions.html#VA_FORMAT