- 两个整数交换位置的三种方法:
package com.dengchaoqun.ht;
import java.util.Scanner;
public class Test {
/**
*
* java中又两个整数,让其数据交换的集中方法
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scan=new Scanner(System.in);
System.out.println("输入两个整数:");
int a=scan.nextInt();
int b=scan.nextInt();
//第一种方法,借助中间变量
int c=a;
a=b;
b=c;
System.out.println("交换数据后的两个数是:"+a+" "+b);
//第二种方法,不借助中间变量
System.out.println("输入两个数:");
int d=scan.nextInt();
int e=scan.nextInt();
d=d+e; //这里也可以使用乘法来做。只不过,有可能会发生溢出错误
e=d-e;
d=d-e;
System.out.println("交换后的数据为:"+d+" "+e);
//第三种方法,异或运算^
System.out.println("输入两个数:");
int f=scan.nextInt();
int g=scan.nextInt();
f=f^g;
g=f^g;
f=f^g;
System.out.println("交换后的数据为:");
System.out.println(f);
System.out.println(g);
//在这三种方法中位运算是最高效的。直接进行二进制转换
}
}
- 一道经典的面试题:请问下面代码是否正确
short s=10;
s=s+5;
System.out.println("s");
答案是:不正确,因为s=s+5已经隐式转换为int类型,int类型的精度比short精度高,所以,s的类型编译器无法判断,所以会报错。