首页 > 代码库 > 常用类(三)

常用类(三)

 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;

   //键盘录入一个年份,获取任意一年的二月有多少天
 技术分享


常用类(三)