zoukankan      html  css  js  c++  java
  • java String 为什么叫不可变字符串,StirngBuilder和StirngBuffer为可变字符串

    写一个简单的代码

     运行之后发现还是有空格的存在

    原因是没有提供任何方法去改变它的内容,肯定有疑问,trim()不是去掉空格吗?,substring

    ()不是获得子字符串吗?其实把上面的trim方法换成什么都不会改变原字符串,而是返回新的字符串,例如:

    注意:只是string类中无法进行修改,而不是无法修改,可以用反射来实现对原字符串的修改

    发现可以进行修改

    代码如下:

    package com.me.test;
    
    import java.lang.reflect.Field;
    
    /**
     * @author sbr
     * @create 2020-11-17 10:34
     */
    public class Stirng {
        public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
            String name=" a b c ";
            String tname=name.trim();
            System.out.println("!!"+name+"!!");
            System.out.println("!!"+tname+"!!");
            final Field declaredField = String.class.getDeclaredField("value");
            declaredField.setAccessible(true);
            final char[] cs =(char[])declaredField.get(name);
            cs[0]='a';
            cs[6]='a';
            System.out.println(name);
    
        }
    
    }
  • 相关阅读:
    保证在浏览器上word/图片/Excel的下载的表现形式一样
    C学习笔记 知识集锦(二)
    函数返回值
    C++ 四种新式类型转换
    构造&析构
    指针与引用
    C++三大特性 封装 继承 多态
    Git stash 常见用法
    Git branch && Git checkout常见用法
    linux Vi使用
  • 原文地址:https://www.cnblogs.com/tkg1314/p/13992988.html
Copyright © 2011-2022 走看看