一、数组使用类Arrays
1.在java.util包中,Arrays提供了一系列静态方法,帮助操作数组。以下是较常用的一些方法。
(1) equals方法,比较两个数组参数是否相同。
(2) fill方法,向数组中填充数据参数。
(3) binarySearch方法,查找数组中元素的值与给定数据相同的元素。
(4) sort方法,将数组按升序排列。
(5) copyOfRange方法,将数组的指定范围复制到一个新数组。
(6) toString方法,返回指定数组内容的字符串表示形式。
代码示例如下:
/** * Arrays的一系列静态方法 */
import java.util.Arrays;
public class ArraysTest2{
public static void main(String[] args){
//基本数据类型、字符串
String[] arr = new String[5];
Arrays.fill(arr,0,3,"董帅");//s填充范围是0-2,不包含3
for(String s : arr){
System.out.println(s + ",");
}
System.out.println();
//引用数据类型
ArraysTest2[] arr2 = new ArraysTest2[5];
Arrays.fill(arr2,2,4,new ArraysTest2());//填充范围是2-3,不包含4
for(ArraysTest2 a : arr2){
System.out.println(a + ",");
}
//查找数组中元素的值与给定数据相同的元素
int[] arr3 = {2,6,5,63,2550,2346,34122};
System.out.println(Arrays.binarySearch(arr3,0,3,6) + "\n");//查找范围是0-2,返回的是数组下标
Arrays.sort(arr3);//将数组升序排序
System.out.println(Arrays.binarySearch(arr3,0,3,6) + "\n");
for(int i : arr3){
System.out.println(i);
}
int[] arr4 = {1,4,23,3,54,32,4645};
int[] arr5 = Arrays.copyOf(arr4,5);//赋值到新数组,范围是0-4
for(int i : arr5){
System.out.print(i + ",");
}
System.out.println();
int[] arr6 = Arrays.copyOfRange(arr4,2,5);//赋值到新数组,范围是2-4
for(int i : arr6){
System.out.print(i + ",");
}
System.out.println();
System.out.print(Arrays.toString(arr4));//返回数组的字符串表示形式
}
}
二、枚举类型Enum
枚举类型enum是在JDK5.0加入的类型,类型安全,使枚举数值定义更加紧凑有效。
1.遍历枚举类型
/** * 枚举类型enum */
public class EnumTest{
public enum StudentGrade{
A,B,C,D,E,F
};
public static void main(String[] args){
System.out.println("学生平均成绩:" + StudentGrade.A);
for(StudentGrade sg : StudentGrade.values()){//遍历枚举类型,values()方法返回了一个独立的StudentGrade实例构成的数组
System.out.println("The Grade is:" + sg);
}
StudentGrade s = StudentGrade.valueOf("E");//以字符串的形式返回某一个元素的值。
System.out.println("your grade is:" + s);
}
}
2.在switch中使用枚举类型
/** * 枚举类型enum,在switch语句中使用 */
public class EnumSwitch{
public enum Car{A,B,C,D,E,F,G,H};
public static void main(String[] args){
Car c = Car.G;
switch(c){
case A:
System.out.println("360");
break;
case B:
System.out.println("小米");
break;
case C:
System.out.println("华为");
break;
case D:
System.out.println("苹果");
break;
default:
System.out.println("HTC");
break;
}
}
}
三、几道练习题
(1)求二重循环所有元素的和
/** * 求二位数组所有元素的和 */
public class Task140_3{
public static void main(String[] args){
int[][] a = {{11,23,},{234,12,312,53},{423,53,123,65432}};
int sum = 0;
for(int i = 0;i <= a.length - 1;i++){
for(int j = 0;j <= a[i].length - 1;j++){
sum += a[i][j];
}
}
System.out.println(sum);
}
}
(2) 判断一个单词是否在数组里面
/** *判断一个单词是否在数组里面 */
import java.util.Scanner;
import java.util.Arrays;
public class Task140_2{
public static void main(String[] args){
System.out.print("Please input a word:");
Scanner sc = new Scanner(System.in);
String s = sc.next();
String[] str = {"dong","shuai","brilliant","awesome","shackboey","skydosh"};
int b = Arrays.binarySearch(str,s);
if(b >= 0){
System.out.println("Here am I!");
}else{
System.out.println("what the hell!");
}
}
}
(3) 随机输出一个字符串
/** * 随机输出字符串 */
import java.lang.Math;
public class Task140_4{
public static void main(String[] args){
String[] arr = {"dong","shuai","zangyan","mudi","wangchao","jiaru"};
System.out.println(arr[2]);
int i = (int)(Math.random() * arr.length);
System.out.println(arr[i]);
}
}
(4)生成100个随机数,放到数组中,然后排序输出
/** * 生成100个随机数,放在数组中,然后排序输出 */
import java.util.*;
public class Task140_5{
public static void main(String[] args){
int[] arr = new int[100];
for(int i = 0;i < 100;i++){
Random rnd = new Random();
arr[i] = (int)(rnd.nextInt(Integer.MAX_VALUE) + 1);
System.out.print(arr[i] + ",");
}
System.out.println();
Arrays.sort(arr);
for(int j = 0;j < 100;j++){
System.out.print(arr[j] + " ");
}
}
}
(5) 统计字符串中的英文字母、空格、数字和其它字符的个数。
/** * 统计字符串中各类型字符的个数 */
import java.util.*;
import java.io.*;
//import java.io.InputStream;
public class Task140_6{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("please input character string:");
String s = br.readLine();
//Task140_6 t = new Task140_6();
countSum(s);
}
public static void countSum(String s){
int alphabet = 0;
int blankspace = 0;
int number = 0;
int other = 0;
for(int i = 0;i < s.length();i++){
char c = s.charAt(i);
if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') alphabet++;
else if(c == ' ') blankspace++;
else if(c >= '0' && c <= '9') number++;
else other++;
}
System.out.println("字母个数为:" + alphabet);
System.out.println("空格个数为:" + blankspace);
System.out.println("数字个数为:" + number);
System.out.println("其他字符个数为:" + other);
}
}