/*
* ReflectString.java
* Version 1.0.0
* Created on 2017年12月15日
* Copyright ReYo.Cn
*/
package reyo.sdk.utils.test.reflect; import java.lang.reflect.Field; public class ReflectString { public static void main(String[] args) {
String s1 = "reyo";
String s2 = "reyo";
String s3 = new String("reyo");
String s4 = new String(s1);
System.out.println("s1==s2:" + (s1 == s2));
System.out.println("s1==s3:" + (s1 == s3));
System.out.println("s3==s4:" + (s3 == s4));
try {
Field f = String.class.getDeclaredField("value");
System.out.print("Accessible: " + f.isAccessible());
f.setAccessible(true);
System.out.println(" -> " + f.isAccessible());
char[] v = (char[]) f.get(s1);// 获取S1的内部value数组
System.out.print("\nvalue:");
System.out.println(v);
v[0] = 'x';// 修改数组
v = new char[1];// 目测因为是get到的是引用的复制,这个引用改变不影响原引用
v[0] = 'y';
System.out.print("value:");
System.out.println(v); } catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("\ns1:" + s1 + "\ns2:" + s2 + "\ns3:" + s3 + "\ns4:" + s4);
System.out.println("\ns1==s2:" + (s1 == s2));
System.out.println("s1==s3:" + (s1 == s3));
System.out.println("s3==s4:" + (s3 == s4));
}
}

s1==s2:true
s1==s3:false
s3==s4:false
Accessible: false -> true

value:reyo
value:y

s1:xeyo
s2:xeyo
s3:xeyo
s4:xeyo

s1==s2:true
s1==s3:false
s3==s4:false

Java反射-修改String常量的更多相关文章

  1. 通过JAVA反射修改JDK1.6*当中DNS缓存内容

    时间 2012-05-28 17:09:03  Taobao QA Team原文  http://qa.taobao.com/?p=15523 为了实现性能压测时的域名动态绑定功能,尝试通过java反 ...

  2. Java反射-修改private final成员变量值,你知道多少?

    大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量.今天就举几个小例子说明.  基本数据类型 String类型 ...

  3. Java反射-修改字段值, 反射修改static final修饰的字段

    反射修改字段 咱们从最简单的例子到难, 一步一步深入. 使用反射修改一个private修饰符的变量name 咱们回到主题, 先用反射来实现一个最基础的功能吧. 其中待获取的name如下: public ...

  4. Java 反射修改类的常量值、静态变量值、属性值

    前言 有的时候,我们需要修改一个变量的值,但变量也许存在于 Jar 包中或其他位置,导致我们不能从代码层面进行修改,于是我们就用到了下面的场景,通过反射来进行修改变量的值. 定义一个实体类 class ...

  5. java反射修改静态方法的值setAccessible

    这几天闲来无事.在网上看了一个题目,相信大家都知道这个题目  static void change(String str){         str="welcome";     ...

  6. java反射修改final变量

    private void updateFinalModifiers(Field field) throws NoSuchFieldException, IllegalAccessException { ...

  7. Java反射之修改常量值

    1. 通过反射修改常量的值 package com.blueStarWei.invoke; import java.lang.reflect.Field; public class ModifyFin ...

  8. 基于NACOS和JAVA反射机制动态更新JAVA静态常量非@Value注解

    1.前言 项目中都会使用常量类文件, 这些值如果需要变动需要重新提交代码,或者基于@Value注解实现动态刷新, 如果常量太多也是很麻烦; 那么 能不能有更加简便的实现方式呢? 本文讲述的方式是, 一 ...

  9. 不藏了,这些Java反射用法总结都告诉你们

    摘要:Java反射是一种非常强大的机制,它可以在同一个系统中去检测内部的类的字段.方法和构造函数.它非常多的Java框架中,都大量应用了反射技术,如Hibernate和Spring.可以说,反射机制的 ...

随机推荐

  1. 面试经典---数据库索引B+、B-树

    大型数据库数据都是存在硬盘中的,为了操作的速度,需要设计针对外存的数据结构.而数据库索引技术就是在面试中反复被问到的一个问题:数据库索引是怎么实现的?数据库索引越大越好吗? 需要详细了解下这方面的知识 ...

  2. idea 从数据库快速生成Spring Data JPA实体类

    第一步,调出 Persistence 窗口. File—>Project Structure—>model—> + —>JPA 第二步:打开 Persistence窗口 配置 ...

  3. android短信验证

    短信验证demo http://download.csdn.net/detail/crazy1235/8315279#comment 使用MOB平台开发,用法详见: http://blog.csdn. ...

  4. KnockoutJs学习笔记(九)

    由于component binding部分的内容更为复杂一些,所以这部分我暂时跳过,先学习click binding部分. click binding不仅可以作用于button.input.a等元素, ...

  5. 195 Tenth Line

    Given a text file file.txt, print just the 10th line of the file. Example: Assume that file.txt has ...

  6. hdu 5427(排序水题)

    排序 年轻的排前面 名字中可能有空格 Sample Input21FancyCoder 19962FancyCoder 1996xyz111 1997 Sample OutputFancyCoderx ...

  7. hdu 5011 nim博弈 (2014西安网赛E题)

    n堆石子,每次可以选一堆取走至少一个,之后你可以不操作或者把该堆石子分成两堆,每堆至少一个,和还是原来(取完石子后)的石子个数. Sample Input1121 131 2 3 Sample Out ...

  8. 喊山 BFS

    一个山头呼喊的声音可以被临近的山头同时听到.题目假设每个山头最多有两个能听到它的临近山头.给定任意一个发出原始信号的山头,本题请你找出这个信号最远能传达到的地方. 输入格式: 输入第一行给出3个正整数 ...

  9. Map知识点Utilities后续整理(关于Collections,Array,增强for循环)

    一:介绍 1.介绍 里面都是静态方法. 可以直接调用. Collections是集合框架中的一个工具类.该类中的方法都是静态的 提供的方法中有可以对list集合进行排序,二分查找等方法. 通常常用的集 ...

  10. 001.NTP简介

    一 NTP简介 ntp服务器顾名思义就是时间同步服务器(Network Time Protocol),时间同步对于计划备份.入侵检测记录.分布式任务调度或者事务订单管理来说都是非常有必要的日常任务. ...