3602、int*int,long*long,都可能溢出
    package test.leecode.math;
import java.math.BigInteger;
/**
 * int*int,long*long,都可能溢出
 * @author wen.lei@brgroup.com
 *
 * 2022-3-18
 */
public class IntMultiplyIntTest {
    public static void main(String[] args) {
        System.out.println("Integer的最大值:"+Integer.MAX_VALUE);
        System.out.println("Long的最大值:"+Long.MAX_VALUE);
        System.out.println("大数相乘,需要用BigInteger:"+new BigInteger("60070").multiply(new BigInteger("60070")));
        System.out.println("大数相乘,用BigInteger封装的方法:"+big(60070));
        System.out.println("大数相乘,用int*int会溢出:"+60070 * 60070);
        System.out.println("小数相乘,用int*int不溢出:"+6007 * 6007);
  
    }
     
    public static BigInteger big(int k) {
        return new BigInteger(String.valueOf(k)).multiply(new BigInteger(String.valueOf(k)));
    }
     
    //输入类型为long,可以支持更大的k;但是如果k太大,也会溢出
    public long test1(long k) {
        //int的最大值也太小了,2147483647,2个万相乘就是亿了
        return (1 + k) * k / 2;
    }
     
    //返回值用long,也会越界
    public long test2(int k) {
        return (1 + k) * k / 2;
    }
     
    //越界了
    public int test3(int k) {
        //int的最大值也太小了,2147483647,2个万相乘就是亿了
        return (1 + k) * k / 2;
    }
}