Java 字符串的编译时间与运行时间解析

Java 字符串的编译时间与运行时间解析

字符串的编译时解析

当字符串在字符串字面意义和’+’运算符的帮助下被创建时,它们在编译时被连接起来。这被称为字符串的编译时解析。编译器消除了连接运算符并优化了字符串。

例子。

考虑一下下面的代码。

String str = "Geeks "
             + "for"
             + "Geeks";

上述代码被编译器通过编译时对字符串的解析优化为:。

String str = "GeeksforGeeks";

字符串的运行时间解析

当字符串与变量和’+’运算符一起被创建时,由于变量的值无法事先预测,它们只能在运行时被连接起来。这被称为字符串的运行时间解析。

例子。

考虑一下下面的代码。

String str = "Geeks " + var + "Geeks";

由于变量 “var “的值是未知的,上述代码在编译时不能被编译器优化。因此,字符串的运行时间解析就发生在这里。

不同的情况下,确定决议的类型。

  1. 假设字符串是用StringBuffer定义的。
String str = (new StringBuffer())
                .append("Geeks")
                .append("for")
                .append("Geeks")
                .toString();

字符串解析的类型。字符串的运行时解析

这里编译器不能在编译时解决,因为对象的创建是一个运行时活动。因此,上述字符串将在运行时被解析。

  1. 假设字符串是用StringBuffer定义的。
String str = "Geeks"
             + " "
             + "for"
             + " "
             + "Geeks";

字符串解析的类型。编译时对字符串的解析

这里编译器可以在编译时解决,因为给定的字符串是字符串字面。因此,上述字符串将在编译时被解析。

  1. 假设字符串被定义在一个返回语句中。
public static String func(String var)
{
    return "Geeks" + var + "Geeks";
}

字符串解析的类型。字符串的运行时解析

这里编译器不能在编译时解决,因为变量’var’的值是运行时的活动。因此,上述字符串将在运行时被解析。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程