黑马程序员——Java基础语法---函数与数组

 

---------- android培训 java培训 、期待与您交流! ----------


函数

(1)定义:定义在类中,有特定功能的一段小程序。


(2)函数的格式:
修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)
{
函数体;
reutrn 返回值;
}
A:修饰符public static
B:返回值类型程序最终结果的数据类型
C:函数名其实就是函数的名称,方便我们调用。
D:参数
形参类型数据类型
形式参数就是接收实际参数的变量
实际参数就是实际参与操作的变量(常量)
E:函数体就是按照正常的逻辑完成功能的代码。
F:返回值就是程序的最终结果
G:reutrn 返回值哪里调用程序,return就把结果返回到哪里。
(3)函数的特点:
A:函数与函数之间是平级关系。不能在函数中定义函数。
B:运行特点函数只有被调用才执行。  

(4)函数的调用

A:有明确返回值
a:单独调用  一般没有意义。
b:输出调用  但是如果想拿结果继续操作,就有问题了。所以,不好。
c:赋值调用  推荐方式。
B:void类型
单独调用

下面是例子说明:

public class HanShuDemo {  
    //默认被jvm调用  
    public static void main(String[] args) {  
        int x=3;  
        int y=7;  
        //函数调用  
        show(x,y);   //单独调用  
          
        System.out.println(show(x,y));  //输出调用  
          
        int z=show(x,y);   //复制调用  
        System.out.println(z);  
          
    }  
    //写一个函数,求两个数的和  (函数之间是平级关系)  
    public static int show(int a,int b){  
        int c=a+b;  
        //返回值  
        return c;  
    }  
}  
下面是示例应用:求两个整数的最大值

public class HanShuDemo
    //默认被jvm调用  
    public static void main(String[] args) {  
        int x=3;  
        int y=7;  
        //函数调用        
        System.out.println("最大值是"+max(x,y));   //输出调用  
    }  
    //写一个函数,求两个数的最大值  (函数之间是平级关系)  
    public static int max(int a,int b){  
        if(a>b){  
            return a;  
        }  
        else{  
            return b;  
        }  
    }  
}  
(5)函数
A:函数名相同,参数列表不同(个数不同,对应的类型不同)。
 与返回值类型无关。
B:举例:
public static int sum(int a,int b){...}
public static int sum(int a,int b,int c){...}
public static int sum(float a,float b){...}


二、数组


(1)概念     

(1)数组是存储同一种类型的多个元素的容器。
    (2)好处:数组中的元素会被自动从0开始编号,方便我们获取。

 

(2)一维数组的格式

       

格式:
A:int[] arr = new int[3];
B:int arr[] = new int[3];
C:int[] arr = new int[]{1,2,3};
D:int[] arr = {1,2,3};

        其中:new是用来在堆内存中产生一个容器实体。

数组也被称为引用数据类型。在内存中的分配如下图:

注:1、System.out.println(arr);得到的结果是一个哈希值,也叫地址值。

        2、数组在堆内存开辟空间后,就有默认的初始化值。如:int默认0;boolean默认false。

内存小知识:

        Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

        栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。

        堆内存:1、数组和对象,通过new建立的实例都存放在堆内存中。

                      2、每一个实体都有内存地址值。

                      3、实体中的变量都有默认初始化值。

                      4、实体不在被使用,会在不确定的时间内被垃圾回收器回收。

 

(3)数组操作常见问题

     1、数组脚标越界异常(ArrayIndexOutOfBoundsException)。例:

               int[] arr = new int[2];

               System.out.println(arr[3]);

               访问到了数组中的不存在的脚标时发生。

     2、空指针异常(NullPointerException)。例:

              int[]arr = null;

             System.out.println(arr[0]);

                 arr引用没有指向实体,却在操作实体中的元素时。

 

(4)数组中的数组(多维数组)

   下面主要讲二维数组。       

格式:
A:int[][] arr = new int[3][2];
B:int[][] arr = new int[3][];
C:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};

二维数组在内存中的分配情况示例:

 

(5)数组常见操作

1、数组遍历:

 获取数组中的所有元素

下面是数组遍历求和的应用

public class ShuZuDemo {  
    public static void main(String[] args) {  
        int[] in={34,54,32,56};  
        int sum=0;  
        //下面实现数组的遍历  
        for (int i : in) {      //增强for  
            //求和  
            sum+=i;  
        }  
        System.out.println(sum);  
    }  
}  

2、数组的查找

下面是查找的实现程序

public class ShuZuDemo {
	public static void main(String[] args) {
		int[] in={34,54,32,56};
		int ii=564;
		int sum=-1;
		//遍历数组
		for(int x=0;x<in.length;x++){
			//判断并输出
			if(in[x]==ii){
				sum=x;
				System.out.println(sum);
			}
		}
		if(sum==-1){
			System.out.println("要查找的数据不存在");
		}
        }
}

3、 数组排序:

        常见的排序方式:冒泡排序和选择排序。在Java已经定义好了一种排序方式,在开发使用中,直接调用即可。排序的方式有很多,其中最快的排序方式为希尔排序。

下面是选择和冒泡两种排序方式的程序:

选择排序:

public class ShuZuDemo {
	public static void main(String[] args) {
		int[] in={34,54,32,56,54};
		int sum=-1;
		//遍历数组
		for(int x=0;x<in.length;x++){
			for(int y=0;y<in.length;y++){
				//元素比较,大的放后面
				if(in[x]<in[y]){
					sum=in[x];
					in[x]=in[y];
					in[y]=sum;
				}
			}
		}
		//遍历数组
		for (int i : in) {
			System.out.println(i);
		}
        }
}
冒泡排序:
public class ShuZuDemo {
	public static void main(String[] args) {
		int[] in={34,54,32,56,54};
		int sum=-1;
		//遍历数组
		for(int x=0;x<in.length-1;x++){
			for(int y=0;y<in.length-1-x;y++){
				//元素比较,大的放后面
				if(in[y]>in[y+1]){
					sum=in[y];
					in[y]=in[y+1];
					in[y+1]=sum;
				}
			}
		}
		//遍历数组
		for (int i : in) {
			System.out.println(i);
		}
        }
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值