一、数组
数组中究竟可以存储哪些类型的数据呢?数组可以存储一切类型的数据
a.基本类型数据
b.引用类型数据
数组的定义:
格式1:数据类型[ ] 数组名;
格式2:数据类型 数组名[ ];
注意: 我们推荐大家使用第一种数组定义的格式,因为它的可读性更好
数组的初始化
1. Java中的数组必须先初始化,然后才能使用。
2. 所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋初值
数组的初始化:
1.动态初始化
初始化时程序猿只指定数组长度,由系统为数组分配初始值。 int[] 数组长度 * 数据元素数据类型
2.静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度。
a.数组的动态初始化
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
int[] arr = new int[3];
b.数组的静态初始化:
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
int[] arr = new int[]{1,2,3};
简化写法:
int[] arr = {1,2,3};
注意:
简化写法只在数组引用变量定义时有效!
二、方法
package com.cskaoyan.method;
/*
学习了方法的定义之后,如何使用方法,完成特定的功能(让方法运行)呢?
此时,我们就需要学习,方法调用了。
方法定义有两种: 有返回值的方法 没有返回值的方法
方法调用:
1. 有返回值的方法调用
a. 接收调用
b. 输出调用
c. 直接调用
2. 没有返回值的方法调用
a. 直接调用
方法调用注意事项:
1.方法不调用不执行
2.方法与方法是平级关系,不能嵌套定义
3.方法定义的时候参数之间用逗号隔开
4.方法调用的时候不用在传递数据类型 不用 add(int a, int b)
5.如果方法有明确的返回值,一定要有return带回一个值
*/
public class Demo1Call {
public static void main(String[] args) {
// 有返回值的方法调用
// 1. 接收调用
int a = 1;
int b = 2;
// 接收调用(通常会使用接收调用)
int result = add(a, b);
// System.out.println(result);
// 2. 输出
// System.out.println(add(a, b));
//3. 直接调用(没有任何意义)
//add(a, b);
// 没有返回值的方法调用
// 直接调用
int c = 10;
print(c);
}
// 两数(int)求和
public static int add(int a, int b) {
//如果方法有明确的返回值,一定要有return带回一个值
// if (a > 0) {
// int result = a + b;
// return result;
// }
int result = a + b;
return result;
}
// 输出方法
public static void print(int a) {
System.out.println(a);
}
}
方法重载
package com.cskaoyan.method;
/*
方法重载的:是方便调用方法
除了两数求和之外,我们还需要三数求和,四数求和...., 对于使用者而言,使用我们定义的方法
必须知道,每个方法具体的功能(记住),才知道要调用的是哪个方法,以及调用,对于使用者来说是不友好的
如何让使用者方便使用呢? 所有的求和方法,定义成相同的名字, 给每个方法对应的参数即可
方法重载(overload)
在同一个类中,允许存在一个以上的同名方法,只要它们的 (参数个数\参数类型不同\参数顺序不同)
a. 参数个数
b. 参数类型
c. 参数顺序(不是指变量名的顺序,而是值参数类型的顺序)
为什么方法重载要满足以上条件? 因为java语言需要区分出这些同名方法
java语言通过什么来区分不同的方法呢? 方法签名 = 方法名 + 方法参数列表
比如 public static int add(int a, int b)的方法签名 add(int,int)
java语言区分同名方法为啥没有考虑方法返回值呢?
因为如果我们使用直接调用,对于有返回值的方法就无法区分了(前提是,只考虑方法返回值的不同)
*/
public class Demo3Overload {
public static void main(String[] args) {
// 重载方法的调用
// 方法1 两整数求和
int a = 10;
int b = 20;
// int r = add(a, b);
// System.out.println(r);
// 方法2 三整数求和
int add = add(10, 20, 30);
System.out.println(add);
// 考虑方法返回值
// 一种有返回值的调用方式
//double d = first(10, 20);
//first(10,0);
}
// 方法1和方法2方法参数个数不同
// 方法1
public static int add(int a, int b) {
System.out.println("add(int a, int b)");
int result = a + b;
return result;
}
// public static int add (int b, int a) {
// int result = a + b;
// return result;
// }
// 方法2
public static int add(int a, int b, int c) {
System.out.println("add(int a, int b, int c)");
return add(a, b) + c;
}
// 方法2和方法3,参数类型不同
// 方法3
public static double add(double a, double b, double c) {
return a + b + c;
}
// 参数顺序不同
public static double add (int a, double b) {
return a + b;
}
public static double add (double a, int b) {
return a + b;
}
// 为啥没有考虑方法返回值
// public static int first(int a, int b) {
// return a + b;
// }
//
// public static double first(int a, int b) {
// return a + b;
// }
}