首页 > 代码库 > 常用类(三)
常用类(三)
Integer Character Arrays BigDecimal/BigInteger Calendar
数组的排序方式及二分折半查找
一、Integer(方法补充)
1、十进制转换其他进制方法
public static String toBinaryString(int i):二进制
public static String toOctalString(int i):八进制
public static String toHexString(int i):十六进制
public static String toString(int i, int radix)其他进制
2、其他进制转换十进制
String s :s必须是数字字符串
public static Integer valueOf(String s, int radix)
//获取Integer类型的最大值
System.out.println(Integer.MAX_VALUE);
二、Character类 —— char的包装类
1、构造方法
public Character(char value)
构造一个新分配的 Character 对象,用以表示指定的 char 值。
2、常用方法:
public static boolean isDigit(char ch)确定指定字符是否为数字。
public static boolean isLowerCase(char ch)确定指定字符是否为小写字母。
public static boolean isUpperCase(char ch)确定指定字符是否为大写字母
public static char toLowerCase(char ch):把字符转换成小写
public static char toUpperCase(char ch):把字符转换成大写
egg:键盘录入一个字符串,统计该字符串中出现的大写字母,小写字母,数字字符有多少个,多少其他字符。
三、数组的排序和查找
1、冒泡排序
数组内元素前后两两作比较,大的放后面,小的放前面,从最大索引处依次向前确定元素顺序;
public static void bubblesort(int[] arr){
for(int x = 0;x < arr.length -1;x++){
for(int y = 0;y < arr.length - 1 -x;y++){
if(arr[y] > arr[y + 1]){
int i = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = i;
}
}
}
}
2、选择排序
从数组第一个元素开始依次与后面的值作比较与较小值位置互换,直到一轮结束,确定最小索引处的最小值,从最小索引处依次向后确定元素顺序;
public static void choose(int[] arr){
for(int x = 0;x < arr.length - 1;x++){
for(int y = x + 1;y < arr.length;y++){
if(arr[x] > arr[y]){
int i = arr[x];
arr[x] = arr[y];
arr[y] = i;
}
}
}
}
3、数组的二分查找(折半查找)
确定数组的最中间索引处的元素值,与需要查找的值作比较,若大,取前半段,若小,取后半段,再确定新的中间索引处的元素值,作同样比较,循环直到与需要查找的值相等输出该索引;
public static int find(int[] arr,int sub){
int max = arr.length - 1;
int min = 0;
int mid = (max + min)/2;
while(arr[mid] != sub){
if(arr[mid] < sub){
min = mid;
mid = (max + min)/2;
}else if(arr[mid] > sub){
max = mid;
mid = (max + min)/2;
}
if(max - min == 1){
mid = -1;
break;
}
}
return mid;
}
四、Arrays类 —— 对数组一些操作方法
public static String toString(int[] a):将int类型的数组转换成字符串类型
public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序。
public static int binarySearch(int[] a,int key):二分查找
import java.util.Arrays;
import java.util.Scanner;
egg:键盘录入数组,遍历后排序,再遍历后查找所需的值在排序后的数组中的索引;
public class ArraysFind {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("输入数组的长度:");
int[] arr = new int[s.nextInt()];
for(int i = 0;i < arr.length;i++){
System.out.println("请输入第" + (i + 1) + "个元素");
arr[i] = s.nextInt();
}
//将数组转换成字符串输入
System.out.println("原始数组:" + Arrays.toString(arr));
//排序,后并输出
Arrays.sort(arr);
System.out.println("排序后数组:" + Arrays.toString(arr));
//二分查找
System.out.println("输入需要查找索引的元素:");
System.out.println(Arrays.binarySearch(arr, s.nextInt()));
}
}
五、BigDecimal/BigInteger
1、BigDecimal:float类型和double类型(浮点类型)
1)作用:不可变的、任意精度的有符号十进制数 :让运算更精确!
2)BigDecimal构造方法
public BigDecimal(String val)
3)常用方法(加减乘除):
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor)
public BigDecimal divide(BigDecimal divisor, int scale,int roundingMode)
参数: BigDecimal divisor:商
int scale:有几位小数
int roundingMode:以什么样的模式舍入//BigDecimal.ROUND_HALF_UP 详见API
2、BigInteger:
1)作用:可以让超出Integer类型的范围的数据进行计算
2)BigInteger的构造方法:
public BigInteger(String val) val(数字字符串)
3)常用方法(加减乘除):
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger[] divideAndRemainder(BigInteger val):返回的数组是商和余数
六、Calendar(日历类)——是一个抽象类
1、实例化
Calendar c = Calendar.getInstance() ;//创建子类对象的方法
2、c常用方法
public int get(int field)返回给定日历字段的值
field: YEAR:年
MONTH:月
DATE:日
public abstract void add(int field, int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量
public final void set(int year, int month,int date):设置新的日历时间
import java.util.Calendar;
import java.util.Scanner;
//键盘录入一个年份,获取任意一年的二月有多少天
常用类(三)