javase:数组和方法的学习
java方法
1.方法的定义调用
方法是解决问题的语句集合,放在一起执行一个功能。
package com.javase.method;
/**
* @author panglili
* @create 2022-07-13-16:22
*/
public class NewMethod {
public static void main(String[] args) {
//给方法传参并且调用
int add = add(1, 3);
System.out.println(add);
}
//加法方法的定义
public static int add(int a,int b){
return a+b;
}
}
2.方法重载
在一个类中可以定义多个方法名相同,但是参数个数或者参数类型不同的叫做方法重载。
package com.javase.method;
/**
* @author panglili
* @create 2022-07-13-16:22
*/
public class NewMethod {
public static void main(String[] args) {
//给方法传参并且调用
int add = add(1, 3);
float add1 = add(1.0F, 2.3F);
int add2 = add(1, 2, 3);
System.out.println(add);
System.out.println(add1);
System.out.println(add2);
}
//加法方法的定义
public static int add(int a,int b){
return a+b;
}
//方法重载参数类型不同
public static float add(float a,float b){
return a+b;
}
//方法重载参数个数
public static int add(int a,int b,int c){
return a+b+c;
}
}
3.可变参数
java1.5后支持给一个方法传递同类型的可变参数。
在方法声明的时候在指定类型的后面加上一个省略号。
一个方法只能有一个可变参数,并且要声明在最后。
package com.javase.method;
import java.util.Scanner;
/**
* @author panglili
* @create 2022-07-13-16:45
*/
public class ChangeArgs {
public static void main(String[] args) {
ChangeArgs changeArgs = new ChangeArgs();
changeArgs.test(1,2,3,4);
changeArgs.test(1,2,3);
}
public void test(int...i){
//底层其实是一个数组,因此要遍历
for(int j=0;j<i.length;j++){
System.out.println(i[j]);
}
}
}
4.递归
在这个方法中调用方法本身。
递归头:方法结束循环的执行语句,否则会陷入死循环。
递归体:什么时候调用自身的方法。
package com.javase.method;
/**
* @author panglili
* @create 2022-07-13-16:59
*/
public class RecurtionMethod {
public static void main(String[] args) {
//5的阶乘
System.out.println(mul(5));
}
public static int mul(int a){
if(a==1){
return 1;
}else
return a*mul(a-1);
}
}
练习:控制写一个简易计算器
package com.javase.method;
import java.util.Scanner;
/**
* @author panglili
* @create 2022-07-13-17:18
*/
public class Calculator {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(1==1){
System.out.println("---简易计算器功能---");
System.out.println("****1.加法*********");
System.out.println("****2.减法*********");
System.out.println("****3.乘法*********");
System.out.println("****4.除法*********");
System.out.println("****5.退出计算*********");
System.out.println("请选择:");
int i = scan.nextInt();
switch (i){
case 1:
System.out.println("输入两个数,以空格分割:");
int add = add(scan.nextInt(), scan.nextInt());
System.out.println(add);
break;
case 2:
System.out.println("输入两个数,以空格分割:");
int sub = sub(scan.nextInt(), scan.nextInt());
System.out.println(sub);
break;
case 3:
System.out.println("输入两个数,以空格分割:");
int mul = mul(scan.nextInt(), scan.nextInt());
System.out.println(mul);
break;
case 4:
System.out.println("输入两个数,以空格分割:");
float div = div(scan.nextInt(), scan.nextInt());
System.out.println(div);
break;
case 5:
exit();
}
}
}
public static int add(int a,int b){
return a+b;
}
public static int sub(int a,int b){
return a-b;
}
public static int mul(int a,int b){
return a*b;
}
public static float div(int a,int b){
if(b==0){
System.out.println("输入有误,不能为0");
return 0;
}else{
return a/b;
}
}
public static void exit(){
System.exit(0);
}
}
java数组
1.数组定义创建
相同类型的数据有序集合。
数组的大小是固定的,一旦创建就不可以改变了。
数组的类型必须相同。
package com.javase.ArraysUse;
/**
* @author panglili
* @create 2022-07-13-17:49
*/
public class ArraysCreate {
public static void main(String[] args) {
//定义方法
int []nums;
int nums2[];
//创建,要定义大小
nums = new int[10];
//赋值
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
//取值
System.out.println(nums[3]);
}
}
2.数组使用
-
for-each循环
-
数组做方法入参
-
数组做返回值
package com.javase.ArraysUse; /** * @author panglili * @create 2022-07-13-18:05 */ public class ArraysUse { public static void main(String[] args) { //for-each循环 int [] array={1,2,3,4,5,5}; for(int i: array){ System.out.println(i); } //数组做方法入参 arrays(array); //数组做返回值 int[] reverseArrays = reverseArrays(array); for(int i:reverseArrays){ System.out.println(i); } } public static void arrays(int [] array){ for(int i=0;i<array.length;i++){ System.out.println(array[i]); } } public static int[] reverseArrays(int [] array){ int [] reverses = new int[array.length]; for(int i=0,j=array.length-1;i<array.length;i++,j--){ reverses[j]=array[i]; } return reverses; } }
3.多维数组
多维数组就是数组的数组,一个数组的元素还是数组,它的元素还是数组……
package com.javase.ArraysUse;
/**
* @author panglili
* @create 2022-07-13-18:22
*/
public class MulArrays {
public static void main(String[] args) {
//二维数组的定义
int [][] arr={{1,2},{2,3}};
//三维数组的定义
int [][][]arr1={{{1},{2,3}},{{2,3,4},{123}}};
//多维……
//遍历
System.out.println(arr[0][1]);
System.out.println(arr1[0][1][1]);
}
}
将多维数组看做是它的元素是数组就可以!
4.Arrays类
一个工具类,提供了许多操作数组的方法,可以直接调用。
package com.javase.ArraysUse;
import java.util.Arrays;
/**
* @author panglili
* @create 2022-07-13-18:34
*/
public class ArraysArr {
public static void main(String[] args) {
int [] a={1,5,2,4,88,99,23};
//打印所有元素
System.out.println(Arrays.toString(a));
//排序
Arrays.sort(a);
System.out.println(Arrays.toString(a));
//填充
Arrays.fill(a,0);
System.out.println(Arrays.toString(a));
}
}
5.冒泡排序
package com.javase.ArraysUse;
import java.util.Arrays;
/**
* @author panglili
* @create 2022-07-13-18:41
*/
public class BubbleSort {
public static void main(String[] args) {
int []nums={99,1,5,3,7,21,89,33} ;
int[] sort = bubbleSort(nums);
System.out.println(Arrays.toString(sort));
}
public static int[] bubbleSort(int[] nums){
for(int i=0;i<nums.length-1;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]>nums[j]){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
return nums;
}
}
6.稀疏数组
当数组中大部分元素为0时,把有意义的数值行列保存起来,压缩空间。