Javase基础2

发布时间:2026/5/23 15:24:47

Javase基础2 第四章 数组1.数组的定义1.作用一次性存多个数据2.特点①定义长度②可以存基本数据类型的数据也可以存引用类型的数据3.格式[ ]代表数组一个中括号代表一个一维数组[长度]代表该创建的数组存多少个元素new为创建新的数组①动态初始化数据类型[] 数组名 new 数据类型[长度] 数据类型 数组名[] new 数据类型[长度]②静态初始化数据类型[] 数组名 {元素1,元素2,元素3...}4.静态初始化数组和动态初始化数组区别①动态定义的时候只定义了长度没有直接存值②静态定义的时候直接存值长度根据定义的多少值决定5.代码public class test01 { public static void main(String[] args) { //动态初始化 Integer[] i new Integer[4]; i[0]15; i[1]63; i[2]98; System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); String[] p new String[5]; p[0]我爱中国; p[1]中国我爱; System.out.println(p[0]); System.out.println(p[1]); //静态初始化 char[] c1 {1,m}; System.out.println(c1[0]); } }2.操作数组1.获取数组的长度格式数组名.length2.代码public class test02 { public static void main(String[] args) { String arr[]{林,安,百,曹,沈,伽,江}; for (int i 0; i arr.length; i) { System.out.println(arr[i]); } } }3.索引1.概念元素在数组中所在的下标2.特点索引值要从0开始最大的索引值为 数组长度减-1并且每个索引值都是唯一的。4.存储元素1.格式数组名[索引值] 值 - 将值保存到数组的指定索引位置上2.代码public class test01 { public static void main(String[] args) { //动态初始化 Integer[] i new Integer[4]; i[0]15; i[1]63; i[2]98; System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); String[] p new String[5]; p[0]我爱中国; p[1]中国我爱; System.out.println(p[0]); System.out.println(p[1]); //静态初始化 char[] c1 {1,m}; System.out.println(c1[0]); } }5.获取元素1.快捷键数组名.fori2.代码public class test02 { public static void main(String[] args) { String arr[]{林七夜,安卿鱼,百里胖胖,曹渊,沈青竹,伽蓝,江洱}; for (int i 0; i arr.length; i) { System.out.println(arr[i]); } } }6.常见问题1.数组索引越界异常ArrayIndexOutOfBoundsException①出现的原因操作的索引超过了数组的索引范围②如何解决将操作的索引改到数组的索引范围以内2.空指针异常NullPointerException)①出现的原因如果一个引用类型为Null在操作这个引用类型②解决方案将引用类型赋值7.数组联系1.练习题目随机产生8个[0,100]之间整数统计既是3又是5但不是7的倍数的个数import java.util.Random; public class test03 { public static void main(String[] args) { //1.创建Random对象 Random random new Random(); //2.创建数组,长度为8 int arr[]new int[8]; //3.定义一个count做计数器 int count0; for (int i 0; i arr.length; i) { arr[i] random.nextInt(101); if (arr[i]%30arr[i]%50arr[i]%7!0){ count; } System.out.println(arr[i]); } System.out.println(count); } }2.练习题目利用字符串拼接的方式拼成[1,2,3,4,5,6]public class test04 { public static void main(String[] args) { int arr[]{1,2,3,4,5,6}; String str[; for (int i 0; i arr.length; i) { if(iarr.length-1){ strarr[i]]; }else { strarr[i],; } } System.out.println(str); } }3.练习题目键盘录入一个整数,找出整数在数组中存储的索引位置import java.util.Scanner; public class test05 { public static void main(String[] args) { int[] date{11,22,33,44,55,66,77,88,99}; Scanner scnew Scanner(System.in); int num sc.nextInt(); int flat0; for (int i 0; i date.length; i) { if (numdate[i]){ flat; System.out.println(找到了,索引值为i); } } if (flat0){ System.out.println(没找到); } } }8.数组扩容由于数组的长度是不能改变的所以我们只能新建一个数组进行扩容1.举例定义一个数组,存储1,2,3,将其扩容到长度为5。(将arr1地址值赋值给arr)public class test10 { public static void main(String[] args) { int[] arr{1,2,3,4,5}; int[] arr1new int[9]; for (int i 0; i arr.length; i) { arr1[i]arr[i]; } arrarr1; System.out.print([); for (int i 0; i arr1.length; i) { if (iarr1.length-1){ System.out.print(arr1[i]]); }else { System.out.print(arr1[i],); } } } }第五章 数据算法1.数组翻转(数组中对称索引位置上的元素互换位置)1.原理定义第一个索引和最后一个索引的位置分别为int min0和int maxarr.length-1当互换完位置后执行min和max--当mimax出现的时候就不用互换位置了。代码public class test01 { public static void main(String[] args) { int arr[]{1,2,3,4,5,6,7}; for (int min 0,maxarr.length-1; min max; min,max--) { //定义一个新的变量temp将arr[min]赋值给temp int temparr[min]; arr[min]arr[max]; arr[max]temp; } for (int i 0; i arr.length; i) { System.out.println(arr[i]); } } }2.冒泡排序默认是升序1.原理定义相邻两个元素arr[i]和arr[i1]将这两个元素进行比较元素arr[i]arr[i1]就元素互换换后就往后移接着比较。两个元素互换一次后就会少比较一次。代码public class test02 { public static void main(String[] args) { int arr[]{1,2,3,4,5}; for (int j 0; j arr.length-1; j) { for (int i 0; i arr.length-1-j; i) { if (arr[i]arr[i1]){ int temparr[i]; arr[i]arr[i1]; arr[i1]temp; } } } for (int i 0; i arr.length; i) { System.out.println(arr[i]); } } }3.二分查找提供数组中的一个值查找他的索引值1.原理定义三个变量分别为最大索引maxarr.length-1最小索引(min)和中间索引(mid(minmax)/2),定义一个key值为变量值。特点是默认为升序代码public class test03 { public static void main(String[] args) { int arr[]{1,2,3,4,5,6,7,8,9,10}; int min0; int maxarr.length-1; int mid0; int key4; while (minmax){ mid(minmax)/2; if (keyarr[mid]){ maxmid-1; }else if (keyarr[mid]){ minmid1; }else { System.out.println(找到了,索引为:mid); break; } } } }4.数组工具类1.数组工具类①System类系统相关类static void arraycopy (Object src, int srcPos, Object dest, int destPos, int length)src:源数组,复制哪个数组中的元素srcPos:从源数组的哪个索引开始复制dest:目标数组,将元素复制到哪个数组中去destPos:从目标数组的哪个索引开始粘贴length:复制多少个元素②Arrays类数组工具类String toString(数组)按照[元素1,元素2...]格式打印void sort(数组)数组升序排序int binarySearch(数组,要查找的元素)二分查找,返回元素对应的索引值int[] copyOf(数组,新数组长度)数组扩容,返回新数组2.Hutool工具需要导入jar包官网下载地址https://www.hutool.cn/①导入jar包的流程模块右键- new - directory - 取名lib或者libs将下载下来的jar包复制到lib包下lib包右键-add as library- level选项中选择module - ok②ArrayUtil工具int max(数组)返回数组最大值int indexOf(数组,要查找的数据)顺序查找,指定的数据在数组中的位置reverse数组翻转5.二维数组1.格式1.动态数组 数据类型[][] 数组名 new 数据类型[m][n] 2.静态数组 数据类型[][] 数组名 {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}...}6.获取二维数组长度格式数组名.lengthpublic class test11 { public static void main(String[] args) { String[][] arr {{小白,小蓝},{小猫,小狗},{小花,小草}}; //arr二维数组的长素 System.out.println(arr.length); //arr二维数组中一维数组的长素 for (int i 0; i arr.length; i) { System.out.println(arr[i].length); } } }7.获取二维数组的长度数组名[i][j]1.i为一维数组在二维数组中的索引位置一维数组是大括号j为具体的元素在二维数组中的索引位置二维数组是小括号public class test12 { public static void main(String[] args) { String[][] arr {{小白,小蓝},{小猫,小狗},{小花,小草}}; System.out.println(arr[0][1]);//小蓝 System.out.println(arr[2][1]);//小草 } }2.例子存储元素String arr[0][1]小花3.例子遍历二维数组先遍历二维数组,将一维数组中的每个二维数组获取出来,再遍历每一个二维数组,将具体的元素获取出来。for (int i 0; i arr.length; i) { for (int j 0; j arr[i].length; j) { System.out.println(arr[i][j]); } }8.方法的使用格式修饰符 返回值类型 方法名(形参){ 方法体 return 结果 }1.无参无返回值方法public static void 方法名(){ 方法体 }public class test06 { public static void main(String[] args) { add(); } public static void add(){ String arr[]{然,天,王,郭,孙,张,李}; for (int i 0; i arr.length; i) { System.out.println(arr[i]); } } }2.有参无返回值方法格式public static void 方法名(参数){ 方法体 }//有参无返回值 public class test09 { public static void main(String[] args) { add(然,天,欢,欣,胜,帅,彤); } public static void add(String a,String b,String c,String d,String e,String f,String g){ String arr[]{然,来,欢,欣,利,帅,彤}; for (int i 0; i arr.length; i) { System.out.println(arr[i]); } } }3.无参有返回值方法格式public static 返回值类型 方法名(){ 方法体 return 结果 }public class test07 { public static void main(String[] args) { add(); } public static String add(){ String arr[]{然,天,欢,欣,利,帅,彤}; for (int i 0; i arr.length; i) { System.out.println(arr[i]); } return ; } }4.有参有返回值方法格式public static 返回值类型 方法名(参数){ 方法体 return 结果 }//有参有返回值 public class test08 { public static void main(String[] args) { add(然,天,欢,欣,利,帅,彤); } public static String add(String a,String b,String c,String d,String e,String f,String g){ String arr[]{王薪然,来浩天,王佳欢,郭宇欣,孙胜利,张帅,李禹彤}; for (int i 0; i arr.length; i) { System.out.println(arr[i]); } return ; } }9.形参和实参的区别形参是定义变量但是不赋值实参是给变量赋具体的值10.参数和返回值的使用时机一般都是带参带返回1.参数:将方法A中的数据传递到方法B中做操作,方法B在定义的时候就需要带参数,等着接收方法A中的数据2.返回值:方法A调用方法B之后,需要方法B的结果,然后拿到方法B的结果在A中做其他操作,此时方法B就需要将自己的结果返回出去第六章1.练习1.求出数组最大值public class test01 { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int scscanner.nextInt(); int sc1scanner.nextInt(); int sc2scanner.nextInt(); int temp; if (scsc1){ tempsc; }else{ tempsc1; } if (tempsc2){ System.out.println(temp为最大值); }else { System.out.println(sc2为最大值); } } }2.方法参数传递1.基本类型做方法参数传递传递的是值,不是变量本身2.引用类型做方法参数传递传递的是地址值3.重载1.概念方法名相同,参数列表不同的方法-主要是在同一个类中出现1.public static void open(){} 2.public static void open(int a){} 3.static void open(int a,int b){} 4.public static void open(double a,int b){} 5.public static void open(int a,double b){} 6.public void open(int i,double d){} 7.public static void OPEN(){} 8.public static void open(int i,int j){} //3与8冲突 //5与6冲突 //都是参数列表相同导致不能重载4.可变参数数组1.格式:数据类型...变量名public class Demo01{ public static void main(String[] args) { add(1,8,9,5,6,8,5,3,2,4); } public static void add(int...arr){ int sum 0; for (int i 0; i arr.length; i) { sumarr[i]; } System.out.println(sum); } }5.递归方法自己调用自己public class Demo01 { public static void main(String[] args) { method(); } public static void method() { System.out.println(递归知识); method(); } }1.注意递归需要出口,否则会出现栈内存溢出现象2.练习求npublic class Demo03{ public static void main(String[] args) { int result method(5); System.out.println(result); } public static int method(int n){ if (n1){ return 1; } return n*method(n-1); } }解释定义一个方法,参数代表几的阶乘 - method(n) method(5) - 5*method(4) method(4) - 4*method(3) method(3) - 3*method(2) method(2) - 2*method(1) method(1) - 1 n的阶乘 - n*method(n-1)6.面向对象1.如何使用面向对象a.new对象,然后用对象名.方法名b.类名直接点方法名 - 该方法带static关键字的2.实体类由什么组成:a.属性(成员变量)定义位置:类中方法外作用范围:整个类有默认值:成员变量定义的时候可以先不赋值整数 0小数 0.0字符 \u0000布尔 false引用 null定义格式: 数据类型 变量名b.行为(成员方法)将之前定义的方法,去掉static,其他部分不改变3.创建对象:想调用哪个类的成员,就new哪个类的对象格式类名 对象名 new 类名()4.调用成员:想调用哪个类的成员,就用哪个类的对象去点哪个成员格式对象名.成员名

相关新闻