一、数组操作
【先写几个练习】
public class Demo01Array {
public static void main(String[] args) {
//1.创建Random对象以及数组
Random rd = new Random();
int[] arr = new int[10];
//2.定义一个变量,统计个数 count
int count = 0;
//3.循环随机循环存
for (int i = 0; i < arr.length; i++) {
arr[i] = rd.nextInt(101);
}
//4.遍历数组,将每一个元素获取出来
for (int i = 0; i < arr.length; i++) {
//5.判断如果 元素%3==0 && 元素%5==0 && 元素%7!=0
if (arr[i]%3==0 && arr[i]%5==0 && arr[i]%7!=0){
//6.如果判断成功,count++
count++;
}
}
//7.输出count
System.out.println("count = " + count);
}
}
问题升级:
如果查不到,输出对应的提示(一般我们输出负数)
public class Demo04Array {
public static void main(String[] args) {
//1.创建Scanner对象
Scanner sc = new Scanner(System.in);
//2.定义数组,随意存点数据
int[] arr = {11, 22, 33, 44, 55, 66, 33};
//3.键盘录入一个整数 data
int data = sc.nextInt();
//定义一个变量,做标记
int flag = 0;
//4.遍历数组,将每一个元素获取出来
for (int i = 0; i < arr.length; i++) {
if (data == arr[i]) {
//5.在遍历的过程中,用data和遍历出来的元素比较,如果相等输出对应的索引
System.out.println(i);
flag++;
}
}
//出了循环,再次判断flag,如果还是0,证明在遍历的过程中,if根本没有进去过
if (flag==0){
System.out.println("没找到");
}
}
}
二、数组复杂操作
1)练习1
数组扩容
需求:
定义一个数组:int[] arr1 = {1,2,3,4,5}
将数组由原来的长度扩容到10
public class Demo05Array {
public static void main(String[] args) {
//定义一个数组:int[] arr1 = {1,2,3,4,5}
//将数组由原来的长度扩容到10
int[] arr1 = {1,2,3,4,5};
//定义新的新数组,长度定位10
int[] arr2 = new int[10];
//遍历arr1,将arr1中的数据放到arr2中
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
/*for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");
}*/
//将arr2的地址值赋值给arr1
arr1 = arr2;
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
}
}
2)练习2-数组合并
public class Demo06Array {
public static void main(String[] args) {
//1.定义两个数组
int[] arr1 = {1,2,3};
int[] arr2 = {4,5,6};
//2.定义新数组
int[] newArr = new int[arr1.length+ arr2.length];
//3.遍历arr1,将arr1的元素放到newArr
for (int i = 0; i < arr1.length; i++) {
newArr[i] = arr1[i];
}
/*for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i]+" ");
}*/
int len = arr1.length;
//4.遍历arr2,往newArr中存储
for (int i = 0; i < arr2.length; i++) {
/*
第一次循环: newArr[3+0] = arr2[0]
第二次循环: newArr[3+1] = arr2[1]
第三次循环: newArr[3+2] = arr2[2]
*/
newArr[len+i] = arr2[i];
}
for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i]+" ");
}
}
}
三、二维数组
1)二维数组的定义格式
1.概述:数组中套着多个一维数组
2.定义:
动态初始化
数据类型[][] 数组名 = new 数据类型[m][n]
数据类型 数组名[][] = new 数据类型[m][n]
数据类型[] 数组名[] = new 数据类型[m][n]
m:代表的是二维数组的长度->二维数组中最多能放几个一维数组
n:代表的是每一个一维数组的长度->每一个一维数组中最多能放几个元素
静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...}...}
数据类型 数组名[][] = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...}...}
数据类型[] 数组名[] = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...}...}
简化静态初始化:
数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...}...}3.特殊的定义方式:
数据类型[][] 数组名 = new 数据类型[m][]
只指明了二维数组的长度,但是后面没有指定一维数组长度,那么一维数组是不会被创建出来的
public class Demo01Array {
public static void main(String[] args) {
//动态初始化
int[][] arr1 = new int[3][3];
int arr2[][] = new int[3][3];
int[] arr3[] = new int[3][3];
//静态初始化
String[][] arr4 = {{"白骨精","蜘蛛精","老鼠精"},{"郭嘉","大乔"},{"宋江","李逵","卢俊义"}};
System.out.println("================");
int[][] arr5 = new int[3][3];
for (int i = 0; i < arr5.length; i++) {
System.out.println(arr5[i]);
}
System.out.println("================");
int[][] arr6 = new int[3][];
for (int i = 0; i < arr6.length; i++) {
System.out.println(arr6[i]);
}
}
}
2)获取二维数组长度
3)获取二维数组中的元素
4)二维数组中存储元素
5)二维数组的遍历
6)二维数组的内存图
四、方法的使用
1.方法介绍以及简单方法定义(无参无返回值)
public class Demo01Method {
public static void main(String[] args) {
farmer();
cooker();
cooker();
me();
}
//农民伯伯
public static void farmer(){
System.out.println("播种");
System.out.println("浇水");
System.out.println("施肥");
System.out.println("拔草");
System.out.println("收割");
}
//厨师
public static void cooker(){
System.out.println("洗菜");
System.out.println("切菜");
System.out.println("炒菜");
System.out.println("装盘");
}
//顾客
public static void me(){
System.out.println("洗手");
System.out.println("吃菜");
}
}
2.无参数无返回值的方法执行流程
3.方法定义各部分解释
4.有参数无返回值的方法定义和执行流程
public class Demo02Method {
public static void main(String[] args) {
//直接调用
sum(10,20);
}
//有参无返回值的方法
public static void sum(int a,int b){
int sum = a+b;
System.out.println("sum = " + sum);
}
}
5.无参数有返回值定义以及执行流程
public class Demo03Method {
public static void main(String[] args) {
//打印调用
System.out.println(sum());
//赋值调用-> 建议使用
int result = sum();
System.out.println("result = " + result);
if (result>100){
System.out.println("结果大于100");
}else{
System.out.println("结果小于100");
}
}
public static int sum(){
int a = 10;
int b = 20;
int sum = a+b;
return sum;//30
}
}
6.有参数有返回值定义以及执行流程
public class Demo04Method {
public static void main(String[] args) {
int sum = sum(10, 20);
System.out.println("sum = " + sum);
}
public static int sum(int a,int b){
int sum = a+b;
return sum;
//return a+b;
}
}
7.形式参数和实际参数区别、
8.参数和返回值使用的时机
9.变量作为实参使用
public class Demo05Method {
public static void main(String[] args) {
int a = 10;
int b = 20;
/*
a = 10
b = 20
传递a和b,仅仅是传递a和b的值,不是变量本身
*/
boolean compare = compare(a, b);
System.out.println("compare = " + compare);
}
public static boolean compare(int a,int b){
if (a>b){
return true;
}else{
return false;
}
}
}
【总结】
方法使用注意事项
10.方法练习