账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    String类型的实例属性在内存中的偏移量不随字符串的长度变化而改变?
    71
    0
    public class A {
      public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        //System.out.println(  ClassLoader.getSystemClassLoader().toString());
        Unsafe unsafe = UnsafeUtil.getUnsafe();
        Person person = new Person();
        long offset = unsafe.objectFieldOffset(person.getClass().getDeclaredField("name1"));
        System.out.println(offset); // 16
        person.setName1("fasfsa321312");
        long offset1 = unsafe.objectFieldOffset(person.getClass().getDeclaredField("name1"));
        System.out.println(offset1);
    
      }
    
      private static class Person{
       // private int a;
        private String name;
        private String name1;
       // private static int c;
       // private int b;
        public void setName(String name){
          this.name = name;
        }
    
        public String getName(String name){
          return this.name;
        }
    
        public void setName1(String name){
          this.name1 = name;
        }
    
        public String getName1(String name){
          return this.name1;
        }
      }
    
      private static class UnsafeUtil {
        private static Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException {
          Field field = Unsafe.class.getDeclaredField("theUnsafe");
          field.setAccessible(true);
          return (Unsafe) field.get(null);
        }
      }
    }

    输出结果是:
    16
    16

    我想知道的是为什么在字符串变化的时候内存地址却没有变化??大佬们帮忙解答一下

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我予春风 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部