方法

方法:
注意:
1.方法不调用不执行
2.方法定义在类中方法外,方法不能嵌套

有返回值类型:
public class Method02{ public static void main(String[] args){ //调用getPI();//赋值调用double d=getPI();System.out.println(d);//输出调用System.out.println(getPI());System.out.println(getSum(8,5));}//定义一个方法,返回一个pi的值//返回值:需要 double     参数: 没有参数public static double getPI(){System.out.println("这是一个有返回值,没有参数的方法");return 3.1415926;}//求2个整数的和//返回值:有 int       参数:2个 int a,int bpublic static int getSum(int a,int b){System.out.println("这是一个有返回值,有参数的方法");return a+b;}
}

无返回值类型:

public class Method03{
public static void main(String[] args){ getSum(1,100);
}
public static void print(){for(int i=1;i<=9;i++){for(int j=1;j<=i;j++){System.out.print(j+"*"+i+"="+i*j+"\t");}System.out.println();}
}
public static void getSum(int min,int max){if(min>max){System.out.println("第一个参数不能>第二个参数");return;}int sum=0;for(int i=min;i<=max;i++){sum+=i;}System.out.println("sum="+sum);}
}

return:
1.有返回值类型方法中: 1)提前结束方法 2)带出返回值
1.没有返回值类型的方法中: 1)提前结束方法
兼容类型问题:
1.实参<=形参的数据类型
2.接收返回值变量的类型 >= 返回值类型 >= return后数据的类型

方法的重载

在同一个类中,多个方法,方法名相同,参数列表不同(方法签名不同)

参数列表不同:
1.参数个数
2.参数类型不同
3.当类型不同的时候,顺序不同也叫参数列表不同
重载方法如何调用:
根据参数进行匹配不同的方法,只看调用时候的参数列表

方法是一个类中封装的一种体现
方法的重载就是一个类中多态的一种体现

*方法的重载和修饰符有无关
*方法的重载有没有返回值类型无关
*方法的重载和返回值类型无关
*方法的重载和参数的名字无关
*方法的重载只和方法名和参数列表有关

public class OverLoad06{
public static void main(String[] args){//调用getSum(1.1,1);getSum(3,4,5);
}
//重载方法实现求和
public static String getSum(int a,int b){System.out.println("2个int类型参数的方法");System.out.println(a+b);return "";
}public static int getSum(int a,int b){System.out.println("2个int类型参数的方法");System.out.println(a+b);return -1;
}public static void getSum(int a,int b,int c){System.out.println("3个int类型参数的方法");System.out.println(a+b+c);
}public static void getSum(double a,double b,double c){System.out.println("3个double类型参数的方法");System.out.println(a+b+c);
}public static void getSum(double a,int b){System.out.println("1个double1个int类型参数的方法");System.out.println(a+b);
}
public static void getSum(int b,double a){System.out.println("1个int1个double类型参数的方法");System.out.println(a+b);}
}

方法的递归

方法中自己调用自己
不建议使用递归:可能造成内存溢出等情况,建议使用循环
public class Recursion07{
public static void main(String[] args){
System.out.println(recursion(2));
}

//实现阶乘: 5! = 5*4*3*2*1
/*1.方法的作用: 求某个数的阶乘 2.返回值: int3.参数: int i =5临界条件: i=1 1的阶乘就是1返回值: 阶乘的结果,如果参数是<0的值,返回-1
*/
public static int recursion(int i){if(i<=0){return -1;}if(i==1){return 1;}return i*recursion(i-1);
}

}

数组

[] 相同类型数据的有序集合
变量: 存储单个数据
数组: 存储多个数据

  • 数组特点:

    1.数组是一个引用数据类型
    2.数组是个容器,长度一旦确定不可改变
    3.存储的所有数据类型要求一致
    4.有序,下标|索引 从0开始

  • 数组的声明:

    数据类型[] 数组名; —推荐
    数据类型 数组名[]; —不推荐
    数据类型:基本|引用
    规定存放的所有数据的数据类型
    数组名:标识符

  • 数组的初始化:

    动态初始化: 先创建数组,但是不赋值,后续根据需求进行赋值
    数据类型[] 数组名 = new 数据类型[长度];
    存在默认值:
    整数 0
    小数 0.0
    布尔: false
    字符: ’ ’
    引用数据类型:null

    静态初始化:创建的同时就要赋值
    数据类型[] 数组名 = new 数据类型[]{值1,值2,值3…};
    数据类型[] 数组名 ={值1,值2,值3…}; 推荐: 编写简单

    操作数组中的数据:
    数组名[下标]

    数组的长度: length
    数组名.length

    数组中的第一个数据的索引 0 ,最后一个数据的索引 数组名.length-1

  • 数组的遍历:

    以此拿出数组中的每一个数据
    1.普通for循环
    2.增强for循环|foreach
    for( 数据类型 变量名: 数组名|容器名){

    }
    数据类型:数组中每一个数据的数据类型
    变量名:变量代表数组中的每一个数据,从第一个开始拿

     public class Array08{public static void main(String[] args){//声明int[] arr1;//动态初始化String arr2[] = new String[5];boolean[] arr3 = new boolean[3];//给数组中的每一个位置赋值arr3[0]=true;arr3[1]=false;arr3[2]=true;//静态初始化char[] arr4 = new char[]{'1','2','3','4','5'};double[] arr5={1.1,2.2,3.3,4.4};//获取数组中的数据System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);System.out.println(arr2[3]);System.out.println(arr2[4]);System.out.println(arr3[0]);System.out.println(arr3[1]);System.out.println(arr3[2]);System.out.println(arr4[0]);System.out.println(arr4[1]);System.out.println(arr4[2]);System.out.println(arr4[3]);System.out.println(arr4[4]);System.out.println(arr4.length); //5System.out.println(arr4[arr4.length-1]);System.out.println(arr5[0]);System.out.println(arr5[1]);System.out.println(arr5[2]);System.out.println(arr5[3]);//arr4变量代表一个新的数组对象,不是原来的那一个arr4=new char[]{'a','b'};//arr5={4.4,5.5};System.out.println(arr4[0]);System.out.println(arr4[1]);System.out.println(arr4.length);  //2//普通for循环 变量i-->数组的索引for( int i=0; i<=arr5.length-1; i++){System.out.println(arr5[i]);}//增强forfor( double d: arr5){System.out.println(d);}}}
    

测试数组中常见的异常:
1.数组索引越界异常:ArrayIndexOutOfBoundsException
如果使用了不存在的索引,会出现这个异常
2.空指针异常: NullPointerException
没有真的指向数组对象,而指向的null

二维数组

数组中定义数组,第二维数组是第一维数组的每一个数据

定义:
动态:
数据类型[][] 数组名 = new 数据类型[外层一维的长度][内层二维长度]; //一维二维同时创建
数据类型 数组名[][] = new 数据类型[外层一维的长度][];
静态:
数据类型[] 数组名[] = new 数据类型[][]{{1,2,3},{4,5}…};
数据类型[] 数组名[] ={{1,2,3},{4,5}…};

二维数组的使用方式:
数组名[一维][二维]

遍历:
循环嵌套
普通循环和增强for相互嵌套

public class ArrayDemo02{public static void main(String[] args){//动态初始化int[][] arr1=new int[2][3];//赋值arr1[0][0]=1;arr1[0][1]=2;arr1[0][2]=3;arr1[1][0]=4;arr1[1][1]=5;arr1[1][2]=6;//获取值System.out.println(arr1[0][0]);System.out.println(arr1[0][1]);System.out.println(arr1[0][2]);System.out.println(arr1[1][0]);System.out.println(arr1[1][1]);System.out.println(arr1[1][2]);double arr2[][] = new double[3][];arr2[0]= new double[2];arr2[0][0] = 1;arr2[0][1] = 2;arr2[1]=new double[]{3,4,5,6,7};//arr2[1]={1.1,2.2,3.3};System.out.println(arr2[0][0]);System.out.println(arr2[0][1]);System.out.println(arr2[1][0]);System.out.println(arr2[1][1]);System.out.println(arr2[1][2]);//System.out.println(arr2[1][3]);//System.out.println(arr2[1][4]);int[] arr3[] = new int[][]{{1,2,3},{4,5}}; System.out.println(arr3[0][0]);System.out.println(arr3[0][1]);System.out.println(arr3[0][2]);System.out.println(arr3[1][0]);System.out.println(arr3[1][1]);char[][] arr4={{'1','2'},{'3','4','5'}};System.out.println(arr4[0][0]);System.out.println(arr4[0][1]);System.out.println(arr4[1][0]);System.out.println(arr4[1][1]);System.out.println(arr4[1][2]);//遍历 i外层数组的索引for(int i=0;i<=arr4.length-1;i++){for(char ch:arr4[i]){System.out.println(ch);}}}}

可变参数:

个数不确定但是类型相同的多个参数
1.可以接收参数的个数为为0个,可以为多个,类型必须都相同
2.数据类型 … 参数名 …写在类型和参数名之间
3.可变参数要存在与参数列表的最后
4.操作可变参数,使用数组的数组的使用方式,在方法的内容,会默认为可变参数构建一个数组

public class Demo11 {public static void main(String[] args){test("haha",1,2);}//计算多个整数的和public static void test(String str,int ... b){int sum=0; //存储数据和for(int i:b){sum+=i;System.out.println(i);}System.out.println(sum);}
}

java类

Arrays :

封装了一些用来操作数组的常用功能
1.导包 java.util包下的Arrays,需要导包
2.Arrays.功能名字()

public class ArrayDemo03{public static void main(String[] args){//定义两个数组int[] arr1={5,2,6,4,1,3,7};int[] arr2={1,2,3,4,5,6,7};System.out.println(arr1);System.out.println(arr2);//需求:想要在打印数组名的时候,可以给打印数组中的所有内容//static String toString(int[] a) 返回指定数组内容的字符串表示形式。 System.out.println(Arrays.toString(arr1));//比较两个数组中所有的数据是否相同//static boolean equals(int[] a, int[] a2)  如果两个指定的 int 型数组彼此相等,则返回 true。 System.out.println(arr1==arr2);System.out.println(Arrays.equals(arr1,arr2));//排序: static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序 System.out.println(Arrays.toString(arr1));Arrays.sort(arr1);System.out.println(Arrays.toString(arr1));//根据字符的unicode比较String[] arr3=new String[]{"b","ab","a","bc","abc"};System.out.println(Arrays.toString(arr3));Arrays.sort(arr3);System.out.println(Arrays.toString(arr3));//二分查找法: 要求先升序排序再查找//static int binarySearch(int[] a, int key) 使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。 System.out.println( Arrays.binarySearch(arr2,-2));  //-1//static int[] copyOf(int[] original, int newLength) 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。 //如果新数组的长度比原数组长度小,是截取,比原数组长度大,是填充,使用默认值填充System.out.println(Arrays.toString(Arrays.copyOf(arr2,10)));  //默认从0开始/*static float[] copyOfRange(float[] original, int from, int to) 将指定数组的指定范围复制到一个新数组。   结束位置不包含*/System.out.println(Arrays.toString(Arrays.copyOfRange(arr1,2,7)));/*static String deepToString(Object[] a) 返回指定数组“深层内容”的字符串表示形式。 static boolean deepEquals(Object[] a1, Object[] a2) 如果两个指定数组彼此是深层相等 的,则返回 true。 只对二维数组使用*/int[][] arr5={{9,8,7},{6,5},{4,3,2,1}};int[][] arr6={{9,8,7},{6,5},{4,3,2,1}};System.out.println(Arrays.toString(arr5));System.out.println(Arrays.toString(arr6));System.out.println(Arrays.deepToString(arr5));System.out.println(Arrays.equals(arr5,arr6));System.out.println(Arrays.deepEquals(arr5,arr6));//static void fill(float[] a, int fromIndex, int toIndex, float val)  将指定的 float 值分配给指定 float 型数组指定范围中的每个元素。 }}

方法及方法的重载|数组相关推荐

  1. Java 方法使用总结(重载、数组输出、enum和switch、foreach和迭代器、可变长度参数、重载中使用可变长度参数)

    方法重载 方法名相同 方法的参数类型,参数个不一样 方法的返回类型可以不相同 方法的修饰符可以不相同 main 方法也可以被重载 class MyClass {int height;MyClass() ...

  2. java数组循环动态赋值_04、Java基础语法(循环嵌套、break、continue、方法、方法的重载、数组动态初始化)...

    复习: 流程控制语句 - 顺序结构 - 分支结构 - if-else - switch - 循环结构 - for - while - do...while ctrl + alt + L 格式化代码 & ...

  3. Java方法01 方法(函数)定义、调用、值传递、重载、命令行传递参数

    Java 方法的定义.调用.值传递.重载.命令行传递参数 1. 什么是方法? 2. 方法的定义和调用 3. 值传递和引用传递 4. 方法的重载 5. 命令行传递参数 6. 可变参数(输入参数的数量不确 ...

  4. javaSE-day04--ArrayList基本用方法、类内定义方法和方法重载、静态方法static(类的方法)、工具方法(static)的定义和使用

    ArrayList基本用方法 package day04;import java.util.ArrayList;public class ArrayListDemo {public static vo ...

  5. Java面向对象-方法与方法重载

    方法与方法重载 文章目录 方法与方法重载 一.方法的参数传递 二.构造方法重载 一.方法的参数传递 1.定义带参数的方法 <访问修饰符> 返回类型 <方法名>(<形式参数 ...

  6. Day13-Java方法详解,方法的定义、重载,命令行传参,可变参数与递归

    Java方法详解 什么是方法? Java的方法是语句的集合,他们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法再程序中被创建,在其他地方被引用 [方法原子性]一个方 ...

  7. 【Java用法】FileWriter的用法 wirte() 方法以及几种重载方法的使用详解

    本文目录 一.用法介绍 二.疑问解答 2.1.如果这个文件不存在会怎么样? 2.2.如果这个文件存在的话会怎么样? 2.3.如果不想覆盖之前的内容,想要追加内容怎么做? 2.4.添加数据,如何实现换行 ...

  8. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...

  9. 定义一个带参带返回值的方法,实现输出随机数数组

    public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new ma ...

最新文章

  1. professor‘s great paper in multi agent system
  2. 如何在CentOS 7上安装Redis服务器
  3. JAVA——开启多线程的方法汇总
  4. python初体验(2)——面向对象篇
  5. arduino学习笔记(二)——bamboosir920
  6. 关于 Eureka 2.x,别再人云亦云了!
  7. D3实现的ChinaMap
  8. SSM框架面试题总结
  9. 商务与经济统计学习 --概率
  10. 用计算机控制人造卫星属于,用计算机控制人造卫星属于 为什么人造卫星在高层大气...
  11. Matlab中dir使用中遇到的一些问题
  12. h3c路由器msr2600-10,msr3600-28调试记录
  13. 英语在线教育机构争战AI风口,为何雷声大雨点小?
  14. 2021最新Java后端面经合集 | 阿里腾讯百度字节
  15. 文本检测 论文阅读笔记之 Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks
  16. HEVC代码学习6:filterHor和filterVer函数
  17. 计算机服务器排名,2019服务器CPU天梯图 多路CPU性能排名
  18. 计算机课程与就业关系,计算机专业课程及就业方向
  19. AR Camera开发记录(二) -- 3D人脸模型
  20. 荣耀全明星不显示服务器,LoveLive!学园偶像祭 全明星无法连接服务器是什么原因...

热门文章

  1. ios降级鸿蒙,iOS 降级 13.3 系统方法,你成功了没
  2. Unity UGUI 代码改变遮挡层级
  3. linux内核-进程三部曲:创建、执行与消亡
  4. 【单片机笔记】基于STM32F103C8的 USB 外部flash虚拟U盘
  5. 设计必备的配色工具03
  6. MySQL数据库比较工具 - mysqldbcompare
  7. css 实现图片间用间隔线(竖线)
  8. 科研萌新成长记17——落地
  9. 今日头条文章量如何打造爆款
  10. 电子邮箱哪个好用又安全?