String包含几种不同的创建方式,并且不同的创建方式都会将String存到入不同的区域内,例如:String池 或者 java堆中。其中有一些原理,只要懂这些原理。以上的问题都不是问题。
原理1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。
原理2:Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。
原理3:使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。
原理4:使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。
String a = "ab";
String b = "a" + "b";
System.out.println(a==b);
String a = "abc";
String b="ab";
String c=b+"c";
System.out.println(a==c);
String a = "ab1";
String b = "ab"+1;
System.out.println(a==b);
String a = "ab1";
String b = "ab"+1;
String c = b + "";
System.out.println(a==c);
String a = new String("abc");
String b = "abc";
System.out.println(a==b);
String a = "abc";
String b = "abc";
System.out.println(a==b);
分享到:
相关推荐
#### 二、List转String数组的方法 下面我们将通过三个不同的示例来展示如何将`List<String>`转换为`String[]`数组。 ### 示例1:使用toArray方法 这是最简单也是最常用的转换方式,直接调用`List`的`toArray`方法...
根据所提供的代码片段和描述,本文将详细解析几种常见的数据类型转换方法,包括`string`、`wstring`、`cstring`、`char`、`tchar`、`int`、`dword`之间的转换。 ### 1. `string`与`wstring`之间的转换 #### `...
以下将详细介绍两种主要的Java `List`转换成`String`数组的方法。 ### 方法一:使用`toArray()`方法 **代码示例:** ```java List<String> list = new ArrayList<String>(); list.add("a1"); list.add("a2"); ...
C# 拼接字符串的几种方式和性能 C# 拼接字符串的方式有多种,每种方式都有其优缺,今天我们将讨论三种常用的方式:简单“+=”拼接法、String.Format()和StringBuilder.Append()。 1. 简单“+=”拼接法 简单“+=”...
在Java中,创建 `String` 对象时,主要涉及以下几种内存区域: 1. **常量池** (Constant Pool): 每个类或接口都有自己的常量池,它包含了编译期间确定的所有字面量和符号引用。 2. **堆** (Heap): 动态分配的内存...
标题提到的"Java String转int还有其它几种写法",描述中提到了两种常见方法:`Integer.valueOf()`和`Integer.parseInt()`。以下是这些方法的详细解释: 1. **`Integer.valueOf()`方法**: `Integer.valueOf()`是...
### Java文件下载的几种方式详解 在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、...
在Java中,声明数组有两种方式: - `type[] arrayName;` 这种格式更常见,它表明`arrayName`是一个`type`类型的数组引用。 - `type arrayName[];` 虽然也是合法的,但并不推荐,因为它可能引起混淆,让人误以为`...
这种方式创建的String对象位于常量池中,具有不可变性(immutable),即一旦创建后其内容就不能改变。 **1.2 使用new关键字** 另一种常见的初始化方法是使用`new`关键字: ```java String s = new String("hello")...
在C#中,可以通过以下几种方式调用WebService: 1. **使用WSDL生成代理类**: - 在客户端项目中,使用“添加服务引用”功能,通过提供WebService的WSDL地址(通常是`...
4. **JSON-P(Java API for JSON Processing)**:这是Java EE标准的一部分,提供了一种标准的方式来处理JSON数据。通过`javax.json.Json.createObjectBuilder()`可以创建JSON对象,`JsonReader/JsonWriter`接口用于...
SAX(Simple API for XML)是一种基于事件驱动的解析方式,它不会一次性加载整个XML文档到内存,而是逐行读取并触发相应的事件回调。这种方式适合处理大型XML文件,因为它节省了内存资源。然而,由于它不保留整个...
字符串比较是常见的操作之一,主要包括以下几种方法: 1. **使用`==`操作符**:检查两个字符串变量是否指向同一个对象。 ```java String a = "abc"; String b = "abc"; System.out.println(a == b); // 输出 ...
以下是对几种常见转换方法的详细解释: 1. **`Object.toString()`** `Object`类是所有Java类的基类,它提供了`toString()`方法。默认情况下,`toString()`返回类名加@加哈希码的十六进制表示。如果你创建了一个...
Matlab与C#连接的几种方式比较 Matlab与C#连接是指将Matlab和C#两个不同的编程语言连接起来,以便相互调用和交换数据。在实际应用中,这种连接方式非常有用,例如在机器学习、数据分析、图像处理等领域中,Matlab的...
这两种形式都是用来从原始字符串中截取一部分字符并创建一个新的`String`对象。 首先,让我们看第一种形式`substring(index)`。这个方法从指定的索引位置开始,一直到字符串末尾。在示例代码中,`stringOne....
`std::string` 提供了以下几种转换方式: - `s.c_str()`:返回一个以 `/0` 结尾的 C 风格字符串。 - `s.data()`:返回一个指向字符串内部数据的指针,注意该指针不保证以 `/0` 结尾。 - `s.copy(cstr, len, pos)`:...
这个函数先将std::string转换为UTF-16的std::u16string,然后再创建一个CString对象。 以上就是关于Unicode CString和std::string之间转换的基本概念和可能的实现方式。在实际开发中,了解这些转换方法对于跨平台和...
`string` 类提供了几种方法来改变字符串的大小。 - **调整大小并填充**: - `void resize(int len, char c);` - 将字符串的大小设置为 `len`,如果新大小比原大小大,则用字符 `c` 填充额外的空间。 #### 输入...
在C#中,字符串连接主要有以下几种方式: #### 2.1 `+` 运算符 可以直接使用加号(+)来连接两个或多个字符串,但频繁使用会降低性能,因为每次连接都会创建新的字符串对象: ```csharp string str1 = "Hello"; ...