和前一天一样,循环嵌套,方法和数组都属于实操出真知的类型,尤其是方法的定义与调用是java的重中之重,这些在日后还是得面对不同类的题型多加练习 Day04
在大循环内,如果每次循环都是相似同带有重复性的操作,就可以使用循环简化操作。可以使处理循环问题更加灵活。嵌套的可以是分支结构的语句,也可以是循环语句。
for(初始化语句1;循环条件表达式1; 初始化变量1 的自增){
循环体语句
for(初始化语句2; 循环的条件表达式2;初始化变量2的自增*){
循环体语句;
}
}
打印三角形 5行 第一行1颗星,第二行2颗星…第5行五颗星
package Chating; public class Ex { public static void main(String[] args) { for (int i = 1; i <= 5; i++) {//外循环控制行数。i的初始值为1,需求是要5行,所以i自增后至多小于等于5 for (int j = 0; j < i; j++) {//内循环表示每行打印的*星数,打印的多少j跟着行数i变 System.out.print("*"); } System.out.println();//每打印一行星后换行 } } }具有特定功能可以重复调用的代码段
一些代码段要经常使用,每次都写一遍效率太低,用大括号括起来 再起个名字,之后可以直接通过名字来调用代码段
特点:提高了代码的复用性封装性,简化了代码的思维难度
格式:
修饰符 返回值类型 方法名称(参数列表) {
方法体语句;
return 返回值;
}
修饰符:这里先写Public static
返回值类型:方法执行后会产生数据返回给调用者,这里表示的是返回数据的数据类型(填int 返回的就是整数,填String返回的就是字符串)如果不需要返回值 填void即可
方法名称 :名字是合法的标识符即可
参数列表:我们定义方法是要完成功能,比如要计算两个整数的和,那在调用该方法时。需要从外部传入两个整数类型的数据在这个变量的容器中,这里的参数列表就表示将要传递进来的数据类型
方法体语句:即调用者想要完成的功能
return返回值:要返回给调用者的最终结果,如果没有返回值,可以单写一个return表示该方法的结束
参数列表:
形式参数: 在方法定义的时候使用,来接收调用该方法时传递的参数。需要加上数据类型,相当于定义了一个变量,只有变量的声明,没有进行赋值,实际参数: 在方法调用的时候使用,即传递给被调用方法的值,不能加上数据类型的参数,也就是对变量进行赋值,使用逗号隔开,顺序必须和定义方法的时候形式参数的顺序一致方法调用的三种格式 :直接调用 打印调用 赋值调用
直接调用:没有的返回的结果 单纯的使用方法
打印调用:把方法的返回值写入输出语句打印出来
赋值调用:把方法的结果赋值给变量,这个变量可以重复使用
方法定义的注意事项:
方法的顺序无所谓方法中不能嵌套定义方法定义后必须调用才能执行,自身不会执行如果方法有返回值 必须加上return+返回值return后的“返回值”,必须和方法名称前面的“返回值类型”保持对应如果没有返回值 则可省略return 返回值类型为void需要计算两个整数的和的方法
package Chating; public class Ex { public static void main(String[] args) { getSum(2,8);//调用getSum()方法 System.out.println("-------------------------");//分割线 System.out.println(getSum2(2,8));//打印调用 } public static void getSum(int a,int b) {//需求是录入两个整数 所以形参都是int类型的a,b int sum = a + b;//两个整数相加 System.out.println(a+"与"+b+"的和为"+sum);//因为是输出语句结果没有返回值,所以之前返回值类型是void } public static int getSum2(int a,int b) {//需要的返回值类型是int,之前返回值类型是int int sum = a + b; return sum;//返回值类型是int } }在同一类中,方法名相同,参数列表(参数列表 类型 个数 顺序 不同)不同,与返回值无关
只要记住一个方法名称 就能实现相似的多个功能
就是一个储存相同类型数据的容器
元素的数据类型[] 数组名 = new 元素的数据类型[数组容器的大小];
给数组申请内存空间,并给该空间里每个元素位置储存数据的过程
元素的数据类型[] 数组名 = new 元素的数据类型[元素的个数]
元素的赋值的方式:
数组名[元素的索引] = 元素值;
索引:代表每个元素在数组中的位置,这个位置从0 开始 到元素个数-1
元素要一个一个赋值
如果没有给元素赋值,这个元素也是有默认值,默认值是0
元素的数据类型[] 数组名 = new 元素的数据类型[]{元素1,元素2,元素3…}
每个元素的数据类型前后一致
元素的个数,取决于大括号中元素的个数
简化的格式:
元素的数据类型[] 数组名 = {元素1,元素2,元素3…}
动态初始化
package Chating; public class Ex { public static void main(String[] args) { //数组的动态初始化 //需求 定义数组 五人制足球 String[] player = new String[5]; //第一个人 player[0] = "萨拉赫"; //第二个人 player[2] = "马内"; //第三个人 //第四个人 player[3] = "菲尔米诺"; //第五个人 player[4] = "奥里吉"; //取出数组中元素的值 数组名[索引] System.out.println(player[0]); System.out.println(player[1]); System.out.println(player[2]); System.out.println(player[3]); System.out.println(player[4]); } }静态初始化
package Chating; public class Ex { public static void main(String[] args) { //静态初始化 //定义一个数组 存储 3个同学的考试分数 int[] count = new int[] {98,76,82};//在数组创建的过程就已经赋值了 System.out.println(count[0]); System.out.println(count[1]); System.out.println(count[2]); System.out.println("==============================="); int[] c = {98,76,82}; System.out.println(c[0]); System.out.println(c[1]); System.out.println(c[2]); } }Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 3
at com.ujiuye.demo.Demo15.main(Demo15.java:6)
产生原因大多为:要获取到的索引值超出了数组的范围
Exception in thread “main” java.lang.NullPointerException
at com.ujiuye.demo.Demo16.main(Demo16.java:8)
空:null,一旦一个引用数据类型变量被赋值为空,他就不再记录堆内存中的某个地址
空指针异常原因大多为:当引用类型变量不再指向任何位置的时候,你还用这个变量,就会抛出空指针异常