Java学习笔记——Java常用类

Java学习笔记——Java常用类

1 字符串

1.1 String

String是一个final类,代表不可变的字符序列,底层使用char[]存放。一个字符串对象一旦被配置,其内容是不可变的。

1.1.1 内存

String str1 = "JavaEE"; // 字符串常量池
String str2 = "JavaEE";
String str3 = new String("JavaEE");
String str4 = "JavaEE" + "Android";
String str5 = "Android";
String str6 = str1 + str5;
str5 = str5 + "Hadoop"; // 字符串常量池新建一个字符串区域,str5改变地址
String str7 = str6.intern();
String str8 = "JavaEEAndroid";

// ==比较引用地址值
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
System.out.println(str1.equals(str3)); // true

System.out.println(str4 == str6); // false ??
System.out.println(str4 == str7); // true
System.out.println(str4 == str8); // true

1.1.2 常用方法

/*
 *  public int length()
	public char charAt(int index):返回在指定index位置的字符。index从0开始
	public boolean equals(Object anObject)
	public int compareTo(String anotherString)
	public int indexOf(String s)
	public int indexOf(String s ,int startpoint)
	public int lastIndexOf(String s)
	public int lastIndexOf(String s ,int startpoint)
	public boolean startsWith(String prefix)
	public boolean endsWith(String suffix)
	public boolean regionMatches(int toffset,String other,int ooffset ,int len):
	判断当前字符串从toffset开始的子串与另一个字符串other从ooffset开始的子串是否equals,子串长度为len
 */
@Test
public void test2(){
	String str1 = "abcdefghijk";
	String str2 = "abcc";
	System.out.println(str2.length()); //4
	System.out.println(str1.charAt(0)); //a
	System.out.println(str1.equals(str2)); //false
	System.out.println(str1.compareTo(str2)); //1
	System.out.println(str1.indexOf('c')); //2
	System.out.println(str1.indexOf("abc", 1)); //-1
	System.out.println(str2.lastIndexOf("c")); //3
	System.out.println(str1.startsWith("a")); //true
	System.out.println(str1.endsWith("jk")); //true
	System.out.println(str1.regionMatches(0, str2, 0, 3)); // true
}
/*
 *  public String substring(int startpoint)
	public String substring(int start,int end)
	public String replace(char oldChar,char newChar)
	public String replaceAll(String old,String new)
	public String trim()
	public String concat(String str):Concatenates the specified string to the end of this string.
	public String[] split(String regex)
	根据给定正则表达式的匹配拆分此字符串。
 */
@Test
public void test3() {
	String str1 = "hellollo";
	String str2 = "hello";
	String str3 = str1.substring(2);
	System.out.println(str3); // llollo
	System.out.println(str1); // hellollo
	System.out.println(str1.substring(2, 4)); // ll(左闭右开)
	String str4 = str1.replace("llo", "aaa");
	System.out.println(str4); // heaaaaaa
	System.out.println(str1); // hellollo
	System.out.println("  a   b   ".trim()); // a   b
	System.out.println(str1.concat("aaa").concat(str2)); // hellolloaaahello
	System.out.println(str1.split("ll")[0]); // he
}

1.1.3 类型转换

  • 字符串与基本数据类型的相互转换。

    // 1.字符串转换为基本数据类型
    // Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串转换为整型。
    //类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。
    int i = Integer.parseInt("121", 3); // 第二个参数为进制,不加则默认为十进制
    boolean b = Boolean.parseBoolean("true");
    
    // 2.基本数据类型转换为字符串
    // 调用String类的public String valueOf(int n)可将int型转换为字符串
    // 相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、valueOf(boolean b)可由参数的相应类到字符串的转换
    String string = String.valueOf(11);
    
  • 字符串与字节数组之间的转换。

    // 字符串---->字节数组:调用字符串的getBytes()
    String str = "abcd123";
    byte[] b = str.getBytes();
    for(int j = 0;j < b.length;j++){
        System.out.println((char)b[j]);
    }
    // 字节数组---->字符串:调用字符串的构造器
    String str3 = new String(b);
    
  • 字符串与字符数组之间的转换。

    // 字符串---->字符数组:调用字符串的toCharArray()或getChars
    String str4 = "abc123中国人";
    char[] c = str4.toCharArray();
    // char[] c = new char[str4.length()];
    // str4.getChars(0, str4.length(), c, 0);
    for(int j = 0;j < c.length;j++){
        System.out.println(c[j]);
    }
    // 字符数组---->字符串:调用字符串的构造器,或String的valueOf方法
    String str5 = new String(c);
    String str6 = new String(c, 0, c.length);
    String str7 = String.valueOf(c);
    

总结:封装类的ParseXxx;String类的valueOf,getBytes,toCharArray,getChars;String类的构造器是”万能“的。涉及到字符串与其他类型的转换时,考虑String和封装类的方法。

1.1.4 几个小算法

// 1.模拟一个trim方法,去除字符串两端的空格。
public static String myTrim(String str) {
    int len = str.length();
    int beginIndex = 0;
    int endIndex = len;
    while(beginIndex < endIndex && str.charAt(beginIndex) == ' ') {
        beginIndex++;
    }
    if (beginIndex >= len) {
        return "";
    }
    while(str.charAt(endIndex - 1) == ' ') {
        endIndex--;
    }
    return str.substring(beginIndex, endIndex);
}
// 2.将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”
// 可再使用StringBuffer优化
// 方法一:
public static String reverseString(String str, int start, int end) {
    char[] c = str.toCharArray();
    return reverseArray(c, start, end);
}

public static String reverseArray(char[] c, int start, int end) {
    for(int i = start, j = end; i < j; i++, j--) {
        char temp = c[i];
        c[i] = c[j];
        c[j] = temp;
    }
    return new String(c);
}
// 方法二:
public static String reverseString1(String str, int start, int end) {
    String str1 = str.substring(0, start);
    for(int i = end; i >= start; i--) {
        str1 += str.charAt(i);
    }
    str1 += str.substring(end +  1);
    return str1;
}
// 3.获取一个字符串在另一个字符串中出现的次数
public static int getTime(String str1, String str2) {
    int time = 0;
    int len = str2.length();
    int index;
    while((index = str1.indexOf(str2)) != -1) {
        time++;
        str1 = str1.substring(index + len);
    }
    return time;
}
// 4.获取两个字符串中最大相同子串。
//  提示:将短的那个串进行长度依次递减的子串与较长的串比较。
public static List<String> getMaxSubString(String str1, String str2) {
    String maxStr = str1;
    String minStr = str2;
    if (str1.length() < str2.length()) {
        maxStr = str2;
        minStr = str1;
    }
    int len = minStr.length();
    List<String> list = new ArrayList<String>();
    String subStr;
    for(int i = len; i > 0; i--) {
        for (int j = 0; j <= len - i; j++) {
            if(maxStr.contains((subStr = minStr.substring(j, j + i)))) {
                list.add(subStr);
            }
        }
        if (list.size() != 0) {
            return list;
        }
    }
    return null;
}
// 5.对字符串中字符进行自然顺序排序。
public static String sort(String str) {
    char[] c = str.toCharArray();
    Arrays.sort(c);
    return new String(c);
}

1.2 StringBuffer

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。很多方法与String相同,但StingBuffer是可变长度的。StringBuffer是一个容器。

StringBuffer sBuffer = new StringBuffer("123sss");
// 增
sBuffer.append("hello");
sBuffer.insert(3, "hello");
// 删
System.out.println(sBuffer.delete(1, 2));
// 改
sBuffer.setCharAt(0, 'a');
sBuffer.reverse();
// 查
System.out.println(sBuffer.charAt(0));

1.3 StringBuilder

StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样。

java.lang.StringBuilder也是可变的字符序列,是jdk5.0新加入的,线程不安全,效率要高于StringBuffer。

/*
 * 对比String,StringBuffer,StringBuilder三者在添加上的效率:
 * 效率从高到底: StringBuilde > StringBuffer > String
 */
@Test
public void test3() {
    String string = "";
    StringBuffer sBuffer = new StringBuffer("");
    StringBuilder sBuilder = new StringBuilder("");
    long startTime;

    startTime = System.currentTimeMillis();
    for (int i = 0; i < 20000; i++) {
        string = string + i;
    }
    System.out.println("String的执行时间: " + (System.currentTimeMillis() - startTime));

    startTime = System.currentTimeMillis();
    for (int i = 0; i < 20000; i++) {
        sBuffer.append(i);
    }
    System.out.println("StringBuffer的执行时间: " + (System.currentTimeMillis() - startTime));

    startTime = System.currentTimeMillis();
    for (int i = 0; i < 20000; i++) {
        sBuilder.append(i);
    }
    System.out.println("StringBuilder的执行时间: " + (System.currentTimeMillis() - startTime));
}
String s = "a"; // 创建了一个字符串
s = s + "b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

2 日期相关

2.1 java.lang.System

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

计算世界时间的主要标准有:

  • UTC(Universal Time Coordinated)
  • GMT(Greenwich Mean Time)
  • CST(Central Standard Time)

2.2 java.util.Date

表示特定的瞬间,精确到毫秒。

Date date = new Date();
System.out.println(date.toString()); // Mon Feb 18 15:54:20 CST 2019
System.out.println(date.getTime()); // 1550476508130
System.out.println(System.currentTimeMillis()); // 1550476508146
Date date2 = new Date(1550476508146L);
System.out.println(date2); // Mon Feb 18 15:55:08 CST 2019

2.3 java.text.SimpleDateFormat

Date类的API不易于国际化,大部分被废弃了,SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

// 1.格式化1(默认)
SimpleDateFormat sdf = new SimpleDateFormat();
String str = sdf.format(new Date());
System.out.println(str); // 2019/2/19 上午9:42

// 2.格式化2(自定义)
SimpleDateFormat sdf1 = new SimpleDateFormat("hh:mm:ss yy-MM-dd");
String str1 = sdf1.format(new Date());
System.out.println(str1); // 09:42:38 19-02-19

// 3.解析
Date date = sdf.parse(str);
System.out.println(date); // Tue Feb 19 09:42:00 CST 2019
Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
Y Week year Year 2009; 09
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day name in week Text Tuesday; Tue
u Day number of week (1 = Monday, …, 7 = Sunday) Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00
// 返回date1与date2之间的天数
// 方式一:
public int getDays(String date1, String date2) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d1 = sdf.parse(date1);
    Date d2 = sdf.parse(date2);
    long milliTime = d2.getTime() - d1.getTime();
    return (int)(milliTime / 1000 / 3600 / 24) + 1;
}
// 方式二:
public int getDays2(String date1, String date2) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d1 = sdf.parse(date1);
    Date d2 = sdf.parse(date2);
    int days = 0;
    int[] daysOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int beginYear = d1.getYear() + 1900;
    int beginMonth = d1.getMonth();
    int beginDate = d1.getDate();
    int endYear = d2.getYear() + 1900;
    int endMonth = d2.getMonth();
    int endDate = d2.getDate();
    daysOfMonth[1] = isLeapYear(beginYear) ? 29 : 28; // 判断2月天数
    if (beginYear == endYear) {
        if (beginMonth == endMonth) {
            return endDate - beginDate + 1;
        }
        // 加上开始月的剩余天数
        days += daysOfMonth[beginMonth] - beginDate + 1;
        // 加上完整月的天数
        for(int i = beginMonth + 1; i < endMonth; i++) {
            days += daysOfMonth[i];
        }
        // 加上最后一个月到结束日期的天数
        days += endDate;
        return days;
    }
    // 1.开始年的剩余天数
    // 加上开始月的剩余天数
    days += daysOfMonth[beginMonth] - beginDate + 1;
    // 加上剩余月的天数
    for(int i = beginMonth + 1; i < 12; i++) {
        days += daysOfMonth[i];
    }

    // 2.始末年之间的完整年的总天数
    for(int i = beginYear + 1; i < endYear; i++) {
        days += isLeapYear(i) ? 366 : 365;
        System.out.println(1);
    }

    // 3.结束年到结束日期的天数
    daysOfMonth[1] = isLeapYear(endYear) ? 29 : 28; // 判断2月天数
    // 加上完整月的天数
    for (int i = 0; i < endMonth; i++) {
        days += daysOfMonth[i];
    }
    // 加上最后一个月到结束日期的天数
    days += endDate;
    return days;
}
// 判断是否为闰年
// 四年一闰;百年不闰,四百年再闰
public boolean isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
/*
 * “三天打渔两天晒网”  1990-01-01  XXXX-XX-XX 打渔?晒网?
 */
@Test
public void test3() throws ParseException {
    String str1 = "1990-01-01";
    String str2 = "2014-05-12";
    int days = getDays(str1, str2);
    System.out.println(days);
    System.out.println(getDays2(str1, str2));
    if (days % 5 == 0 || days % 5 == 4) {
        System.out.println("晒网");
    }else {
        System.out.println("打渔");
    }
}

2.4 java.util.Calendar

Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_MONTH);

calendar.add(Calendar.DAY_OF_MONTH, 2);
calendar.set(Calendar.DAY_OF_MONTH, 44);
Date date = calendar.getTime();
calendar.setTime(date);

3 Math

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。

  • Fields
Modifier and Type Field and Description
static double E The double value that is closer than any other to e, the base of the natural logarithms.
static double PI The double value that is closer than any other to pi, the ratio of the circumference of a circle to its diameter.
  • Methods
Modifier and Type Method and Description
static double abs(double a) Returns the absolute value of a double value.
static float abs(float a) Returns the absolute value of a float value.
static int abs(int a) Returns the absolute value of an int value.
static long abs(long a) Returns the absolute value of a long value.
static double acos(double a) Returns the arc cosine of a value; the returned angle is in the range 0.0 through pi.
static double asin(double a) Returns the arc sine of a value; the returned angle is in the range -pi/2 through pi/2.
static double atan(double a) Returns the arc tangent of a value; the returned angle is in the range -pi/2 through pi/2.
static double atan2(double y, double x) Returns the angle theta from the conversion of rectangular coordinates (x, y) to polar coordinates (r, theta).
static double cbrt(double a) Returns the cube root of a double value.
static double ceil(double a) Returns the smallest (closest to negative infinity) double value that is greater than or equal to the argument and is equal to a mathematical integer.
static double copySign(double magnitude, double sign) Returns the first floating-point argument with the sign of the second floating-point argument.
static float copySign(float magnitude, float sign) Returns the first floating-point argument with the sign of the second floating-point argument.
static double cos(double a) Returns the trigonometric cosine of an angle.
static double cosh(double x) Returns the hyperbolic cosine of a double value.
static double exp(double a) Returns Euler’s number e raised to the power of a double value.
static double expm1(double x) Returns ex -1.
static double floor(double a) Returns the largest (closest to positive infinity) double value that is less than or equal to the argument and is equal to a mathematical integer.
static int getExponent(double d) Returns the unbiased exponent used in the representation of a double.
static int getExponent(float f) Returns the unbiased exponent used in the representation of a float.
static double hypot(double x, double y) Returns sqrt(x2 +y2) without intermediate overflow or underflow.
static double IEEEremainder(double f1, double f2) Computes the remainder operation on two arguments as prescribed by the IEEE 754 standard.
static double log(double a) Returns the natural logarithm (base e) of a double value.
static double log10(double a) Returns the base 10 logarithm of a double value.
static double log1p(double x) Returns the natural logarithm of the sum of the argument and 1.
static double max(double a, double b) Returns the greater of two double values.
static float max(float a, float b) Returns the greater of two float values.
static int max(int a, int b) Returns the greater of two int values.
static long max(long a, long b) Returns the greater of two long values.
static double min(double a, double b) Returns the smaller of two double values.
static float min(float a, float b) Returns the smaller of two float values.
static int min(int a, int b) Returns the smaller of two int values.
static long min(long a, long b) Returns the smaller of two long values.
static double nextAfter(double start, double direction) Returns the floating-point number adjacent to the first argument in the direction of the second argument.
static float nextAfter(float start, double direction) Returns the floating-point number adjacent to the first argument in the direction of the second argument.
static double nextUp(double d) Returns the floating-point value adjacent to d in the direction of positive infinity.
static float nextUp(float f) Returns the floating-point value adjacent to f in the direction of positive infinity.
static double pow(double a, double b) Returns the value of the first argument raised to the power of the second argument.
static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
static double rint(double a) Returns the double value that is closest in value to the argument and is equal to a mathematical integer.
static long round(double a) Returns the closest long to the argument, with ties rounding up.
static int round(float a) Returns the closest int to the argument, with ties rounding up.
static double scalb(double d, int scaleFactor) Return d × 2scaleFactor rounded as if performed by a single correctly rounded floating-point multiply to a member of the double value set.
static float scalb(float f, int scaleFactor) Return f × 2scaleFactor rounded as if performed by a single correctly rounded floating-point multiply to a member of the float value set.
static double signum(double d) Returns the signum function of the argument; zero if the argument is zero, 1.0 if the argument is greater than zero, -1.0 if the argument is less than zero.
static float signum(float f) Returns the signum function of the argument; zero if the argument is zero, 1.0f if the argument is greater than zero, -1.0f if the argument is less than zero.
static double sin(double a) Returns the trigonometric sine of an angle.
static double sinh(double x) Returns the hyperbolic sine of a double value.
static double sqrt(double a) Returns the correctly rounded positive square root of a double value.
static double tan(double a) Returns the trigonometric tangent of an angle.
static double tanh(double x) Returns the hyperbolic tangent of a double value.
static double toDegrees(double angrad) Converts an angle measured in radians to an approximately equivalent angle measured in degrees.
static double toRadians(double angdeg) Converts an angle measured in degrees to an approximately equivalent angle measured in radians.
static double ulp(double d) Returns the size of an ulp of the argument.
static float ulp(float f) Returns the size of an ulp of the argument.

常用方法:

  • abs 绝对值
  • acos,asin,atan,cos,sin,tan 三角函数
  • sqrt 平方根
  • pow(double a,doble b) a的b次幂
  • log 自然对数
  • exp e为底指数
  • max(double a,double b)
  • min(double a,double b)
  • random() 返回0.0到1.0的随机数
  • long round(double a) double型数据a转换为long型(四舍五入)
  • toDegrees(double angrad) 弧度–>角度
  • toRadians(double angdeg) 角度–>弧度

4 BigInteger

Integer类作为int的包装类,能存储的最大整型值为 2^31-1,BigInteger类的数字范围较Integer类的大得多,可以支持任意精度的整数。

  • Fields
Modifier and Type Field and Description
static BigInteger ONE The BigInteger constant one.
static BigInteger TEN The BigInteger constant ten.
static BigInteger ZERO The BigInteger constant zero.
  • Methods
Modifier and Type Method and Description
BigInteger abs() Returns a BigInteger whose value is the absolute value of this BigInteger.
BigInteger add(BigInteger val) Returns a BigInteger whose value is (this + val).
BigInteger and(BigInteger val) Returns a BigInteger whose value is (this & val).
BigInteger andNot(BigInteger val) Returns a BigInteger whose value is (this & ~val).
int bitCount() Returns the number of bits in the two’s complement representation of this BigInteger that differ from its sign bit.
int bitLength() Returns the number of bits in the minimal two’s-complement representation of this BigInteger, excluding a sign bit.
BigInteger clearBit(int n) Returns a BigInteger whose value is equivalent to this BigInteger with the designated bit cleared.
int compareTo(BigInteger val) Compares this BigInteger with the specified BigInteger.
BigInteger divide(BigInteger val) Returns a BigInteger whose value is (this / val).
BigInteger[] divideAndRemainder(BigInteger val) Returns an array of two BigIntegers containing (this / val) followed by (this % val).
double doubleValue() Converts this BigInteger to a double.
boolean equals(Object x) Compares this BigInteger with the specified Object for equality.
BigInteger flipBit(int n) Returns a BigInteger whose value is equivalent to this BigInteger with the designated bit flipped.
float floatValue() Converts this BigInteger to a float.
BigInteger gcd(BigInteger val) Returns a BigInteger whose value is the greatest common divisor of abs(this) and abs(val).
int getLowestSetBit() Returns the index of the rightmost (lowest-order) one bit in this BigInteger (the number of zero bits to the right of the rightmost one bit).
int hashCode() Returns the hash code for this BigInteger.
int intValue() Converts this BigInteger to an int.
boolean isProbablePrime(int certainty) Returns true if this BigInteger is probably prime, false if it’s definitely composite.
long longValue() Converts this BigInteger to a long.
BigInteger max(BigInteger val) Returns the maximum of this BigInteger and val.
BigInteger min(BigInteger val) Returns the minimum of this BigInteger and val.
BigInteger mod(BigInteger m) Returns a BigInteger whose value is (this mod m).
BigInteger modInverse(BigInteger m) Returns a BigInteger whose value is (this-1 mod m).
BigInteger modPow(BigInteger exponent, BigInteger m) Returns a BigInteger whose value is (thisexponent mod m).
BigInteger multiply(BigInteger val) Returns a BigInteger whose value is (this * val).
BigInteger negate() Returns a BigInteger whose value is (-this).
BigInteger nextProbablePrime() Returns the first integer greater than this BigInteger that is probably prime.
BigInteger not() Returns a BigInteger whose value is (~this).
BigInteger or(BigInteger val) Returns a BigInteger whose value is (this | val).
BigInteger pow(int exponent) Returns a BigInteger whose value is (thisexponent).
static BigInteger probablePrime(int bitLength, Random rnd) Returns a positive BigInteger that is probably prime, with the specified bitLength.
BigInteger remainder(BigInteger val) Returns a BigInteger whose value is (this % val).
BigInteger setBit(int n) Returns a BigInteger whose value is equivalent to this BigInteger with the designated bit set.
BigInteger shiftLeft(int n) Returns a BigInteger whose value is (this << n).
BigInteger shiftRight(int n) Returns a BigInteger whose value is (this >> n).
int signum() Returns the signum function of this BigInteger.
BigInteger subtract(BigInteger val) Returns a BigInteger whose value is (this - val).
boolean testBit(int n) Returns true if and only if the designated bit is set.
byte[] toByteArray() Returns a byte array containing the two’s-complement representation of this BigInteger.
String toString() Returns the decimal String representation of this BigInteger.
String toString(int radix) Returns the String representation of this BigInteger in the given radix.
static BigInteger valueOf(long val) Returns a BigInteger whose value is equal to that of the specified long.
BigInteger xor(BigInteger val) Returns a BigInteger whose value is (this ^ val).

5 BigDecimal

一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。BigDecimal类支持任何精度的定点数。

BigDecimal bd = new BigDecimal("12435.351");
BigDecimal bd2 = new BigDecimal("11");
System.out.println(bi);
// System.out.println(bd.divide(bd2)); // 除得尽才能用这个
System.out.println(bd.divide(bd2,RoundingMode.HALF_UP));
System.out.println(bd.divide(bd2,15,RoundingMode.HALF_UP));
  • 常用方法

    public BigDecimal add(BigDecimal augend)

    public BigDecimal subtract(BigDecimal subtrahend)

    public BigDecimal multiply(BigDecimal multiplicand)

    public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

6 疑问

  • 字符串字面量赋值给String类型的对象时(不用new),只存了字符串常量池的一个地址,其对象体现在哪里?

以上笔记参考自尚硅谷

猜你喜欢

转载自blog.csdn.net/Runner1st/article/details/87865718