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

原始布尔值到字符串的串联/转换

段干长恨
2023-03-14
问题内容

这是如何运作的?我似乎找不到答案。

boolean bool=true;
System.out.println("the value of bool is : " + true);
//or
System.out.println("the value of bool is : " + bool);
  • 幕后发生了什么事?
  • 布尔值如何强制转换为字符串,因为布尔值不能隐式类型转换?
  • 是否涉及 自动装箱/拆箱
  • 是类似的方法toString()还是String.valueOf()涉及某种方法?

问题答案:

Java语言规范§5.1.11中阐明了确切的规则。字符串转换

根据这些规则,"str" + bool相当于:

"str" + new Boolean(bool).toString()

就是说,允许编译器在如何精确地评估整个表达式方面有很大的余地。从JLS§15.18.1。字符串串联运算符+:

一个实现可以选择在一个步骤中执行转换和连接,以避免创建然后丢弃中间String对象。为了提高重复字符串连接的性能,Java编译器可以使用StringBuffer该类或类似的技术来减少String通过对表达式求值而创建的中间对象的数量。

对于基本类型,实现还可以通过直接从基本类型转换为字符串来优化包装对象的创建。

例如,对于我的编译器,以下内容:

boolean bool = true;
System.out.println("the value of bool is : " + bool);

完全等同于:

boolean bool = true;
System.out.println(new StringBuilder("the value of bool is : ").append(bool).toString());

它们导致相同的字节码:

Code:
   0: iconst_1      
   1: istore_1      
   2: getstatic     #59                 // Field java/lang/System.out:Ljava/io/PrintStream;
   5: new           #166                // class java/lang/StringBuilder
   8: dup           
   9: ldc           #168                // String the value of bool is : 
  11: invokespecial #170                // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
  14: iload_1       
  15: invokevirtual #172                // Method java/lang/StringBuilder.append:(Z)Ljava/lang/StringBuilder;
  18: invokevirtual #176                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
  21: invokevirtual #69                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
  24: return


 类似资料:
  • 问题内容: 我有一个布尔变量,我想将其转换为字符串: 我需要转换后的值的格式为:,而不是 我试过了: 但是它告诉我,并且不是公认的功能。 如何将此布尔值转换为PHP 或PHP 格式的字符串? 问题答案: 最简单的解决方案:

  • 我有一个值,它将是四件事之一:布尔true、布尔false、字符串“true”或字符串“false”。如果字符串是字符串,我想将字符串转换为布尔值,否则不修改它。换句话说: “true”应该变为true “false”应变为false 真实应该保持真实 false应保持为false

  • 以便他们可以重新键入他们想要保存的名称,如果他们在开始时犯了错误。 但我仍然面临“错误:不兼容类型:字符串不能转换为布尔值”的问题。

  • 问题内容: 在Python中,我有一个像这样的字符串: 如何将其解码为普通字符串,例如: 问题答案: 如果您的输入值为字符串,请使用进行转换: 如果输入值是一个对象,则可以使用方法: 演示: 可以使用编解码器解码Python 2个字节的字符串: 对于 Unicode 文字(例如带前缀),请使用。

  • 我当时在做一个计算机科学测试,并尝试了这个问题。 据我所知,我认为打印输出是假的,因为据我所知,字符串只能与。等于()。但我弄错了。它说答案是假的,是真的。有人能解释一下原因吗?

  • 问题内容: 我有一个名为数据帧作为 我想将列转换为布尔值(当状态为“已交付”而状态为“未交付”时),但是如果状态既不是“未交付”也不是“未交付”,则应将其视为“类似”。 我想用一个字典 所以我可以轻松地添加其他字符串,可以将其视为或。 问题答案: 您可以使用: