
- 前言
- 一.方法的分类
- 1.有返回值的方法
- 1) 定义方法
- 2) 调用方法:使用赋值调用(推荐)
- 3) 相关流程
- 4) 定义有具体返回值类型的方法注意事项:
- 2.没有返回值的方法
- 1) 定义方法
- 2) 没有返回值的方法调用
- 3) 简单代码举例
- 二.数组
- 1.数组的定义
- 2.数组的定义格式
- a) 动态初始化
- b) 静态初始化
- 3. 数组中常见的异常
- 1) 运行时期异常
- 4. 数组的遍历
- 1)遍历数组
- 2)求arr数组中的最大值和使用方法调用
- 3) 数组的逆序
前言
提示:本文涉及方法(有返回值类型的方法和没有返回值类型的方法)、数组等方面的部分知识
提示:以下是本篇文章正文内容,下面案例可供参考
一.方法的分类 1.有返回值的方法 1) 定义方法权限修饰符 static 返回值类型 方法名(参数类型1 变量名1, 参数类型2 变量名2, ...){业务代码 return 返回值;}
2) 调用方法:使用赋值调用(推荐)这里我不太清楚,用自己的语言总结一下格式(具体看代码块)
main方法中调用的格式:
返回值类型 返回值 = 方法名(实际参数1,实际参数2, ...) ;
在main方法中定义的叫做实际参数
在自己定义的方法中定义的叫做形式参数
在调用方法时:
- 首先实际参数会将结果赋给形式参数
- 接下来通过自己写的业务代码逻辑进行一系列 *** 作
- 最后return将所要返回的结果返回,在main方法中采用赋值调用的方法调用
并打印输出语句
详细解释:看代码块注释里面的内容
//需求:求两个数据之和(没有提示啥数据类型,都是int)
class FunctionDemo{
public static void main(String[] args){
//键盘录入或者直接现在给具体值:实际参数!
int a = 10 ;
int b = 20 ;
//调用方法
//单独调用:用不了,计算出来---但是没有结果
//add(a,b);
//输出调用:不建议,硬编码
//直接输出结果,如果想要通过获取的结果进行其他需求,就用不了
//System.out.println("两个数据的结果是:"+add(a,b)) ; //可以输出
//所以,有具体返回值类型的方法的调用---推荐使用 赋值调用(可以使代码更加灵活)
//赋值调用:推荐使用
//格式:返回值类型 返回值 = 方法名(实际参数1,实际参数2) ;
int result = add(a,b) ;
System.out.println("两个数据之和是"+result) ;
}
//定义求两个数据之和的功能(采用方法)
public static int add(int x ,int y){//10,20是实际参数,x,y是形式参数,实际参数将结果赋值给形式参数
//赋值运算
int result = x + y ;
return result ;
//或者直接这样
//return x+y ;
}
}
执行流程分析
-
方法和方法是平级关系,不能嵌套,只能在里面去调用
-
定义方法的时候需要两个明确
明确返回值类型
明确参数类型以及参数个数(形式参数类型和几个参数) -
在定义方法的时候,形式参数必须携带数据类型,
因为Java是一个强类型语言! -
在实际参数 main中,调用方法的时候,实际参数不需要携带数据类型,因为已经键盘录入,已经定义过了
-
实际参数和形参参数,传参时,数据类型需要一一对应!
权限修饰符 静态修饰符 void 方法名(形式参数列表){
//完成的业务逻辑,输出等 *** 作
但是不能有return (因为return必须和具有返回值类型的方法一块使用)
}
2) 没有返回值的方法调用
单独调用
3) 简单代码举例//需求:在控制台输出 4行5列的*型,使用方法调用完成!
class FunctionDemo2{
public static void main(String[] args){
//调用方法:单独调用
printStar(3,4) ;
System.out.println("------------------") ;
printStar(5,6) ;
}
public static void printStar(int m ,int n){
//4行5列*
for(int i=1; i<=m ; i++){
for(int j=1; j<=n ;j++){
System.out.print("*") ;
}
System.out.println() ;
}
}
}
二.数组
1.数组的定义
数组就是能够存储同一数据类型的容器!
容器里面的元素必须是同一种类型的元素
- 1)数据类型[] 数组名称 ; (推荐第一种方式)
- 2)数据类型 数组名称[] ;
动态初始化:
给定数组的长度,数组内的元素内容由系统默认初始化!
默认初始化:系统给定的,根据我们数组中存储的数据类型来判定
格式:
数据类型[] 数组名称 = new 数据类型[数组长度] ; (推荐使用这一种)
数据类型 数组名称[] = new 数据类型[数组类型] ;
获取元素内容
通过数组名称[索引值(角标值)] 获取
索引值:从0开始
int[] arr = new int[3] ;
arr[0] 第一个元素
arr[1] 第二个元素
arr[2] 第三个元素
class ArrayDemo{
public static void main(String[] args){
int[] arr = new int[3] ;
//解析上面的格式
//= 左边
//int :表示当前数组中存储元素为int类型数据(基本数据类型)
//[] :表示一维数组(当前没有明确什么数组,都是一维数组)
//arr :表示当前数组的对象名称(变量名) 叫 arr
//= 右边
//new: 创建对象(跟jvm内存图解有关:(在堆内存中))
//int: 创建的对象是一个int类型的数组
//[]: 表示创建的是一个一维数组
//3: 表示给定的数组长度是3
//直接输出arr
System.out.println(arr) ; //输出结果是:[I@6d06d69c
//解析: [ :一维数组
// @ :地址值标记 @
// 6d06d69c:十六进制数据
//通过数组名称[索引值]获取元素内容
System.out.println(arr[0]) ; //0
System.out.println(arr[1]) ; //0
System.out.println(arr[2]) ; //0
//赋值
arr[0] = 10 ;
arr[1] = 20 ;
arr[2] = 30 ;
System.out.println(arr[0]) ; //10
System.out.println(arr[1]) ; //20
System.out.println(arr[2]) ; //30
}
}
b) 静态初始化
静态初始化
我们给定元素的内容,由系统来默认分配长度
格式:
数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,元素3...} ;(推荐)。
数据类型 数组名称[] = new 数据类型[] {元素1,元素2,元素3...}
简化格式:
数据类型[] 数组名称 = {元素1,元素2,元素3....};(推荐使用)
数据类型[] 数组名称 = {元素1,元素2,元素3....};
创建数组的时候,不能即动态初始化了,还静态初始化了(动静结合:不行!)
3. 数组中常见的异常 1) 运行时期异常 a)数组角标越界异常----程序运行的时候出现异常
ArrayIndeexOutOfBoundsException 类名
出现这个异常原因:
我们访问了数组中不存在的索引值报错!
解决方案: 改变索引值
b) 实际开发中,经常会出现 空指针异常 NullPointerException
就是当前我们在访问某个对象的时候,对象已经是null,然后还要适用对象中的某个功能—出现空指针了
解决方案: 对当前这个对象进行非空判断
4. 数组的遍历 1)遍历数组就是将数组中的元素一一输出
class ArrayTest{
public static void main(String[] args){
//方法1)创建一个数组,静态初始化
int[] arr = {11,22,33,44,55,} ;
int[] array = {1,2,3,4,5,6,7,8,9,10,11,12} ;
//遍历arr数组
//原始的做法
//通过数组名称来访问
//arr[角标]
System.out.println(arr[0]) ;
System.out.println(arr[1]) ;
System.out.println(arr[2]) ;
System.out.println(arr[3]) ;
System.out.println(arr[4]) ;
System.out.println("------------------------") ;
//方法二)这样代码的冗余量很大---使用循环思想改进
for(int x=0; x<5 ; x++){
System.out.println(arr[x]) ;
}
System.out.println("-------------------------------") ;
//在数组中有一个属性length:可以很掳爱获取数组长度 数组名称.length
//继续优化代码
for(int y=0; y
2)求arr数组中的最大值和使用方法调用
class ArrayTest2{
public static void main(String[] args){
//定义一个数组,静态初始化
int[] arr = {10,20,30,40,50} ;
//调用方法
printArray(arr) ;
System.out.println("---------------------") ;
int max = maxArray(arr) ;
System.out.println("最大值"+max) ;
}
public static void printArray(int[] array){
//打印一个"[" 不换行
System.out.print("[") ;
//遍历数组
for(int x=0 ; x max ){
max = array[x] ;
}
}return max ;
}
}
3) 数组的逆序
class ArrayTest3{
public static void main(String[] args){
int[] arr = {11,22,33,44,55} ;
System.out.println("逆序前:") ;
printArray(arr) ;
System.out.println("逆序后:") ;
reverse(arr) ;
//遍历输出结果:
printArray(arr) ;
}
//先遍历数组,输出逆序之前的数组
public static void printArray(int[] array){
System.out.print("[") ;
for(int x = 0 ;x < array.length ; x ++){
if(x == array.length-1){
System.out.println(array[x] +"]") ;
}else{
System.out.print(array[x] +", ") ;
}
}
}
//遍历数组,定义两个变量,起始索引和最终索引
//起始索引从0开始,最终索引:arr.length-1开始,起始索引不断++,最终索引不断--
//起始索引 < 最终索引
public static void reverse(int[] arr){
for(int start=0 ,end = arr.length-1;start欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)