【JavaSE学习笔记】常用类介绍03_Character,Arrays,BigDecimal,BigInteger,Calendar

常用类介绍03

A.Character

1)概述

Character类在对象中包装一个基本类型char的值

Character类型的对象包含类型为char的单个字段

2)构造方法

public Character(char value):构造一个新分配的Character对象,用以表示指定的char值

public class Demo01 {

	public static void main(String[] args) {
		Character c = new Character('a');
		System.out.println(c); // a
	}

}

3)常用方法

public static boolean isDigit(char ch):确定指定字符是否为数字

public class Demo01 {

	public static void main(String[] args) {
		System.out.println("是否为数字:" + Character.isDigit('5')); // true
		System.out.println("是否为数字:" + Character.isDigit('a')); // false
	}

}

public static boolean isLowerCase(char ch):确定指定字符是否为小写字母

public class Demo01 {

	public static void main(String[] args) {
		System.out.println("是否小写字母:" + Character.isLowerCase('a')); // true
		System.out.println("是否小写字母:" + Character.isLowerCase('A')); // false
	}

}

public static boolean is UpperCase(char ch):确定指定字符是否为大写字母

public class Demo01 {

	public static void main(String[] args) {
		System.out.println("是否小写字母:" + Character.isUpperCase('A')); // true
		System.out.println("是否小写字母:" + Character.isUpperCase('a')); // false
	}

}

public static char toLowerCase(char ch):把字符转换成小写

public class Demo01 {

	public static void main(String[] args) {
		System.out.println("是否小写字母:" + Character.toLowerCase('A')); // a
	}

}

public static char toUpperCase(char ch):把字符转换成大写

public class Demo01 {

	public static void main(String[] args) {
		System.out.println("是否小写字母:" + Character.toUpperCase('a')); // A
	}

}

4)练习

需求:键盘录入一个字符串,统计该字符串中出现的大写,小写,数字有多少个(其他字符不考虑)

1)定义统计变量

2)创建键盘录入对象,录入一个字符串

3)吧字符串转换字符数组

4)遍历字符数组 char ch = chs[x] ;

5)在for循环中判断:

isLowerCase(char  ch):判断小写字母

isUpperCase(char ch):大写字母

isDigit(char ch):数字字符

满足条件就做++

6)输出结果

import java.util.Scanner;

public class Demo01 {

	public static void main(String[] args) {
		int lowCount = 0;
		int uppCount = 0;
		int digCount = 0;

		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String s = sc.nextLine();

		char[] c = s.toCharArray();

		for (int i = 0; i < c.length; i++) {
			if (Character.isLowerCase(c[i])) {
				lowCount++;
			} else if (Character.isUpperCase(c[i])) {
				uppCount++;
			} else if (Character.isDigit(c[i])) {
				digCount++;
			}
		}
		System.out.println("该字符串中大写字符有:" + uppCount);
		System.out.println("该字符串中小写字符有:" + lowCount);
		System.out.println("该字符串中数字字符有:" + digCount);

	}

}

B.Arrays

1)概述

包含了数组排序以及数组搜索等一些方法,对数组操作的工具类:java.util包下

2)常用功能

publc static String toSring(int[] a):将int类型的数组转换成字符串

import java.util.Arrays;

public class Demo01 {

	public static void main(String[] args) {
		int[] arr = { 24, 69, 80, 57, 13 };
		System.out.println(Arrays.toString(arr));// [24, 69, 80, 57, 13]
	}

}

public static void srot(int[] a):对指定的int类型进行升序排序—快速排序

import java.util.Arrays;

public class Demo01 {

	public static void main(String[] args) {
		int[] arr = { 24, 69, 80, 57, 13 };
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));// [13, 24, 57, 69, 80]
	}

}

public static int binarySearch(int[] a, int key):二分查找

import java.util.Arrays;

public class Demo01 {

	public static void main(String[] args) {
		int[] arr = { 11, 22, 33, 44, 55 };
		System.out.println(Arrays.binarySearch(arr, 22));// 1
		System.out.println(Arrays.binarySearch(arr, 66));// -6
		System.out.println(Arrays.binarySearch(arr, 1));// -1
		/*
		 * -6 -1都表示没找到 -6 -1 ...怎么得来的? 将这个数按顺序插入到数组中的位置角标为i,则返回-(i+1)
		 */
	}

}

3)Arrays原码分析

/*
	 * java开发原则:若是对象,就要给对象做一个非空判断
	 */
	// 1)toString
	// 原码
	public static String toString(int[] arr) {
		// arr = {24,69,80,57,13};
		if (arr == null) // 现在是有对象的数组,不走这块
			return "null";
		int iMax = arr.length - 1;// arr.length - 1 = 5 - 1 = 4
		if (iMax == -1)// 最大索引==-1
			return "[]";// [],说明没有元素

		StringBuffer b = new StringBuffer();// 构造了一个字符串缓冲区
		b.append('[');// [
		for (int i = 0;; i++) {
			b.append(arr[i]);// arr[0],arr[1],arr[2],arr[3],arr[4]
			if (i == iMax)// 如果i索引是当前最大索引
				return b.append(']').toString();// arr[i]+"]"
			b.append(",");// 不是最大索引:直接,
		}
	}

	// 2)BinarySerach()
	// 原码
	public static int binarySearch(int[] a, int key) {// a=arr代表数组,key=value=66
		return binarySearch0(a, 0, a.length, key);
	}

	public static int binarySearch0(int[] a, int formIndex, int toIndex, int key) {
		/*
		 * a = arr fromIndex:0 toIndex:5 key:66
		 */
		int low = formIndex;// 最小索引0
		int high = toIndex - 1;// 最大索引4

		while (low <= high) {// 0 < 4
			int mid = (low + high) >>> 1;// int mid = (0+4);mid = 2,mid =3,mid=4
			int midVal = a[mid];// 表示该索引处对应的元素:a[3],a[4],a[5]

			if (midVal < key) // mid=4===>value:55<66
				low = mid + 1;// 3,4,5
			else if (midVal > key)
				high = mid - 1;
			else
				return mid; // key found
		}
		return -(low + 1);// key not found -(5+1)
	}

C.BigDecimal

1)概述

public class Demo01 {

	public static void main(String[] args) {
		System.out.println(0.09 + 0.01);// 0.09999999999999999
		System.out.println(1.0 - 0.32);// 0.6799999999999999
		System.out.println(1.015 * 100);// 101.49999999999999
		System.out.println(1.301 / 100);// 0.013009999999999999
		/*
		 * 运算时,float类型和double类型,会丢失数据,不精确 
		 * 大部分时候,数据存储和整数类型存储不一致,属于有效位数字不精确
		 * java中提供了一个类:BigDecimal
		 * 作用:不可变得任意精度的有符号十进制数:让运算更精确
		 */
	}

}

2)构造方法

public BigDecimal(Sring val)

import java.math.BigDecimal;

public class Demo01 {

	public static void main(String[] args) {
		BigDecimal bd = new BigDecimal("0.09");
	}

}

3)常用方法

public BigDecimal add(BigDecimal augend):加法

import java.math.BigDecimal;

public class Demo01 {

	public static void main(String[] args) {
		BigDecimal bd1 = new BigDecimal("0.09");
		BigDecimal bd2 = new BigDecimal("0.01");
		System.out.println(bd1.add(bd2));// 0.10
	}

}

public BigDecimal subtract(BigDecimal subtrahrnd):减法

import java.math.BigDecimal;

public class Demo01 {

	public static void main(String[] args) {
		BigDecimal bd1 = new BigDecimal("1.0");
		BigDecimal bd2 = new BigDecimal("0.32");
		System.out.println(bd1.subtract(bd2));// 0.68
	}

}

public BigDecimal multiply(BigDecimal multiplicand):乘法

import java.math.BigDecimal;

public class Demo01 {

	public static void main(String[] args) {
		BigDecimal bd1 = new BigDecimal("1.015");
		BigDecimal bd2 = new BigDecimal("100");
		System.out.println(bd1.multiply(bd2));// 101.500
	}

}

public BigDecimal divide(BIgDecimal divisor):除法

import java.math.BigDecimal;

public class Demo01 {

	public static void main(String[] args) {
		BigDecimal bd1 = new BigDecimal("1.301");
		BigDecimal bd2 = new BigDecimal("100");
		System.out.println(bd1.divide(bd2));// 0.01301
	}

}

public BidDecimal divide(BigDecimal divisor, int scale, int roundingMode):除法

参数一:商

参数二:有几位小数

参数三:以什么样的模式舍入

import java.math.BigDecimal;

public class Demo01 {

	public static void main(String[] args) {
		BigDecimal bd1 = new BigDecimal("1.301");
		BigDecimal bd2 = new BigDecimal("100");
		System.out.println(bd1.divide(bd2));// 0.01301
		System.out.println(bd1.divide(bd2, 3, BigDecimal.ROUND_HALF_UP));// 0.013
		System.out.println(bd1.divide(bd2, 8, BigDecimal.ROUND_HALF_UP));// 0.01301000
	}
	
}

D.BigInteger

1)概述

可以让超出Integer类型的范围的数据进行计算

import java.math.BigInteger;

public class Demo01 {

	public static void main(String[] args) {
		// System.out.println(Integer.MAX_VALUE);// 2147483647
		// Integer i = new Integer("2147483648");
		// System.out.println(i);// NumberFormatException数字格式异常

		// java提供了BigInteger
		BigInteger bi = new BigInteger("2147483648");
		System.out.println(bi);// 2147483648
	}

}

2)构造方法(见上一条)

3)常用方法

public BigInteger add(BigInteger val):加发

public BigInteger subtract(BigInteger val):减法

public BigInteger multiply(BigInteger val):乘法

public BigInteger divide(BigInteger val):除法

BigInteger[] bis = val1.divideAndRemainder(val2):2个元素的数组,第一个为商,第二个为余数

import java.math.BigInteger;

public class Demo01 {

	public static void main(String[] args) {
		BigInteger bi1 = new BigInteger("100");
		BigInteger bi2 = new BigInteger("50");
		System.out.println(bi1.add(bi2));// 150
		System.out.println(bi1.subtract(bi2));// 50
		System.out.println(bi1.multiply(bi2));// 5000
		System.out.println(bi1.divide(bi2));// 2

		BigInteger[] bis = bi1.divideAndRemainder(bi2);
		System.out.println("商为:" + bis[0]);// 2
		System.out.println("余数:" + bis[1]);// 0
	}

}

E.Calendar

1)日历类

Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR,MONTH,DAY_OF_MONTH等日历字段之间的转换提供了一些方法,并未操作日历字段(获取下星期的日期)提供了一些方法

2)获取字段的方法

public int get(int filed):返回给定日历字段的值

YEAR:年

MONTH:月

DATE:日

import java.util.Calendar;

public class Demo01 {

	public static void main(String[] args) {
		Calendar now = Calendar.getInstance();// 子类对象的方法

		int year = now.get(Calendar.YEAR);
		int month = now.get(Calendar.MONTH) + 1;// 从0开始
		int date = now.get(Calendar.DATE);

		System.out.println(year + "." + month + "." + date);// 2017.7.27
	}

}

3)常用方法

public abstract void add(int field, int amount):

根据日历的规则,为给定的日历字段添加或减去指定的时间量

a.三年前的今天

import java.util.Calendar;

public class Demo01 {

	public static void main(String[] args) {
		Calendar now = Calendar.getInstance();// 子类对象的方法
		//3年前的今天
		now.add(Calendar.YEAR, -3);
		int year = now.get(Calendar.YEAR);
		int month = now.get(Calendar.MONTH) + 1;// 从0开始
		int date = now.get(Calendar.DATE);

		System.out.println(year + "." + month + "." + date);// 2014.7.27
	}

}
b,5年后的10天前
import java.util.Calendar;

public class Demo01 {

	public static void main(String[] args) {
		Calendar now = Calendar.getInstance();// 子类对象的方法
		//5年后的10天前
		now.add(Calendar.YEAR, 5);
		now.add(Calendar.DATE, -10);
		int year = now.get(Calendar.YEAR);
		int month = now.get(Calendar.MONTH) + 1;// 从0开始
		int date = now.get(Calendar.DATE);

		System.out.println(year + "." + month + "." + date);// 2022.7.17
	}

}

public final void set(int year, int month, int date):设置新的日立时间

import java.util.Calendar;

public class Demo01 {

	public static void main(String[] args) {

		Calendar now = Calendar.getInstance();
		
		// 设置新日历时间
		now.set(1993, 1, 6);
		int year = now.get(Calendar.YEAR);
		int month = now.get(Calendar.MONTH) + 1;
		int date = now.get(Calendar.DATE);

		System.out.println(year + "." + month + "." + date);// 1993.2.6

	}

}

4)练习

需求:键盘录入一个年份,获取任意一年的二月有多少天

import java.util.Calendar;
import java.util.Scanner;

public class Demo01 {

	public static void main(String[] args) {
		/*
		 * 分析:
		 * 	1)键盘录入数据 2)创建一个日历对象 录入的数据就是年 2:3月 1:1日 3)实际的月份是3.1,往前推一天,就是2月最后一天
		 * 4)输出
		 */
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个年份:");
		int year = sc.nextInt();

		Calendar c = Calendar.getInstance();

		c.set(year, 2, 1);
		
		c.add(Calendar.DATE, -1);
		
		System.out.println("月份有:" + c.get(Calendar.DATE) + "天");
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值