如何在java中改变方法的值?

fdu*_*s77 1 java string

你只能改变void degitir() 方法.无法添加任何内容.只写这个方法 void degitir()

如何改变 String X

static void degitir(String s){
    //Only here can be written
}

public static void main(String[] args) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
    String X = "ahmet";
    System.out.println("X = " + X);
    degitir(X);
    System.out.println("X = " + X);
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*art 7

字符串是不可变的,因此您无法更改其值.

您唯一能做的就是将变量分配给另一个字符串.


Aug*_*sto 5

有一种方法但它违反了所有其他答案指出的方式,因此应该避免.你想要做的是通过反思来完成的:

static void degitir(String s){
    try{
        java.lang.reflect.Field field = String.class.getDeclaredField("value");  
        field.setAccessible(true);  

        char[] value = (char[])field.get(s);
        value[0] = 'J';  
        value[1] = 'a';  
        value[2] = 'v';  
        value[3] = 'a';  
        value[4] = '!'; 

    }catch(Exception e){
        // Add message.
    }

}

public static void main(String[] args){

    String X = "ahmet";
    System.out.println("X = " + X);
    degitir(X);
    System.out.println("X = " + X);
}
Run Code Online (Sandbox Code Playgroud)