不使用第三个变量完成两个整数的交换
2011-04-08 23:31
525 查看
public class Person {
public static void main(String[] args) {
//利用加减法
int a = 10, b = 5;
a = a + b;
b = a - b;
a = a - b;
System.out.println("a=" + a + "/nb=" + b);
}
}
还有另外一种方法,且效率更快:
public class Person {
public static void main(String[] args) {
//利用一个数异或本身等于0和异或运算符合交换率
int a = 10, b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a=" + a + "/nb=" + b);
}
}
当然以上两种的算法对应js中也支持,如下:
Js代码
var a = 11,b = 22;
a = a + b;
b = a - b;
a = a - b;
console.log(a+'/n'+b)
或
Js代码
var a = 11,b = 22;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log(a+'/n'+b)
但如果两个变量是对象类型,java(强类型)貌似无能为力了。js却可以,实现方式还不少,如下:
Js代码
var a = {name:'jack'},b = {name:'tom'};
a = [a,b];
b = a[0];
a = a[1];
console.log(a.name+'/n'+b.name)
或者
Js代码
var a = {name:'jack'},b = {name:'tom'};
a = {a:a,b:b};
b = a.a;
a = a.b;
console.log(a.name+'/n'+b.name)
正是利用js动态类型(弱类型)系统及对象/数组直接量特性。其它强类型则不可以,编译器会提示类型转换错误。
public static void main(String[] args) {
//利用加减法
int a = 10, b = 5;
a = a + b;
b = a - b;
a = a - b;
System.out.println("a=" + a + "/nb=" + b);
}
}
还有另外一种方法,且效率更快:
public class Person {
public static void main(String[] args) {
//利用一个数异或本身等于0和异或运算符合交换率
int a = 10, b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a=" + a + "/nb=" + b);
}
}
当然以上两种的算法对应js中也支持,如下:
Js代码
var a = 11,b = 22;
a = a + b;
b = a - b;
a = a - b;
console.log(a+'/n'+b)
或
Js代码
var a = 11,b = 22;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log(a+'/n'+b)
但如果两个变量是对象类型,java(强类型)貌似无能为力了。js却可以,实现方式还不少,如下:
Js代码
var a = {name:'jack'},b = {name:'tom'};
a = [a,b];
b = a[0];
a = a[1];
console.log(a.name+'/n'+b.name)
var a = {name:'jack'},b = {name:'tom'}; a = [a,b]; b = a[0]; a = a[1]; console.log(a.name+'/n'+b.name)
或者
Js代码
var a = {name:'jack'},b = {name:'tom'};
a = {a:a,b:b};
b = a.a;
a = a.b;
console.log(a.name+'/n'+b.name)
var a = {name:'jack'},b = {name:'tom'}; a = {a:a,b:b}; b = a.a; a = a.b; console.log(a.name+'/n'+b.name)
正是利用js动态类型(弱类型)系统及对象/数组直接量特性。其它强类型则不可以,编译器会提示类型转换错误。
相关文章推荐
- 不使用第三个变量完成两个整数的交换
- [Java,JS] - 不使用第三个变量完成两个整数的交换
- 不使用第三个变量实现两个整数之间的交换
- 不使用第三个变量交换两个变量的值,不同编译器的不同结果
- 交换两个变量的值不使用第三个变量
- 交换两个变量的值,不使用第三个变量的四种法方
- 交换两个变量的值,不使用第三个变量的四种方法
- 交换两个变量的值,要求不使用第三个变量实现
- 面试题:交换两个变量的值,不使用第三个变量
- 运算符(27)交换两个变量的值(不使用第三个变量法方)
- 交换两个变量的值,不使用第三个变量的四种法方
- 交换两个变量的值,不使用第三个变量
- 交换两个变量的值,不使用第三个变量的四种法方法
- 不使用第三个变量,交换两个变量的值
- 交换两个变量的值,不使用第三个变量
- [Java] 不使用第三个变量实现两个整数类型变量互换(异或运算符)
- 交换两个变量的值,不使用第三个变量。
- 交换两个变量的值不使用第三个变量(Java)
- 不使用第三个变量的情况下交换两个变量中存储的值(Java)
- 交换两个变量的值,不使用第三个变量的四种方法