JavaSE笔记_day04_方法、数组

128 阅读3分钟

一.方法

1.格式

修饰符 返回值类型 方法名(参数){
    方法体;
}
public class Demo01//类名
{
    public static void main(){//主方法名

    }
    public static int sumint(int a , int b){//方法名			
    
    }		
}

2.方法的调用

3.java中内存划分

  • 栈(虚拟机栈stack):存放的都是方法中的局部变量。 方法在栈中运行,局部变量特点:有作用域,一旦超出了作用域,立刻从栈内存中消失。 
  • 堆(Heap):new出来的东西,都在堆当中。 堆内存特点:堆里面的东西都有地址值。堆内存中的数据都有默认值 
  • 方法区(Method Area):存储class相关信息,包含方法的信息。 
  • 本地方法栈(Native Method Stack):与操作系统相关 
  • 寄存器(pc Register):与CPU相关


4.方法定义时的注意事项

  • 方法需要写在类当中。 
  • main方法是程序的唯一执行入口,方法之间无先后顺序。 
  • 方法不可嵌套定义但可嵌套调用。

5.方法重载

  • 同一个类下,对于功能类似的多个方法,但参数列表不同( 1.参数个数不同、2.参数数据类型不同、3.参数数据类型排序不同) ===> 可以将方法名统一
  • 与参数名称无关、与方法的返回值类型无关、与有无public、static无关

public static int sum(int a , int b){
    System.out.println("有两个参数的方法执行!");
    return a+b;
}
public static int sum(int a , int b ,int c){
    System.out.println("有三个参数的方法执行!");
    return a+b+c;
}
public static int sum(double a , double b ){
    System.out.println("有四个参数的方法执行!");
    return (int)(a+b);
}

二.一维数组

1.数组的定义

  • 动态定义(指定长度)

//数据类型[] 数组名 = new 数据类型[数组长度];//默认值0、0.0、null、\u0000、false
int[] a = new int[3]; 
System.out.println(a);//地址值

  • 静态定义(指定内容、自动推算长度)

数据类型[] 数组名称 = {元素1,元素2,....};
int[] c = {3,4,5,6};

2.数组在内存中的地址

  • 引用数据类型,每次new对象,都是在内存中开辟一个新的内存地址空间,不同的地址空间,运行独立。

3.数组中的异常

  • 数组下标越界
  • 空指针异常

int[] arr = null; //null为所有引用数据类型的默认值,没有指向。
/*System.out.println(arr[1]);空指针异常*/

4.例题

  • 1.求数组中第一个出现该元素的数组下标
  • public class List1 {
         public static void main(String[] args) {    int[] a = {2,45,28,23,5,77,3,4};    System.out.println(getArrayIndex(a,3));
    
    }public static int getArrayIndex(int[] arr ,int b){    if(arr!=null && arr.length!=0){        for (int i = 0; i < arr.length; i++) {            if(arr[i] == b)                    return i;	}	          return -1;
    	  }else{
    		System.out.println("数组不能为空或数组长度不能为0");
    		return -1;
    	  }
    }}

  • 2.数组元素反转
  • public class List2 {
    	public static void main(String[] args) {
    		int[] a = {1,2,3,4,5,6,7};
    		returnArray(a);
    		for (int i = 0; i < a.length; i++) {
    			System.out.print(a[i]+" ");
    		}
    	}
    	public static void returnArray(int[] arr) {
    		if(arr!=null && arr.length!=0){
    			for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
    				int temp = arr[i];
    				arr[i] = arr[j];
    				arr[j] = temp;
    			}
    		} else{
    			System.out.println("数组长度为0或数组为空");
    		}
    	}
    }

三.二维数组

1.二维数组的定义

  • 动态定义(指定长度)

数据类型[][] 数组名 = new 数据类型[行][列];//行数不能为空
int[][] arr1 = new int[3][5];//arr1.length  3

  • 静态定义(指定内容、自动推算长度)

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

2.二维数组的遍历

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
    System.out.print (arr[i][j] + " ");
    }
}