方法
- 方法是语句的集合,他们在一起执行一个功能
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建 在其他地方被引用
- 设计方法的原则
- 方法本意是功能块,就是实现某个功能的语句块的集合.设计方法的时候,最好保持方法的原子性 一个方法只完成1个功能,有利于后期拓展
- 方法包括一个方法头和一个方法体
- 修饰符 可选,告诉编译器如何调用该方法 定义了该方法访问类型 public static
- 返回值类型 方法可能会返回值 return Valuetype 如无返回值 关键词 为void
- 方法名 是方法的实际名称 方法名和参数表共同构成方法签名
- 参数类型 参数像是一个占位符 当方法被调用时,传递值给参数 这个值被称为实参或变量 参数列表是指方法的参数类型 顺序和参数的个数 参数是可选的,方法可以不包含任何参数
- 方法体 包含具体的语句,定义该方法的功能
- Java都是值引用
方法重载
- 在一个类中,有相同的函数名称,但形参不同的函数
- 方法重载规则
- 方法名称必须相同
- 参数列表必须不同(个数不同 类型不同 参数排列顺序不同)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以称为方法的重载
//在命令行中传递参数
javac Demo09
java com.wu.scanner.Deom09 hello world
//由于引入了包,所以必须将包名写全,否则报错
可变参数
- JDK1.5以后,Java支持传递同类型的可变参数给一个方法
- 在方法声明中,在指定参数类型后加一个省略号(…)
- 一个方法中只能声明一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明
package com.wu.scanner;
public class Demo10 {
public static void main(String[] args) {
Demo10 demo10 = new Demo10();
demo10.theMax(102,32,80.4,30.4,104,9);
demo10.theMax(90.44,90,34,34,34);
}
public void theMax(double ... i){
if ( i.length ==0){
System.out.println("no arguments");
return ;
}
double maxValue=0;
for( int j=0; j < i.length; j++){
if( i[j] > maxValue){
maxValue = i[j];
}
}
System.out.println("the max value is:" + maxValue);
}
}
递归
- 自己调用自己
- 包括两部分
- 递归头: 什么时候不调用自身方法
- 递归体: 什么时候需要调用自身方法
public class Demo11 {
public static void main(String[] args) {
int i =recursion(5);
System.out.println(i);
}
public static int recursion( int n){
if(n==1){
return 1;
}else {
return n * recursion(n -1);
}
}
}
数组
-
数组是相同类型数据的有序集合
-
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
-
其中,每一个数据称作一个数组元素 每个数组元素可以通过一个下标访问他们
-
声明数组变量
-
dataType[] arrayRefVar; //首选
-
dataType arrayRefVar[];
-
-
使用new操作符来创建数组
- dataType[] arrayReVar = new dataType[ arraySize]
-
静态初始化 : 创建 + 赋值 int[] a = {1,2,3,4}
-
动态初始化: 包含默认初始化 int[] a =new int[10]
-
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量相同的方式被隐式初始化
int[] nums = new int[10];
-
内存分析
- 堆 存放new的对象和数组 可以被所有的线程共享 不会存放别的对象引用
- 栈 存放基本变量类型(包含这个基本类型的具体数量) 引用对象的变量
- 方法区 可以被所有的线程贡献 包含了所有class和static变量
数组特征
- 其长度是确定的,数组一旦被创建 它的大小就是不可以改变的
- 其元素必须是相同类型 不允许出现混合类型
- 数组中的元素可以是任何数据类型 包括基本类型和引用类型
- 数组变量属于引用类型 数组也可以看成是对象, 数组中的每个元素相当于该对象的成员变量. 数组本身就是对象,Java中对象是在堆中,因此数组无论保存原始类型还是其他对象雷响,数组对象本身是在堆中
多维数组
int[][] arrays = {{1,2},{3,4},{5,6}};
for(int i =0 ; i < arrays.length; i++){
for(int j = 0 ; j < arrays[i].length; j++){
System.out.println(arrays[i][j]);
}
}
- 可以看成数组的数组
Arrays 类
-
数组的工具类 java.uti.Arrays
-
Arrays类中方法都是使用static修饰的静态方法 在使用的时候可以直接使用类名进行调用 而不用使用对象调用
-
常用方法:
- 给数组赋值 : fill方法 左闭右开
- 对数组排序 : sort方法 升序
- 比较数组 : equals方法
- 查找数组元素 : binarySearch方法 二分法