Java中,先声明两个整型变量并赋值,然后将两个变量的值进行交换,求解?

注意:只能声明两个变量,不能声明第三个变量进行交换赋值。例如:
int i = 5;
int j = 6;
<<<<<<<<
int z = i;
i = j;
j = z;
这样不行。

int i = 5;
int j = 6;

i = i + j;    // 5 + 6 = 11
j = i - j;    // 11 - 6 = 5
i = i - j;    // 11 - 5 = 6

两个变量之和不超出范围就没问题

追问

如果是字符串,比如左手苹果右手香蕉,相互交换?

追答String left = "apple";
String right = "banana;

left += right;    // "applebanana";
right = left.substring(0, left.length() - right.length());    // "apple"
left = left.substring(right.length());                        // "banana"

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-23

这是很恶心的题目,不过有办法

    public static void main(String[] args) {

        int i = 5;
        int j = 6;

        System.out.println("交换前:i=" + i + ",j=" + j);

        i = j + j;
        j = i - j;
        i = i - j;

        System.out.println("交换后:i=" + i + ",j=" + j);
    }

追问

如果是字符串,比如左手苹果右手香蕉,相互交换?

追答    public static void main(String[] args) {

        String str1 = "a";
        String str2 = "bcd";

        System.out.println("交换前:str1=" + str1 + ",str2=" + str2);

        str1 = str1 + str2;
        str2 = str1.substring(0, str1.length() - str2.length());
        str1 = str1.substring(str2.length(), str1.length());

        System.out.println("交换后:str1=" + str1 + ",str2=" + str2);
    }

这种问题,这样的写法,除了炫耀,没一点用,实际工作中,不会写这样的代码

第2个回答  2019-05-20
int i = 5;
int j = 6;
i = i ^ j;
j = i ^ j;
i = i ^ j;
相似回答