Java中Math类和基本类型包装类的使用

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中Math类和基本类型包装类的使用相关的知识,希望对你有一定的参考价值。

Java中Math类和基本类型包装类的使用

  • java.lang.Math类中定义了一些方法完成基本运算
  • Math类是final类,不能被继承,其构造方法的访问修饰符是private,因此不能被实例化
  • String类也是final类
  • Math类中定义了两个常量PI和E以及所有的方法都是静态的,仅能通过类名访问
public class MathDemo {
    public static char getLetters(){
        //生成97到122之间的整数,然后转换成字符,即a-z之间
        return (char)(97 + Math.random() * 26)  ;
    }
    public static void main(String[] args){
        System.out.println(Math.sqrt(4)) ; //平方根
        System.out.println(Math.cbrt(8)) ; //立方根
        System.out.println(Math.pow(2,3)) ; //2的3次方
        System.out.println(Math.rint(2.5)) ; //与2.5接近的整数
        System.out.println(Math.round(2.4)) ; //四舍五入后的整数
        System.out.println(Math.max(1,3)) ; //两个数的最大值
        System.out.println(Math.min(1,2)) ; //两个数的最小值
        System.out.println(Math.exp(2)) ; //e的平方
        System.out.println(Math.ceil(2.4)) ; //大于等于2.4的最小整数
        System.out.println(Math.floor(2.4)) ; //小于等于2.4的最大整数
        for(int i=1; i<=100; i++){
            System.out.print(getLetters() + " ") ;
            if(i % 20 == 0){ //每20个换一行
                System.out.println() ;
            }
        }
    }
}
  • Java语言提供了8中基本数据类型,这些数据类型不属于Java对象的层次结构
  • Java语言保留这些数据类型主要受是为了提高效率
  • 这些类型在方法调用的时候都是采用值传递的,不能采用引用传递
  • Character类封装单个字符
public class CharacterDemo {
    public static void main(String[] args){
        Character a = new Character('A') ,
                  b = new Character('Π') ,
                  c = new Character('中') ,
                  d = new Character('a') ;
        System.out.println(a.compareTo('D')) ; //比较字符大小的方法
        System.out.println(Character.isLetter(a)) ; //是否是字母
        System.out.println(Character.isDigit(a)) ; //a是否是数字
        System.out.println(Character.toLowerCase(a)) ; //转换成小写字母
        System.out.println(Character.toUpperCase(d)) ; //转换成大写字母
        System.out.println(Character.isJavaIdentifierPart(a)) ; //是否允许作为Java标识符
        System.out.println(Character.isWhitespace(a)) ; //是否是空白字符
    }
}

  • 创建数值类对象有两个构造方法,一个是以该类型的基本类型作为参数,另一个是以一个字符串作为参数
public class IntegerDemo {
    public static void main(String[] args){
        Integer number = new Integer(10) ;
        Integer value = new Integer("10") ;
        System.out.println(Integer.toBinaryString(number)) ; //转换成二进制
        System.out.println(Integer.toHexString(number)) ; //转换成十六进制
        System.out.println(Integer.toOctalString(number)) ; //转换成八进制
    }
}
  • Boolean类封装了一个布尔值
  • 该类有两个构造方法
public class BooleanDemo {
    public static void main(String[] args){
        boolean b = true ;
        Boolean b2 = new Boolean(b) ;
        Boolean b3 = new Boolean("true") ;
        Boolean b4 = new Boolean("yes") ;
        System.out.println(b3) ;
        System.out.println(b4) ;
        boolean b5 = Boolean.parseBoolean("true") ; //字符串类型转换成boolean值
        System.out.println(b5) ;
    }
}

  • 将字符串类型转换成基本数据类型

public class ParseDemo {
    public static void main(String[] args){
      String s = new String("234") ;
      int value = Integer.parseInt(s) ; //字符串转换成int型
      boolean flag = Boolean.parseBoolean(s) ; //字符串转换成boolean型
      Long number = Long.parseLong(s) ; //字符串转换成Long型
      Float number2 = Float.parseFloat(s) ; //字符串转换成Float型
      Double number3 = Double.parseDouble(s) ; //字符串转换成Double型
      Short number4 = Short.parseShort(s) ; //字符串转换成Short型
      System.out.println(value + " " + flag + " " + number + " " + number2 + " " + number3 + " " + number4 ) ;
    }
}
  • BigInteger类和BigDecimal类
  • BigInteger的实例可表示任意大小的整数,构造方法的参数只能是字符串
  • BigDecimal的精度没有限制
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDemo {
    public static BigInteger f(long n){ //求50的阶乘
        BigInteger result = BigInteger.ONE ;
        for(int i=1; i<=n; i++){
            result = result.multiply(new BigInteger(i + "")) ;
        }
        return result ;
    }
    public static void main(String[] args){
        BigInteger a = new BigInteger("12345678911111111111111111111111111") ;
        BigInteger b = new BigInteger("2") ;
        BigInteger c = a.multiply(b) ; //a*b
        BigInteger d = a.add(b) ; //a+b
        BigInteger e = a.subtract(b) ; //a-b
        BigInteger f = a.divide(b) ; //a/b
        System.out.println(c + " " + d + " " + e + " " + f) ;
        System.out.println(f(50)) ;
        BigDecimal bigDecimal = new BigDecimal(10) ;
        BigDecimal bigDecimal1 = new BigDecimal(6) ;
        BigDecimal r = bigDecimal.divide(bigDecimal1,20,BigDecimal.ROUND_HALF_UP) ; //四舍五入,保留20位有效数字
        //科学计数法表示
        BigDecimal s1 = BigDecimal.valueOf(2,0) ;
        BigDecimal s2 = BigDecimal.valueOf(11,1) ;
        System.out.println(s1.subtract(s2)) ;
       System.out.println(r) ;
    }
}

以上是关于Java中Math类和基本类型包装类的使用的主要内容,如果未能解决你的问题,请参考以下文章

基本数据类型的包装类(wrapper class)时间处理相关类Math类File类枚举类

java -- MathBigIntegerBigDecimal类和基本类型的包装类正则表达式

Java_包装类和缓冲区

大数据必学Java基础(四十八):包装类和日期类的讲解

java包装类和自动拆装箱

java包装类