java char=‘a‘与Char=‘a‘的区别及在内存中的存储位置
时间: 2023-08-21 09:28:53 浏览: 79
在 Java 中,char 和 Char 是相同的,都是表示字符类型的关键字,而字符常量 'a' 和 "a" 分别表示 char 和 String 类型的值。
在内存中,char 类型占用 2 个字节,用于存储 Unicode 编码,而 char 类型的变量和常量都存储在栈内存中。例如,以下代码声明了一个 char 类型的变量和一个 char 类型的常量,并将它们的 Unicode 编码打印出来:
```java
char c = 'a';
char d = '中';
System.out.println((int) c); // 输出 97,表示字符 'a' 的 Unicode 编码
System.out.println((int) d); // 输出 20013,表示字符 '中' 的 Unicode 编码
```
相比之下,String 类型的常量 "a" 存储在常量池中,而 String 类型的变量存储在堆内存中。例如,以下代码声明了一个 String 类型的变量和一个 String 类型的常量,并将它们的地址打印出来:
```java
String s = "a";
String t = new String("a");
System.out.println(System.identityHashCode(s)); // 输出 356573597,表示 s 的地址
System.out.println(System.identityHashCode(t)); // 输出 1735600054,表示 t 的地址
```
在这个例子中,s 引用了常量池中的字符串 "a",而 t 创建了一个新的字符串对象,因此它们的地址不同。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)