Java方法和数组
Java SE 复习3
何谓方法
System.out.println(),那么它是什么呢?
System是一个类,out是一个对象,println()是一个方法
Java方法是语句的集合,它们在一起执行的一个功能。
方法是解决一类问题的步骤和有序组合
方法包含于类或对象中
方法在程序中被创建,在其他地方被引用
设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的合集。我们设计方法的时候,最好保持方法的原子性,就是一个方法只能完成一个功能,这样利于我们后期的扩展
回顾:方法的命名规则? 小写字母开头及驼峰原理
方法的定义及调用
方法的定义
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含一下语法:
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
-
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
-
返回值类型:方法可能会返回值,returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。这种情况下,returnValue Type 是关键字void。
-
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
-
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。
-
参数列表是指方法的参数类型,顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
-
形式参数:在方法被调用时用于接收外界输入的数据。
-
实参:调用方法时 实际传给方法的数据。
-
方法体:方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名(参数类型 参数名)
{
...
方法体
...
return 返回值;
}
//return 返回是一个值
// void 返回一个语句 也就是一个操作 (无值型)
方法重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法重载的规则:
-
方法名必须一致
-
参数列表必须不一致(参数类型、参数个数、参数排列顺序)
-
方法的返回类型可以相同也可以不同
-
只是返回类型不同不是方法重载
命令行传参
略
可变参数
多个参数补充:
package way;
public class add {
public static void main(String[] args) {
add te = new add();
te.test(1,2,3,4,5);
}
public void test(int ... i){
System.out.println(i);
}
}
递归
递归(经常出现在面试的笔试里)
A方法调用B方法,我们很容易理解!
递归就是:A方法调用A方法,就是自己调用自己
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可以描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包含两个部分:
- 递归头:什么时候不调用自身的方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身的方法。
数组
定义
- 数组是相同类型数据的有序集合。
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每一个数据称作为一个数组元素,每个数组元素可以通过一个下标来访问它们。
格式:
package array;
public class first {
public static void main(String[] args) {
//定义 方式两种 int nums[]; 也是可以的 只是少用
int[] nums; //声明一个数组
nums=new int[4];//创建一个数组
nums[0]=1;//赋值
nums[1]=2;//赋值
nums[2]=3;//赋值
//Array.length 数组长度
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
//写成一行 声明和创建写一块
int[] nums1 = new int[10];//动态初始化,包含默认
System.out.println(nums1);
//直接赋值 声明一块,静态
int[] nums2={1,2};
System.out.println(nums2[1]);
}
//动态初始化 声明+创建空间
int[][] a = nwe int[2][5];
//静态初始化 创建空间+赋值
int[][] a = {{1,2},{3,4},{5,6},{7,8},{9,10}};
}
加深印象: 冒泡排序和转置
package array;
import java.lang.reflect.Array;
import java.util.Arrays;
public class caozuo {
public static int[] reverse(int[] param){
//法一 创建新数组
// int[] b=new int[param.length];
// for (int i=0;i<b.length;i++)
// b[i]=param[b.length-i-1];
// return b;
//法二 不创建数组 交换
for (int i=0;i<param.length/2;i++){
int temp;
temp=param[i];
param[i]=param[param.length-i-1];
param[param.length-i-1]=temp;
}
return param;
}
public static void sortByBubble(int[] param){
for (int i=0; i<param.length;i++) //排序几轮
for (int j=0;j<param.length-1-i;j++) //比较的次数
if (param[j]>=param[j+1]){
int t;
t=param[j];
param[j]=param[j+1];
param[j+1]=t;
}
}
public static void ARRAY(int[] a){
//工具类排序
Arrays.sort(a);
// Arrays.fill(a,0);赋值
}
public static void main(String[] args) {
int[] a={1,5,3,4,2,9,7};
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
System.out.println("\n转置后的数组");
int[] b=reverse(a);
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+"\t");
}
System.out.println("\n排序后的数组");
int c[]=b;
sortByBubble(b);
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]+"\t");
}
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]+"\t");
}
}
}
稀疏数组

内存分析
栈 基本对象的地址 引用对象的变量 被线程共享
堆 存放new 对象和数组
方法区 class 和static 被线程共享

1. 方法
2. 数组
3. 排序
浙公网安备 33010602011771号