方法
何谓方法
System.out.println():调用系统类里面的标准输出对象out中的方法,方法叫做println()
分别为 类 对象 方法。
- Java方法是语句的集合,他们在一起执行一个功能
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或者对象中
- 方法在程序中被创建在其他地方被引用
- 设计原则:保持方法的原子性,一个方法只完成一个功能,有利于后期的扩展。
类似于C语言种的函数
方法的重载
方法的重载的规则:
- 方法名称必须相同
- 参数列表必须不同(个数不同 或 类型不同 、参数排列顺序不同等)
如同样一个比大小的方法名,可以写多个,引用时根据参数的不同来选择对应的函数。
如:
public static int max(double num1,double num2)
{…}
public static int max(int num1,int num2)
{…}
public static int max(int num1,int num2,int num3)
{…}
可变参数
方法声明中,在指定参数类型后加省略号…
一个方法中只能指定一个可变参数,他必须是方法的最后一个参数。任何普通的参数必须在它之前声明
如
public static void Max(double… i ) {…}
可将这个i当做数组名来使用
数组
定义方法
- int[ ] nums;
- int nums[ ]; //这种和C语言一样的定义方法最好别用
- int[ ] nums; //声明一个数组
nums = new int[10]; //分配空间,创建一个数组 - int[ ] nums = new int[10];
获取数组的长度:arrays.length 。如nums.length的值就为10。
小结:
- 数组是相同的数据类型的有序集合
- 数组也是对象。数组元素相当于对象的成员变量。
- 数组的长度是不可变的。越界就会报ArrayIndexOutofBounds
内存分析
堆:
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
栈: - 存放基本数据类型(包含这个基本数据类型的具体数值)
- 引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区: - 可以被所有的线程共享
- 包含了所有的class和static变量
初始化
静态初始化:创建 + 赋值
int [ ] a={1,2,3,4,5,6,7,8};
动态初始化: 包含默认初始化
int [ ] b = new int[10];
b[0]=1;
…
数组的使用
- 普通的for循环
- For-Each循环(省去了数组的下标,适合打印输出)
int[ ] a={1,2,3,4};
然后输入a.for回车就会生成
for(int i;a) {
System.out.println(i); //这句话可以吧数组中的元素都输出出来
} - 数组作方法入参
下面这个作返回值的函数就作了入参 - 数组作返回值
如:public static int[ ] reverse(int[ ] a)
{ int[ ] b=new int[a.length];
return b;
}
二维数组
arrays.length指的是有多少行,也就是数组里有多少个一维数组
arrays[i].length指的是有多少列,也就是数组里每个一维数组有多少个元素
Arrays这个类可以对数组进行很多操作
Arrays这个类中的方法都是用static修饰的静态方法,在使用时可以直接使用类名进行调用,而不用使用对象来调用(注意是“不用”,不是“不能”)
如:
输出数组:Arrays.toString(a)
可以用System.out.println(Array.toString(a));直接将数组一一输出
排序:Arrays.sort(a);
比较数组是否相等可以用equals方法
给数组赋值可以通过fill方法
制作稀疏矩阵和还原输出稀疏矩阵
1.先输出稀疏矩阵,可以用两层for-each方法比较简单,第一个的数组的元素是内层的数组名:
输出:
2.根据数组中的非零数字计算有效数字的个数,然后根据个数创造一个三元数组,并将个数加一当做三元组的行数,列数肯定为三个。
3.将数据存入三元组,随便定义一个变量存放数组的行数
4.还原数组
本篇截图来源于狂神说JAVA。