【JavaSE学习笔记】常用类介绍03_Character,Arrays,BigDecimal,BigInteger,Calendar
来源:互联网 发布:品类管理数据分析 编辑:程序博客网 时间:2024/05/22 00:48
常用类介绍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')); // trueSystem.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')); // trueSystem.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')); // trueSystem.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循环中判断:
6)输出结果isLowerCase(char ch):判断小写字母
isUpperCase(char ch):大写字母
isDigit(char ch):数字字符
满足条件就做++
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));// 1System.out.println(Arrays.binarySearch(arr, 66));// -6System.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 = 4if (iMax == -1)// 最大索引==-1return "[]";// [],说明没有元素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=66return 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;// 最小索引0int high = toIndex - 1;// 最大索引4while (low <= high) {// 0 < 4int mid = (low + high) >>> 1;// int mid = (0+4);mid = 2,mid =3,mid=4int midVal = a[mid];// 表示该索引处对应的元素:a[3],a[4],a[5]if (midVal < key) // mid=4===>value:55<66low = mid + 1;// 3,4,5else if (midVal > key)high = mid - 1;elsereturn 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.09999999999999999System.out.println(1.0 - 0.32);// 0.6799999999999999System.out.println(1.015 * 100);// 101.49999999999999System.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.01301System.out.println(bd1.divide(bd2, 3, BigDecimal.ROUND_HALF_UP));// 0.013System.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提供了BigIntegerBigInteger 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));// 150System.out.println(bi1.subtract(bi2));// 50System.out.println(bi1.multiply(bi2));// 5000System.out.println(bi1.divide(bi2));// 2BigInteger[] bis = bi1.divideAndRemainder(bi2);System.out.println("商为:" + bis[0]);// 2System.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) + "天");}}
- 【JavaSE学习笔记】常用类介绍03_Character,Arrays,BigDecimal,BigInteger,Calendar
- JavaSE----API之常用类(Math、Random、System、BigInteger和BigDecimal、Date和DateFormat、Calendar)
- 【JavaSE笔记】Java常用类及其方法(五)_Character
- 11.2常用类(Arrays类,Bigdecimal类,BigInteger类,System类,Calendar类,Date类,Math类,Random类,正则表达式)
- (30)Java学习笔记——常用对象 / BigInteger 类 / BigDecimal 类
- 常用类-BigInteger类、BigDecimal类、Date/DateFormat类、Calendar类
- 14 API-常用类(正则表达式(Pattern,Matcher),Math,Random,System,BigInteger,BigDecimal,Date/DateFormat,Calendar)
- java常用类库续2(大数操作BigInteger、BigDecimal类、对象克隆技术、Arrays类)
- 【我的Java笔记】常用类_Character
- JAVA学习笔记——BigInteger类和BigDecimal类
- 【JavaSE_学习笔记】BigDecimal类与BigInteger类
- javaSE-常用类-Calendar
- JavaSE学习笔记_16:Java-Calendar类
- 选择排序-二分查找-Arrays-System-BigDecimal-BigInteger-Date-Calendar-Math
- 11. JAVA常用类库 Part 3 (Math类、Random类、NumberFormat类、BigInteger类和BigDecimal类) ----- 学习笔记
- Java基础学习笔记14——(正则表达式,Math,Random,System,BigInteger,BigDecimal,Date/DateFormat,Calendar)
- 【JavaSE】Java高精度计算类:BigInteger和BigDecimal
- 常用类"三"(BigInteger,BigDecimal,Date)
- LeetCode 349. Intersection of Two Arrays
- hdu 2029 Palindromes _easy version
- opencv总结1
- 使用TCP协议的NAT穿透技术 (转)
- 第一篇博客。
- 【JavaSE学习笔记】常用类介绍03_Character,Arrays,BigDecimal,BigInteger,Calendar
- 数据库的基本语句用法
- SpringBoot之使用JPA保存数据
- oracle Supplemental Log补全日志介绍
- 基于darknet框架分类器训练
- CMakeLists.txt中设置编译后的可执行程序优先调用本地库(和可执行程序在同一个文件夹下的库)
- SharedPreference.Editor的apply和commit方法异同
- 华为诺亚方舟实验室主任李航:神经符号处理开启自然语言处理新篇章
- Echars+Ajax+SpringMVC获取动态数据