BigInteger类
针对超出Integer表数范围的大数场景,Java提供了BigInteger类,用于大整型数的计算
BigInteger add(BigInteger val) 返回其值为 (this + val) 的 BigInteger
BigInteger subtract(BigInteger val) 返回其值为 (this - val) 的 BigInteger。
BigInteger multiply(BigInteger val) 返回其值为 (this * val) 的 BigInteger。
BigInteger divide(BigInteger val) 返回其值为 (this / val) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val) 返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。
package com.nim.day14;
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
String num = "10";
String num2 = "3";
BigInteger bi = new BigInteger(num);
BigInteger bi2 = new BigInteger(num2);
BigInteger[] dis = bi.divideAndRemainder(bi2);
System.out.println(bi.add(bi2));
System.out.println(bi.subtract(bi2));
System.out.println(bi.multiply(bi2));
System.out.println(bi.divide(bi2));
System.out.println("-------------------");
//BigInteger[] divideAndRemainder(BigInteger val)
for (int i = 0; i < dis.length; i++) {
System.out.println(dis[i]);
}
}
}
BigDecimal类
浮点型数据进行算术运算容易产生精度丢失问题:
double d1 = 0.1; double d2 = 0.01; double d3 = d1 - d2; float f1 = 0.01f; float f2 = f1 + 0.08f;
针对精确计算的场景,Java提供了BigDecimal类,用于浮点数的精确计算
构造方法:
BigDecimal(double value)
直接使用double参数的构造方法有一定的不预支性
BigDecimal(String value)
Character类
概述:
Character 类在对象中包装一个基本类型 char 的值。
此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。
构造方法:
Character(char value) 构造一个新分配的 Character 对象,用以表示指定的 char 值。
Character类部分方法
都是静态方法
boolean isUpperCase(char ch) boolean isLowerCase(char ch)
boolean isDigit(char ch) char toUpperCase(char ch) char toLowerCase(char ch)
package com.nim.day14;
public class CharacterDemo {
public static void main(String[] args) {
/*
Character c = new Character('a');
System.out.println(c);
System.out.println(Character.isDigit('0'));
System.out.println(Character.isUpperCase('A'));
System.out.println(Character.isLowerCase('N'));
*/
//判断一个字符串中各种字符的个数
String s = "abcDEF123+-*/";
//第一种方式charAt()
int u_count = 0;
int l_count = 0;
int d_count = 0;
int o_count = 0;
/*
for(int i = 0; i<s.length();i++){
char ch = s.charAt(i);
if(Character.isUpperCase(ch)){
u_count ++;
}else if(Character.isLowerCase(ch)){
l_count++;
}else if(Character.isDigit(ch)){
d_count++;
}else{
o_count++;
}
}
*/
//第二种方式:字符数组toCharArray
char[] ch = s.toCharArray();
for (int i = 0; i < ch.length; i++) {
if(Character.isUpperCase(ch[i])){
u_count ++;
}else if(Character.isLowerCase(ch[i])){
l_count++;
}else if(Character.isDigit(ch[i])){
d_count++;
}else{
o_count++;
}
}
System.out.println("大写字符的个数是:"+u_count);
System.out.println("小写字符的个数是:"+l_count);
System.out.println("数字字符的个数是:"+d_count);
System.out.println("其他字符的个数是:"+o_count);
}
}