函数,重载(overload),数组

Java学习笔记之-----函数,重载,数组

函数

定义
函数又称方法,是定义在类中具有特定功能的一段独立程序

如何定义一个功能
1.是一个封闭的大区间,即大括号{}
2.需要名称
3.需要有参与运算的数据
4.需要定义功能的结果类型

简单的说,就是明确这个功能的结果是什么。这个功能需要的未知内容是什么。

格式

/*
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2.....){
	执行语句;
	return 返回值;
}
*/

:函数的返回类型如果是void,return可以省略不写。因为void类型下没有返回值,但要知道的是,虽然代码中没有写return,但return在编译时是存在的。

示例1

class Demo{
	//使用*符号画出指定行列的矩形
	void show(int row,int col){
		for(int x = 0; x<row;x++){
			for(int y = 0;y<col;y++){
				System.out.print("*");
			}
			//换行
			System.out.println();							
		}		
	}
}
public class MethodDemo{
	public static void main(String args[]){
		Demo d = new Demo();
		//调用Demo类中的show方法,输出指定行列的*矩形
		d.show(4,5);
	}
}

在这里插入图片描述
示例2

class Demo{
	//定义一个方法,进行对输入的数字做加法
	int method(int x,int y){
		return x+y;
	}
}
public class AddDemo{
	public static void main(String args[]){
		Demo d = new Demo();
		int num = d.method(5,7);
		System.out.println("num="+num);		
	}
}

在这里插入图片描述
升级一下,手动输入数字怎么样~~

import java.util.Scanner;
class Demo{
	//定义一个方法,进行对输入的数字做加法
	int method(int x,int y){
		return x+y;
	}
}
public class AddDemo{
	public static void main(String args[]){
		//使用Scanner进行数字的输入
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入两个数字");
		int x = scan.nextInt();
		int y = scan.nextInt();
		Demo d = new Demo();
		int num = d.method(x,y);
		System.out.println("num="+num);
		
	}
}

在这里插入图片描述

重载(overload)

概念
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或参数类型不同即可。

特点
与返回值类型无关,只看参数列表。

好处
方便阅读,优化程序设计

示例

class Demo{
	//定义一个画九九乘法表的功能
	void multable(int num){
		for(int x = 1 ;x<=num;x++){
			for(int y = 1;y<=x;y++){
				System.out.print(y+"*"+x+"="+y*x+"\t");	
			}
			System.out.println();
		}		
	}
	//标准版
	void multable(){
		for(int x = 1 ;x<=9;x++){
			for(int y = 1;y<=x;y++){
				System.out.print(y+"*"+x+"="+y*x+"\t");	
			}
			System.out.println();
		}		
	}	
}
public class OverloadDemo{
	public static void main(String args[]){
		Demo d = new Demo();
		d.multable(7);
		d.multable();
	}	
}

在这里插入图片描述

数组

概念
同一类型数据的集合,数组其实就是一个容器。

好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式

/*
第一种:数据类型[] 数组名 = new 数据类型[数据长度];
int[] arr = new int[5]

第二种:数据类型[] 数组名 = {具体数据};
int[] arr = {1,2,3,4,5};
*/

如果将arr定义为空,这时会产生一个运行时异常----NullPointerException(空指针异常)
这是因为定义为null后,栈中主方法中的arr指向堆中的地址被清空。

public class ArrDemo{
	public static void main(String args[]){
		int[] arr = new int[2];
		//将arr定义为空
		arr = null;
		System.out.print(arr[0]);//NullPointerException
	}
}

在这里插入图片描述
示例1获取多个数的和

class Demo{
	//定义数字求和的功能
	int add(int[] arr){
		//定义变量记录和
		int sum = 0;
		//使用循环对数组进行遍历
		for(int x = 0 ;x<arr.length;x++){
			sum = sum + arr[x];
		}
		return sum;
	}	
}
public class AddNum{
	public static void main(String args[]){
		int[] arr = {5,5,5,5};
		Demo d = new Demo();
		int i = d.add(arr);
		System.out.print(i);
	}
}

在这里插入图片描述
示例2获取多个数中的最大值

class Demo{
	//定义功能,得到多个数中的最大值
	int getMax(int[] arr){
		//首先定义数组中第一位数为最大值
		int max = arr[0];
		//遍历数组
		for(int x = 1;x<arr.length;x++){
			if(arr[x]>max){
				max = arr[x];
			}
		}
		return max;
	}
	/*
	//另一种写法,定义数组中的第一个角标为最大数
		int max = 0;
		//for循环
		for(int x = 1;x<arr.length;x++){
			if(arr[x]>arr[max]){
				max = x;
			}
		}
		return arr[max];
	*/	
}
public class MaxNum{
	public static void main(String args[]){
		int[] arr = {12,4,6,8,90,67};
		Demo d = new Demo();
		int i = d.getMax(arr);
		System.out.print(i);
	}
}

在这里插入图片描述

内存空间的划分

栈,堆,方法区,本地方法区,寄存器

栈内存:
存储的都是局部变量
变量的生命周期一结束就被释放

堆内存:
存储的都是实体(对象)
每一个实体都有一个首地址值
堆内存的变量都是默认初始化值,不同类型不一样
int–0 ,double–0.0 ,boolean–false ,char–’\u0000’
当实体不再使用时,会被垃圾回收机制处理

该文章为学习笔记,如有不足之处还请指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值