文章目录
1.数组
1.数组的创建
int[] arrayA = new int[300];
int[] arrayA = new int[] {
5,15,25};
int[] arrayA = {
5,15,25};
// 创建一个数组,能存放10个double类型的数据
double[] arrayB = new double[10];
double[] arrayB = new double[] {
2.0,3.0,5.6};
double[] arrayB = {
2.0,3.0,5.6};
// 创建一个数组,能存放5个字符串
String[] arrayC = new String[5];
String[] arrayC = new String[] {
'Hello','good','bad'};
String[] arrayC = {
'Hello','good','bad'};
//java中没有int a[10]这种语句
2.数组的输出
int[] array = {
10, 20, 30 };
System.out.println(array); //这样你是看不到数组里的元素的,这样打印出的是数组的内存地址[I@75412c2f
// 一个一个打印出
System.out.println(array[0]); // 10
System.out.println(array[1]); // 20
//循环打印出
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
3.数组的遍历输入
int[] a =new int[10];
Scanner scan =new Scanner(System.in);
for(int i=0;i<10;i++){
a[i]=scan.nextInt();
}
4.打印出数组的最大值/最小值
int[] array = {
5, 15, 30, 20, 10000, 30, 35 };
int max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
5.数组的反转
/*
数组元素的反转:
本来的样子:[1, 2, 3, 4]
之后的样子:[4, 3, 2, 1]
*/
for (int min = 0, max = array.length - 1; min < max; min++, max--) {
int temp = array[min];
array[min] = array[max];
array[max] = temp;
}
6.去掉数组中的0
7.return数组
return只能返回一个值,当我们想要返回多个数值时可以return array
public class Demo02ArrayReturn {
public static void main(String[] args) {
int[] result = calculate(10, 20, 30);
System.out.println("总和:" + result[0]);
System.out.println("平均数:" + result[1]);
}
public static int[] calculate(int a, int b, int c) {
int sum = a + b + c; // 总和
int avg = sum / 3; // 平均数
int[] array = new int[2];
array[0] = sum; // 总和
array[1] = avg; // 平均数
int[] array = {
sum, avg };
return array;
//return sum,avg可不行!
}
}
7.传入数组
public class Demo02Method {
public static void main(String[] args) {
int[] array = {
5, 15, 25, 20, 100};
int max = getMax(array);
System.out.println("最大值:" + max);
}
// 给我一个数组,我还给你一个最大值
public static int getMax(int[] array) {
int max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}
}
8.常用的数组方法
int[] array = {
5, 15, 30, 20, 10000, 30, 35 };
//array.lenth
int length = array.length;//7
//Arrays.toString(array)
System.out.println(Arrays.toString(array));//[5,15,30,20,10000,30,35]
通过查询API可知,你查到了如下信息:
public static String toString(数组):因为是静态方法所以可以使用“类名.方法”的形式(Arrays.toString(数组))调用,返回的类型是一个String类型
public static void sort(数组):
因为是静态方法所以可以使用“类名.方法”的形式(Arrays.sort(数组))调用,返回类型是一个void类型,所以你不能使用String intStr = Arrays.sort({
2, 1, 3, 10, 6});这种的返回形式
事实上,它们的使用方法如下
String NewStr = Arrays.toString({
10, 20, 30});将参数数组变成字符串(按照默认格式:[元素1, 元素2, 元素3...])
Arrays.sort(array1);按照默认升序(从小到大)对数组的元素进行排序。
int[] intArray = {
10, 20, 30};// 将int[]数组按照默认格式变成字符串
String intStr = Arrays.toString(intArray);
System.out.println(intStr); // [10, 20, 30]
int[] array1 = {
2, 1, 3, 10, 6};
Arrays.sort(array1);
System.out.println(Arrays.toString(array1)); // [1, 2, 3, 6, 10]
String[] array2 = {
"bbb", "aaa", "ccc"};
Arrays.sort(array2);
System.out.println(Arrays.toString(array2)); // [aaa, bbb, ccc]
2.ArrayList
1.ArrayList的重点知识
数组的长度不可以发生改变。
但是ArrayList集合的长度是可以随意变化的。
对于ArrayList来说,有一个尖括号<E>代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型。
注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
如果内容是空,得到的是空的中括号:[]
ArrayList当中的常用方法有:
public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。
但是对于其他集合(今后学习)来说,add添加动作不一定成功。boolean success = list.add("柳岩");//True
public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。String name = list.get(2);// 赵又廷
public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。String whoRemoved = list.remove(3);// 李小璐
public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。int size = list.size();
import java.util.ArrayList;
public class Demo03ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list); // []
// 向集合中添加元素:add
boolean success = list.add("柳岩");
System.out.println(list); // [柳岩]
System.out.println("添加的动作是否成功:" + success); // true
list.add("高圆圆");
list.add("赵又廷");
list.add("李小璐");
list.add("贾乃亮");
System.out.println(list); // [柳岩, 高圆圆, 赵又廷, 李小璐, 贾乃亮]
// 从集合中获取元素:get。索引值从0开始
String name = list.get(2);// 赵又廷
// 从集合中删除元素:remove。索引值从0开始。
String whoRemoved = list.remove(3);// 李小璐
System.out.println(list); // [柳岩, 高圆圆, 赵又廷, 贾乃亮]
// 获取集合的长度尺寸,也就是其中元素的个数
int size = list.size();
}
}
/*
如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
基本类型 包装类(引用类型,包装类都位于java.lang包下)
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean
所以,
ArrayList<int> listB = new ArrayList<>();是错误写法!泛型只能是引用类型,不能是基本类型
ArrayList<Integer> listC = new ArrayList<>();是正确写法
*/
import java.util.ArrayList;
public class Demo05ArrayListBasic {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
// ArrayList<int> listB = new ArrayList<>(); // 错误写法!泛型只能是引用类型,不能是基本类型
ArrayList<Integer> listC = new ArrayList<>();
listC.add(100);
listC.add(200);
System.out.println(listC); // [100, 200]
int num = listC.get(1);
System.out.println("第1号元素是:" + num);
}
}
2.ArrayList的习题
1.题目:生成6个1~33之间的随机整数,添加到集合,并遍历集合。
import java.util.ArrayList;
import java.util.Random;
public class Demo01ArrayListRandom {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 6; i++) {
int num = r.nextInt(33) + 1;
list.add(num);
}
// 遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
2.题目:自定义四个集合对象,添加到集合,并且遍历
import java.util.ArrayList;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Demo02ArrayListStudent {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student one = new Student("洪七公", 20);
Student two = new Student("欧阳锋", 21);
Student three = new Student("黄药师", 22);
Student four = new Student("段智兴", 23);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
// 遍历集合
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:" + stu.getName() + ",年龄" + stu.getAge());
}
}
}
3.题目:将[10, 20, 30]以 {元素@元素@元素}的格式打印出来{10@20@30}
import java.util.ArrayList;
public class Demo03ArrayListPrint {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("张三丰");
list.add("宋远桥");
list.add("张无忌");
list.add("张翠山");
System.out.println(list); // [张三丰, 宋远桥, 张无忌, 张翠山]
printArrayList(list);
}
public static void printArrayList(ArrayList<String> list) {
// {10@20@30}
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
String name = list.get(i);
if (i == list.size() - 1) {
System.out.println(name + "}");
} else {
System.out.print(name + "@");
}
}
}
}
4.题目:
用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中。
import java.util.ArrayList;
import java.util.Random;
public class Demo04ArrayListReturn {
public static void main(String[] args) {
ArrayList<Integer> bigList = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 20; i++) {
int num = r.nextInt(100) + 1; // 1~100
bigList.add(num);
}
ArrayList<Integer> smallList = getSmallList(bigList);
System.out.println("偶数总共有多少个:" + smallList.size());
for (int i = 0; i < smallList.size(); i++) {
System.out.println(smallList.get(i));
}
}
public static ArrayList<Integer> getSmallList(ArrayList<Integer> bigList) {
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < bigList.size(); i++) {
int num = bigList.get(i);
if (num % 2 == 0) {
smallList.add(num);
}
}
return smallList;
}
}