纠错——字符类型是否可变
上一篇博客说到最近在学Python,其中有不少数据类型是不可变的,即赋新值以后会开辟新空间。与之前学习的Java对比,我错误的提到了字符。
在今天继续学习Py的过程当中我突然好奇“为什么Python中的String字符类型是不可变的”,搜索相关博客,看到一篇博客粘贴Java教学书上的原文。
String str = “Html”;
str = "HTML";
这个时候str已经不是原来的对象了。对此我专门做了一个小测试。
package com.Cra2iTeT; /** * @author Cra2iTeT * @version 1.0 * @date 2022/3/20 15:39 */ public class test { public static void main(String[] args) { String str = "11"; String str2 = str; System.out.println("str=>" + str + "\tstr2=>" + str2); if (str == str2) { System.out.println("---"); } str = "22"; System.out.println("str=>" + str + "\tstr2=>" + str2); if (str == str2) { System.out.println("==="); } } }
第二个if语句条件为false。调试查看得到的地址也不相同。
这也说明了Java当中的String类型数据其实也是不可变的,当你要做变换的时候,JVM就已经帮你们改变了引用地址,所以使用起来觉得String类型可变,基础不牢。
结论:Python和Java中String类型都是不可变数值类型。