-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
方法
概述:方法就是完成特定功能的代码块。相当于其他语言中的函数。
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
函数体;
return 返回值;
方法重载}
写方法时,要有两个明确:
返回值类型(明确功能结果的数据类型)
参数列表(明确有几个参数,以及参数的类型)
有明确返回值的方法调用:(三种)
1:单独调用;(没有意义)
2:输出调用;
3:赋值调用;(常用方式)
方法使用中的注意事项:
方法不调用不执行;
方法与方法是平级关系,不能嵌套调用;
方法在调用的时候,不用再传递数据类型;
如果方法有明确的返回值,一定要有return带回一个值;
没有明确返回值的方法调用:
返回值类型为void的方法只能单独调用。
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
在调用时,虚拟机通过参数列表的不同来区分同名方法
数组
概念:数组是存储同一种数据类型多个元素的集合。
数组既可以存储基本数据类型,也可以存储引用数据类型。
定义格式:
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
数组的初始化方式Java中的数组必须先初始化,然后才可以使用。
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:
数据类型[] 数组名 = new 数据类型[数组长度];
Java 程序在运行时,需要在内存中的分配空间。而空间有不同的区域划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。栈:存储局部变量
堆:存储new出来的东西
方法区 (面向对象部分讲)
本地方法区 (和系统相关)
寄存器 (给CPU使用)
栈内存中的数据用完就释放,而堆内存中的数据是new出来的,它有如下特点:
A:每一个new出来的东西都有地址值;
B:每个变量都有默认值;
byte,short,int,long默认值是0
float,double默认值是0.0
char默认值是'\u0000'
boolean默认值是false
引用类型默认值是null
C:数据使用完毕就变成了垃圾,它会在垃圾回收器空闲的时候被回收。
数组操作中常见的问题格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
简化写法:数据类型[] 数组名 ={元素1,元素2,...};
ArrayIndexOutOfBoundsException:数组索引越界异常
出现原因:数组索引为负或大于等于数组大小。
nullPointerException:空指针异常
出现原因:数组已经不再指向堆内存,而程序中数组名还在访问元素。
二维数组
概述:二维数组是一个元素为一维数组的数组。
格式1:
数据类型[][] 变量名 = new 数据类型[m][n];
其中m表示这个二维数组有多少个一维数组,n表示每一个一维数组的元素个数。
以下格式也表示二维数组,但是一般不使用:
数据类型 变量名 [][] = new 数据类型[m][n];
数据类型 []变量名[] = new 数据类型[m][n];
格式2:
数据类型[][] 变量名 = new 数据类型[m][];
格式2中没有直接给出每一个一维数组的元素个数,可以在后续动态给出。
例如:
int[][] arr = new int[2][];
arr[0] = new int[3];
arr[1] = new int[2];
格式3:
数据类型[][] 变量名 = new 数据类型[][]{{元素1,元素2,…},{元素1,元素2,…},{元素1,元素2,…}};
简化版格式:数据类型[][] 变量名 = {{元素1,元素2,…},{元素1,元素2,…},{元素1,元素2,…}};
二维数组的遍历:
//二维数组的遍历 public class ArrayDemo { public static void main(String[] args) { int[][] arr = {{1,2,3},{4,5},{6}}; printArray(arr); } public static void printArray(int[][] arr) { for(int x = 0;x<arr.length;x++) { for(int y = 0;y<arr[x].length;y++) { System.out.print(arr[x][y]+" "); } System.out.println(); } } }