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;