- 两个整数交换位置的三种方法:
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+"\t"+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+"\t"+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的类型编译器无法判断,所以会报错。