方法及方法的重载|数组
方法
方法:
注意:
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 型数组指定范围中的每个元素。 }}
方法及方法的重载|数组相关推荐
- Java 方法使用总结(重载、数组输出、enum和switch、foreach和迭代器、可变长度参数、重载中使用可变长度参数)
方法重载 方法名相同 方法的参数类型,参数个不一样 方法的返回类型可以不相同 方法的修饰符可以不相同 main 方法也可以被重载 class MyClass {int height;MyClass() ...
- java数组循环动态赋值_04、Java基础语法(循环嵌套、break、continue、方法、方法的重载、数组动态初始化)...
复习: 流程控制语句 - 顺序结构 - 分支结构 - if-else - switch - 循环结构 - for - while - do...while ctrl + alt + L 格式化代码 & ...
- Java方法01 方法(函数)定义、调用、值传递、重载、命令行传递参数
Java 方法的定义.调用.值传递.重载.命令行传递参数 1. 什么是方法? 2. 方法的定义和调用 3. 值传递和引用传递 4. 方法的重载 5. 命令行传递参数 6. 可变参数(输入参数的数量不确 ...
- javaSE-day04--ArrayList基本用方法、类内定义方法和方法重载、静态方法static(类的方法)、工具方法(static)的定义和使用
ArrayList基本用方法 package day04;import java.util.ArrayList;public class ArrayListDemo {public static vo ...
- Java面向对象-方法与方法重载
方法与方法重载 文章目录 方法与方法重载 一.方法的参数传递 二.构造方法重载 一.方法的参数传递 1.定义带参数的方法 <访问修饰符> 返回类型 <方法名>(<形式参数 ...
- Day13-Java方法详解,方法的定义、重载,命令行传参,可变参数与递归
Java方法详解 什么是方法? Java的方法是语句的集合,他们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法再程序中被创建,在其他地方被引用 [方法原子性]一个方 ...
- 【Java用法】FileWriter的用法 wirte() 方法以及几种重载方法的使用详解
本文目录 一.用法介绍 二.疑问解答 2.1.如果这个文件不存在会怎么样? 2.2.如果这个文件存在的话会怎么样? 2.3.如果不想覆盖之前的内容,想要追加内容怎么做? 2.4.添加数据,如何实现换行 ...
- [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...
- 定义一个带参带返回值的方法,实现输出随机数数组
public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new ma ...
最新文章
- professor‘s great paper in multi agent system
- 如何在CentOS 7上安装Redis服务器
- JAVA——开启多线程的方法汇总
- python初体验(2)——面向对象篇
- arduino学习笔记(二)——bamboosir920
- 关于 Eureka 2.x,别再人云亦云了!
- D3实现的ChinaMap
- SSM框架面试题总结
- 商务与经济统计学习 --概率
- 用计算机控制人造卫星属于,用计算机控制人造卫星属于 为什么人造卫星在高层大气...
- Matlab中dir使用中遇到的一些问题
- h3c路由器msr2600-10,msr3600-28调试记录
- 英语在线教育机构争战AI风口,为何雷声大雨点小?
- 2021最新Java后端面经合集 | 阿里腾讯百度字节
- 文本检测 论文阅读笔记之 Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks
- HEVC代码学习6:filterHor和filterVer函数
- 计算机服务器排名,2019服务器CPU天梯图 多路CPU性能排名
- 计算机课程与就业关系,计算机专业课程及就业方向
- AR Camera开发记录(二) -- 3D人脸模型
- 荣耀全明星不显示服务器,LoveLive!学园偶像祭 全明星无法连接服务器是什么原因...