函数与数组基础知识


函数的概述

   函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。

 

函数的格式

 

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…) {    执行语句;    return 返回值;}public static int add(int a,int b){}

A:修饰符 public static

B:返回值类型 这个特定的功能完成后,需要返回一个结果。这个地方就是返回结果的类型。

C:函数名 为了方便使用这个函数,给它起个名字。这个名字要符合标识符命名规则。

D:参数类型 形式参数的数据类型    形式参数 自定义的接收方    实际参数 发出方add(3,5)

E:执行语句 那么这个语句是由多条语句组成。

F:return 这个功能执行完以后,需要有一个返回值,那么这个值有关键字return带回。

函数的使用及注意事项

一般函数只有被调用后,才执行。

void 表示没有返回。

在这个函数的结尾可以不写return。其实jvm会自动的结尾处加上return;

函数中不能定义函数

如果定义自己的函数 两个明确

明确该功能的结果 说白了就是返回类型。

明确该功能的参数 其实就是明确该功能中是否需要未知内容(形式参数)参与运算。明确未知内容的类型和个数。就是参数列表。

6:函数的重载

函数名相同,参数列表不同。

参数类型不同。int add(int i)void add(double d)

参数个数不同。add(int a,int b);add(int a,int b,int c)

参数顺序不同 print(String name, int age) //参数顺序不同的重载是可以存在的,但是没有什么实际意义

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

好处:便于阅读,优化程序设计。

 

 

数组的概念

数组数组是存储同以数据类型多个元素的集合。是一个数据结构也可看成是一个容器,既可以存储基本数据类型,也可以存储引用数据类型。通过数组名和角标可以引用数组中的元素

每个数组都有自己的成员变量length,用来表示数组所包含的元素个数,length只能是正整数和零,数组创建后length就不能被改变。

数组的定义格式

A:当不明确数组中的元素时,动态初始化    举例 :    int[] arr = new int[3];    arr[0] = 3;

B:当明确数组中的元素时,静态初始化    举例 :    int[] arr = new int[]{1,2,3,4,5};    int[] arr = {1,2,3,4,5};

 

什么时候使用数组?

当要操作的同种数据类型的数据是多个的时候,你就得想着先把这些数据用数组进行存储。

数组的内存位置

A:栈

存储的是局部变量(在函数中定义的变量)。

变量被使用完后,立即自动释放。

B:堆

存储的是实体(数组和对象)。

实体:new出来的东西,可以存放很多数据的东西。

堆内存数据的特点:是每个实体都有内存地址堆内存中的变量都有默认初始化值

int 类型的初始化值是 0

double 类型的初始化值是 0.0

boolean 类型的初始化值是false

char 类型的初始化值是'\u0000' 空字符,unicode编码。

当实体不在被使用的时候,会在jvm空闲的时候,通过java垃圾回收机制使其自动释放。


class Demo2Method {
	public static void main(String[] args) {
		//int sum = getSum(4,5);			//赋值调用
		//System.out.println(sum);
				//有具体返回值
		//getSum(4,5);						//单独调用不推荐
		System.out.println(getSum(4,5));	//输出调用
                //return;							//如果方法的返回值类型是void,有return语句是这样写的return;
<span style="white-space:pre">											</span>//这个return可以省略,省略之后jvm会帮我加上

	/*求两个整数的和
	1,明确返回值类型
	2,明确参数列表
	*/

	public static int getSum(int x,int y) {//int x = 4,int y = 5
		int sum = x + y;					// sum = 9

		return sum;
	}
class Demo6Method {
	//方法重载,方法名相同,只看参数列表,不看返回值类型
	/*
	1,参数个数不同
	2,参数类型不同
	3,参数顺序不同(开发时不建议,因为没什么意义)
	*/
	public static void main(String[] args) {
		double sum = getSum(3,4.0);
		System.out.println(sum);
	}

	//求两个数的和
	/*
	1,返回值类型int
	2,参数列表 int a,int b
	*/

	public static double getSum(int a,double b) {
		return a + b;
	}

	//求三个数的和
	/*
	1,返回值类型 int
	2,参数列表 int a,int b,int c
	*/


	public static double getSum(double a,int b) {
		return a + b;
	}


class Demo1Array {
	public static void main(String[] args) {
		//声明数组
		//int[] arr1;							//数据类型[] 数组名;
		//int arr2[];							//数据类型 数组名[];

		//动态初始化,没有给数组赋具体的值
		int[] arr = new int[5];					//new是一个关键字,用来创建实体对象
												//5代表数组的长度

		arr[0] = 5;

		arr[4] = 10;
		
		//静态初始化
		int[] arr2 = new int[]{1,2,3};			//静态初始化,不用知道数组长度,长度根据元素个数


               //int[] arr1 = new int[]{1,2,3,4,5};		//静态初始化,一初始化就赋值,不允许声明后赋值,根据值的个数决定长度
		//int[] arr2 = {1,2,3,4,5};					//静态初始化的简写形式,只能在一行定义


	}
}

class Demo4Array {
	public static void main(String[] args) {
		int[] arr1 = {1,2,3,4,5};
		//System.out.println(arr1[-1]);			//ArrayIndexOutOfBoundsException:数组索引越界异常
		System.out.println(arr1);				//[I@1afb7ac7
		arr1 = null;							//将数组赋值为null
		System.out.println(arr1[0]);			//NullPointerException:空指针异常
	}
}

class Demo7Array {
	public static void main(String[] args) {
		int[] arr = {11,22,33,44,55};			

		/*for (int x = 0;x < arr.length ;x++ ) {			//正序遍历
			System.out.println(arr[x]);
		}

		for (int x = arr.length - 1;x >= 0 ;x-- ) {		//倒序遍历
			System.out.println(arr[x]);
		}*/

		revArray(arr);									//对数组反转操作
		print(arr);										//遍历打印数组
	}

	/*
	将数组反转
	1,返回值类型void
	2,参数列表,int[] arr
	*/

	public static void revArray(int[] arr) {			
		for (int x = 0;x < arr.length / 2 ; x++) {
			int temp = arr[x];
			arr[x] = arr[arr.length-1-x];
			arr[arr.length-1-x] = temp;
		}
	}												

	/*
	将数组打印
	1,返回值类型void
	2,参数列表,int[] arr
	*/

	public static void print(int[] arr) {
		for (int x = 0;x < arr.length ;x++ ) {
			System.out.print(arr[x] + " ");
		}
	}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值