Java基础之方法与数组(知识点的归纳)

方法与数组


一、方法的定义

为什么要有方法

方法(又叫函数)就是代码功能的一段特定功能的代码块。方法提高程序的复用性和可读性。

比如有了方法,我们可以把重复使用的一段代码提炼出来,然后在每个需要执行这段代码的地方去调用即可。

在一个飞机大战的游戏中,飞机需要发射子弹,那么我们可以把发射子弹的这段代码写成方法,这样就可以避免每次重写相同的代码。

方法的的格式:

语法:

访问权限修饰符[ 其它的修饰符如static]返回值类型 方法名(参数类型1 形参1、参数类型2 形参2…)
{//形参列表
//方法体
return返回值;
}

getMenu(); //调用方法,此时方法才能被运行
//public 访问权限修饰符
//static 静态修饰符,描述的方法可以直接调用
//void 返回值(无返回值)
//
 // getMwn 方法名   定义一个方法,在没有调用时是不会执行的
public static void getMenu(){
System.out.println();
}

方法的格式说明:

修饰符:目前就用public stati

返回值类型:就是功能结果的数据类型

方法名:见名知意,首字母小写,遵守驼峰命名法。方便调用。

二、方法的行参和实参

参数:
实际参数:就是实际参与运算的

形式参数:就是方法定义上的,用于接收实际参数的

参数类型:就是参数的数据类型

参数名:就是变量名

方法体语句:就是完成功能的代码
注意:

1、若当前方法中不要使用形参,那么形参列表中可以为空

2、实参和形参的类型要相i互兼容,且:实参的取值范围要小于或者等于形参类型的取值范围。

在调用方法中、如果我们定义的方法有参数,就必须在调用方法的同时传入这个值,即给当前方法中的参数值赋值,而这传入的值我们称为实际参数,也就是实参。

实参:传入的参数值

形参:接收实参传过来的值

注意:实参名与形参名可以相同,也可以不同

## 小结:形参就是一个变量,实参就是一个值,传参就是把一个值给一个形参赋值

三、方法的返回值

return:结束方法的

返回值:就是功能的结果,由return带给调用者

注意:

1、若当前方法没有返回值类型,即返回值类型是void,那么当前的方法中可以不写return

2、return即表示结束一个方法,也可以将返回值返回给调用当前方法的调用者

3、return返回值时一次只能返回一个值,不可以返回多个值

4、一个方法中可以有多个return,但被执行的只能有一个,所以需要判断

-练习:判断给定年份是否闰年
代码如下(示例):

   //调用方法
   isRunNian(2020);//调用者
   if(bool){
   System.out.println("闰年");
   }else{
   System.out.println("平年");
  }
}
  //方法
  public static boolean isRunNian(int year){
     if (year %4==0 && year%100 != 0) || (year %400==0){
     return true;
     } else{
     return false;
     }
  }

四、方法的重载

方法(函数)

方法重载:overloading method(在同一个类中,方法名相同,参数列表不同,返回值不能作为重载的条件)

在类中可以创建多个方法,他们具有相同的名字,但具有不同的参数和不同的定义:(返回值不能作为重载的条件)

public void method(int a){…}

public void method(char c){…}

五、数组

1、数组的定义

数组:数组是相同数据类型的多个数据的容器。
这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素。(“简单理解就是:一个跟一个顺序排列”)。

2、数组的赋值方式

格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度];

int[] nums = new int[5];

格式 2. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,数组内容 3…数组内容 n};

int[] nums = {1,2,3,4,5};

格式 3. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3…内容 n};

int[] nums = new int[]{1,2,3,4,5};

格式 4. 数据类型[] 数组名;

int[] nums;

格式 4 属于只创建了数组引用名, 并未在内存创建数组空间。

六、数组的遍历

求数组的长度

x.length

通过下标来访问数组中的元素。

下标:从零开始,到数组长度-1

如:int[ ]scores={89,90};

访问最后一个元素值:int lastElement=scores[scores.length-1];

遍历:依次取出数组中的每一个元素

//数组的遍历
int [] scores ={23,25,63};
System.out.println("数组长度"+scores.length);
//遍历
   int len = scores.length;
   for(int i=0;i<len;i++){
   int scores[i];
   System.out.println(scores);
   }
   System.out.println(scores);
}
}

遍历方式:普通的for循环

语法:for(int i=0;i<数组长度;i++){

//i:循环变量,同样:也是数组的下标(取值范围[ 0,数组长度)]

数组元素中的类型 变量=数组名[i];

}

使用数组时要注意的问题

空指针异常(NullPointerException)
数组越界异常(ArraylndexOutOfBoundsException)

public static void print3(int [] x){
//java.lang.NullPointerException
//当一个变量为null(没有赋值)时,我们去调用了该变量的属性和方法 
System.out.println("数组长度为":x.length};
//测试数组的异常,数组下标越界
//java.lang.ArrayIndexOutOfBoundsException
public static void print4(int[] x){
for(int i=0;i<=x.length;i++){
System.out.println(x[i]);
}
}
}

数组内存结构分析:数组是引用类型,会存放在堆内存

栈内存- 运行速度高,因为固定大小固定、用于存储局部、临时变量(基本数据类型和引用变量)。
堆内存-运行速度慢,因为灵活需要计算,大小不固定,存放的是对象。

数组实例

1、猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数

package day01_Demo2;

import java.util.Random;
import java.util.Scanner;

public class Demo1 {
	public static void main(String[] args) {

		int[] nums = new int[5];
		int len = nums.length;
		Random r = new Random();// 创建可以生成随机数的工具
		for (int i = 0; i < len; i++) {
			nums[i] = r.nextInt(50);
		}
		System.out.println("请输入你要猜的数:60以内");
		Scanner input = new Scanner(System.in);
		int userNum = input.nextInt();
		boolean flag = false;
		for (int x : nums) {//这是一个foreach循环遍历,就是把nums这个数组进行遍历,它有多少个数,就遍历多少遍。
			if (userNum == x) {
				flag = true;
				break;
			}
		}
		if (flag) {
			System.out.println("恭喜你,猜对了");
		} else {
			System.out.println("不好意思,你猜错了");
		}
	}
}
foreach循环格式如下:

     for(元素类型 元素变量x:遍历对象(数组或集合)){

            引用元素变量x的语句;

     }

2、打印图形

package day02_Task;

public class Task3_3_3 {
	/**
	 * 打印等腰三角形
	 * @param args
	 */

	public static void main(String[] args) {
		 int rows = 5;//定义行数
		 //打印等腰三角形  先打印空格  再打印*
		 for (int i=1; i<=rows; i++) {
			for (int j=1; j<=rows-i; j++) {
				System.out.print(" ");
			}
			for (int m=1; m<=2*i-1; m++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
	}
}
-------------------------------------------------------------
package day02_Task;

public class Task3_3_2 {
  /**
   * 打印倒直角三角形
   * @param args
   */

	public static void main(String[] args) {
		  int rows = 5;//定义行数
		  
		  //打印倒直角三角形
		  for (int i=0; i<rows; i++) {
			for (int j=1; j<rows+1-i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}

	}

}
以上自己测试吧,就不贴运行结果了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值