数组
数组定义:所谓数组,是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种数据形式。这些按一定顺序排列的同类型数据的集合称为数组。
而数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引从0开始,步长是1,有点像(只是有点像!=是)Excel表格的行号,逐行递增。
数组的初始化:静态初始化、动态初始化
(1)静态初始化:在声明时指定数组内容
数组的静态初始化操作:
特点:由我们自己来为每一个数组元素设置初始化值,而数组的长度由系统(JVM)决定。
语法:
数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,…}。
举例:
int[] nums = new int[]{1,3,5,7,9};简单写法,必须声明之后,立刻初始化,不能先声明后初始化。
(2)动态初始化:先声明再赋值。
数组的动态初始化操作:
特点:由我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值有系统决定。
语法:
数组元素类型[] 数组名 = new 数组元素类型[ length ];
比如:
int[] ages = new int[100];
int[] nums = new int[5]{1,3,5,7,9}; 写法是错误的,不能同时使用静态初始化和动态初始化。
数组默认值
int[]->0 , double[]->0.0 , boolean[]->false , char[]->编码为0的控制字符
数据的基本操作:
获取元素: 元素类型 变量 = 数组名[index];
设置元素: 数组名[index] = 值;
遍历数组元素: 建议使用for循环,事先知道循环的次数.
数组长度: int len = 数组名.length; length是属性,不是方法.
索引范围: 从0开始,逐一递增. [0,数组名.length-1]
一维数组
一维数组: 就是常说的数组,数组中的每一个元素都是一个值。
数组堆与栈
二维数组
Java中的二维数组为:数组中的数组
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] num= {{1,2},{3,4}};
System.out.println("num[数组]="+num[0][0]+"\t"+num[0][1]);
}
结果:num[数组]=1 2
数组的传递属于引用数据类型的分传递,传递的是堆内存地址的使用权,一个数组可以有多个名称指向同一个堆内存空间,每一个名称都可以修改堆内存的内容。
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num= {1,2,3};
fun(num);
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+"、");
}
}
public static void fun(int[] X) {
X[0]=9;
}
//结果:9、2、3、
方法
定义:方法(Method),函数(function),其实就指一个特定的功能操作。程序中完成独立功能,可重复使用的一段代码的集合。
方法最大的好处:功能的复用。
格式:
public static 返回值类型 方法名称(类型 参数1,类型 参数2,…){
程序语句;
[return 表达式];
}
方法的术语:
方法签名:方法签名 = 方法名称 + 方法参数列表。在同一个类中,方法签名是唯一的,否则编译报错。
方法名称:遵循标识符的规范,使用动词表示,首字母小写,若是多个单词组成,使用驼峰表示法,以后的每一个单词首字母都大写,如:myName。
形式参数:方法圆括号中的变量,仅仅只是占位而已,参数的名称其实无所谓,形式参数可以有多个。
实际参数:调用者在调用某一个具体方法的时候,实际传递的参数值。
参数列表:参数列表 = 参数的类型 + 参数的个数 + 参数的顺序。
被main方法直接调用的方法许需要在方法返回值类型前面添加public static。
如果方法无返回值,则在返回值类型处明确写上void。
方法的重载
定义:方法名称相同,但参数的类型、参数的个数、参数的位置不一样。通过传递参数的个数、类型、位置的不同可以完成不同功能调用。
作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同。
public static int add(int x,int y) {
return x+y;
}
public static float add(float x,float y) {
return x+y;
}
错误的方法重载
public static int add(int x,int y) {
return x+y;
}
public static float add(int x,int y) {
return x+y;
}
方法的接受参数类型和个数完全一样,只是方法的返回值类型不一样。甚至都不可能编译通过。
方法重载判断原则: “两同一不同”
两同:同类中,方法名相同;
一不同:方法参数列表不同(参数类型、参数个数、参数顺序);
只要参数类型,参数个数,参数顺序有一个不同,参数列表就不同.
注意:方法重载和方法的返回值类型无关,只是一般要求返回值类型一致。
参数列表和参数的名称没关系,方法的重载和形参没关系。