关于String常量的编译器优化

简介: 先贴源代码如下所示:使用Eclipse编译器,JDK1.6 public class TestString { public static void main(String[] args) { String s = "a"+"b"+"c"+"d"; System.out.println(s); }} 再来看看,使用jd-gui,也就是Java Decompiler查看的反编译后的class文件代码。

先贴源代码如下所示:使用Eclipse编译器,JDK1.6

public class TestString {
	public static void main(String[] args) {
		String s = "a"+"b"+"c"+"d";
		System.out.println(s);
	}
}

再来看看,使用jd-gui,也就是Java Decompiler查看的反编译后的class文件代码。


public class TestString
{
  public static void main(String[] args)
  {
    String s = "abcd";
    System.out.println(s);
  }
}


也就是说,对于字符串常量来说,在编译期(转换为class文件之时)就会存在优化。

那么,问一个问题,在上述例子之中,创建了几个对象?


目录
相关文章
|
4月前
|
C++
【C++】string类的使用④(常量成员Member constants)
C++ `std::string` 的 `find_first_of`, `find_last_of`, `find_first_not_of`, `find_last_not_of` 函数分别用于从不同方向查找目标字符或子串。它们都返回匹配位置,未找到则返回 `npos`。`substr` 用于提取子字符串,`compare` 则提供更灵活的字符串比较。`npos` 是一个表示最大值的常量,用于标记未找到匹配的情况。示例代码展示了这些函数的实际应用,如替换元音、分割路径、查找非字母字符等。
|
SQL Java 编译器
【面试题精讲】String 类型的变量和常量做“+”运算时发生了什么?
【面试题精讲】String 类型的变量和常量做“+”运算时发生了什么?
|
Python
Python 自己动手创建string标准库中的常量
Python 自己动手创建string标准库中的常量
88 0
|
自然语言处理 开发者 Python
string库:Python的文本常量与字符串模板
string库:Python的文本常量与字符串模板
163 0
string库:Python的文本常量与字符串模板
[雪峰磁针石博客]python标准模块介绍-string:文本常量和模板
string—文本常量和模板 作用:包含处理文本的常量和类。 Python版本:1.4及以后版本 最早的Python版本就有string模块。 之前在这个模块中实现的许多函数已经移至str对象的方法。
|
XML 数据格式
Xaml中string(字符串)常量的定义以及空格的处理
原文:Xaml中string(字符串)常量的定义以及空格的处理 (1)基本用法 xaml中可以实例化各种对象,比如在ResourceDictionary中定义字符串常量:   ...
1171 0
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
36 0
java基础(13)String类
|
19天前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
39 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
16天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
16 2
|
18天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1