一、方法
1、方法的概念
方法声明的格式:
修饰符 返回值类型 方法名称(参数类型 参数名称1,参数类型 参数名称2,...){
方法体
return 返回值;
}
修饰符:定义了该方法的访问类型。方法的修饰符比较多,一般为public和static两种类型
返回值类型 :用于限定方法返回值的数据类型。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:用于限定调用方法时 传入参数的数据类型。
参数名:是一个变量,用于接收调用方法时传入的数据。“参数类型 参数名称1,参数类型 参数名称2,…”被称为参数列表,用于描述方法被调用时需要接收的数据。参数的个数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
返回值:被return语句返回的值,该值会返回给调用者。
例子
public class Example1{
public static void main(String[] args){
int area=getArea(4,5);//调用getArea方法
System.out.println("矩形的面积为:"+area);
}
//下面定义方法getArea来求矩形面积,方法接收两个参数,长x和宽y
public static int getArea(int x,int y){
int temp=x*y;//使用变量temp记住运算结果
return temp;//将变量temp返回
}
}
运算结果为:
矩形的面积为: 20
2、方法的重载
所谓方法重载,就是在一个程序中可以定义多个同名方法,但要求每个方法具有不同的参数类型和参数个数。
一个例子来帮助理解
public class Example2{
public static void main(String[] args){
//下面调用方法
int sum1=add(2,3);
int sum2=add(2,3,4);
double sum3=add(0.5,1.5);
//打印
System.out.println("sum1"+sum1);
System.out.println("sum2"+sum2);
System.out.println("sum3"+sum3);
}
//下面定义方法实现两个数相加
public static int add(int x,int y){
return x+y;
}
//下面定义方法实现三个数相加
public static int add(int x,int y,int z){
return x+y+z;
}
//下面定义方法实现两个小数相加
public static double add(double x,double y,){
return x+y;
}
}
运算结果为:
sum1=5
sum2=9
sum3=4
定义多个同名的add( ) 方法,但每个方法具有不同的参数类型和参数个数,实现了方法的重载。在main( ) 方法中调用add( ) 方法时,通过传入参数的不同可以确定调用哪个重载方法,如add(2,3)调用的是两个整数求和的方法。
注意,方法的重载和返回值类型无关。
但必须满足两个条件:
第一,方法同名,
第二、每个方法具有不同的参数类型和参数个数
二、数组
数组是指一组数据的集合,数组中的每个数据被称为元素。数组可以存放任何类型的数据,但同一个数组中存放的数据类型必须一致。数组一旦被创建,它的大小就是不可改变的。数组是在内存中存储相同数据类型的连续的空间
数组名代表的是连续空间的首地址,通过首地址可以依次访问数组所有元素。
元素在数组中的排序叫做下标从零开始。
1、定义
定义:
int []x=new int[N];
或
int []x;
x=new int [];
上述语句定义了一个int类型数组,[ ]中的数字10表示数组的长度,即可以存放10个元素,相当于在内存中定义了10个int类型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第10个变量的名称为x[9],这些变量的初始值都是0。
每个数组元素都有一个索引(也称角标),通过这个索引可以访问数组中的元素,例如要访问第1个元素,则可以通过x[0]的形式。
需要注意的是,数组的索引最小为0,最大为“数组的长度一1”,获取数组长度可以通过length属性,在程序中通过“数组名.length"即可获取数组长度
数组的初始化:
int[ ] arr={1,2,3,4,5,6,7};
int [ ] arr1=new int[ ]{1,2,3,4,5,6,7};
new int[ ]的[ ]一定不能放内存大小
2、常见操作
数组遍历
public class Example3{
public static void main(String[] args){
int[ ] arr=new int[]={1,2,3,4,5,6,7};//定义数组
//下面通过for循环遍历数组元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
数组最值
public class Example4{
public static void main(String[] args){
int[] arr={4,5,2,8,1,5,3,9};
int max=arr[0]//定义变量,保存数组中0索引的元素
//遍历数组,取出每个元素
for (int a=0;a<arr.length;a++){
//遍历到的元素和变量max比较
if (arr[a]>max){
max=arr[a];
}
}
System.out.println("max="+max);
}
}
数组排序
public class Example5{
public static void main(String[] args){
int[] arr={4,5,2,8,1,5,3,9};
//下面实现冒泡排序
for (int i = 0; i < arr.length-1; i++) {
for(int j = 0;j < arr.length-x-1;j++) {
if(arr[j]>arr[j+1]) {// 比较相邻的元素
int temp = arr[j];//左边元素大于右边元素,则交换位
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);// 这里输出排序完成后数组的顺序
}
}
}
3、Arrays工具类
Arrays是一个专门用于操作数组的工具类,该类位于java.util包中。Arrays工具类提供了大量的静态方法。
对指定的int数列按数组升序进行排序
static void sort(int[] a)
使用二分法搜索指定数列,以获得指定对象
static int binarySearch(Object[] a,Object key)
将指定数列的指定范围复制到一个新数列
static int[] copyOfRange(int[] original,int from,int to)
将指定的Object引用分配给指定的Object数组的每个元素
static void fill(Object[] a,Object val)
返回指定数组内容的字符串表示形式
static String toString(int[] arr)
判断数组是否相等
static boolean equals(int[] arr1, int[] arr2);
应用举例:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example6 {
public static void main(String[] args) {
//将数组转换为字符串
int[] intArray1= {1,2,3,4};
String string = Arrays.toString(intArray1);
System.out.println(string);
//对数组排序
int[] intArray2= {5,2,4,7};
Arrays.sort(intArray2);
System.out.println(Arrays.toString(intArray2));
//判断数组是否相等
int[] intArray3= {7,5,2,7};
int[] intArray4= {5,9,2,7};
boolean isEquals = Arrays.equals(intArray3, intArray4);
System.out.println(isEquals);
//利用二分法查找元素
int[] intArray5= {5,9,2,7};
Arrays.sort(intArray5);
int index = Arrays.binarySearch(intArray5, 9);
System.out.println("index="+index);
//将指定数列的指定范围复制到一个新数列
int[] intArray6= {0,1,2,3,4,5,6};
int[] intArray7 = Arrays.copyOfRange(intArray6, 0, 5);
System.out.println(Arrays.toString(intArray7));
}
}