java学习记录day3

文章介绍了Java编程中方法的基本概念,包括定义、调用和返回值类型。同时讲解了数组的定义、初始化、访问以及遍历。还讨论了递归的概念和方法重载的特性。
摘要由CSDN通过智能技术生成

方法&数组的定义和简单使用

方法的定义

方法即封装的一段特殊功能的代码。写代码时总会有一段或多段代码需要重复使用,比如功能菜单的打印,字符串的对比等,每使用一次便从重新写一遍即麻烦也无意义。将其封装,使用的时候只调用一个代称,这样就简单实用很多,也会增加代码的可读性,这样的封装的部分叫方法(也可以叫函数)。
每个程序必须拥有的main() 方法:
public static void main(String[] args) {

}
方法的定义:
修饰符 返回值类型 方法名(形参列表) {
方法中语句;
return 返回值;
}
修饰符,一般是对方法的访问权限、类型等的说明,比如main方法中的public指明该方法的访问权限是公开的,是公共方法,所有人(方法、类)都可以访问调用的,static说明该方法是静态方法;
返回值类型,顾名思义,就是说明该方法的返回值类型,return后跟的返回值的类型要和返回值类型保持一致,例如返回值类型为int,则返回值也必须是int类型的数据。方法也可以没有返回值,那么返回值类型为void,例如main方法;方法的返回值要么没有,要么只有一个
方法名,即该方法的名称,调用时需要用到,自定义,要符合标识符的规则,最好遵循命名规范,增加代码的可读性。
形参列表,该方法要传入的形参,方法逻辑中用到的一些数据,可能会发生变化,这样的数据可以考虑定义为形参,可以没有,可以有多个。
用例:

//打印三角形
public class App1 {
	public static void main(String[] args) {
		// 调用方法
		// 通过方面名进行调用
		// friedRiceWithEgg();
		// 方法调用时,给形参传的值,称为实参(实际参数)
		// 有几个形参,就需要几个实参,传参时,个数/类型/顺序要保持一致
		// friedRiceWithEgg2("双黄蛋", "黑米饭");
		printGraph2(10);
	}
	// 注意自定义的方法位置
	// 无参无返回值
	public static void friedRiceWithEgg() {
		System.out.println("bbq, 大厨故意欺负我,没有食材,怎么做饭");
	}
	// 打印图型(三角),注意方法名的命名规范,养成良好的编程习惯,这在将来都是加分项
	public static void printGraph() {
		for(int i = 1; i <= 5; i++) {
			for(int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	// 蛋炒饭, 鸡蛋和米可能不一样,公鸡蛋/草鸡蛋/双黄蛋。。。 隔夜米/刚蒸出来/白米饭/黑米饭。。。。
	// 有参数,无返回值的方法
	// 形参(形式参数)列表,形参需要外部传值
	// 方法中会涉及一些可变的东西,针对这种情况,我们用形参来表示
	public static void friedRiceWithEgg2(String egg, String rice) {
		System.out.println("倒入2两油,加热到7成热度");
		System.out.println("倒入鸡蛋:" + egg);
		System.out.println("将鸡蛋炒熟");
		System.out.println("倒入米饭:" + rice);
		System.out.println("继续翻炒,然后出锅");
		
	}
	// 形参的类型,根据实际业务定义
	public static void printGraph2(int row) {
		for(int i = 1; i <= row; i++) {
			for(int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();	
		}
	}
}

递归(了解理解)

递归即方法自己调用自己形成循环。比如计算n的阶乘:

public static int factorial (int n ){
//在大括号中只有一句要执行的代码时,可省略大括号
//但个人不建议在长代码中换行使用,容易少大括号还不容易找到哪里少了
	if(n == 1) return 1;
	else return n * factorial(n - 1);
}

f(n)
n * f(n -1)
(n - 1) * f(n- 2)
(n - 2) * f(n - 3)
2 * f(1)

方法重载

定义:再一个类中可以创建多个方法,这些方法可以具有相同的名字,但具有不同的参数和不同的定义。返回值不能作为重载的条件!

//以下三种都是方法重载
public static int add(int a,int b){
	return a+b;
}
public static float add(float a,int b){
	return a+b;
}
public static float add(int a,float b){
	return a+b;
}

数组的定义

数组是一组能够储存相同数据类型的变量的集合。
定义方法:数据类型[] 数组名 = new 数据类型[数组长度],例如:

int[] mun = new int[3]
//或者先声明
int[] mun;
//再定义
mun = new int[3]

赋值:在定义时直接初始化,或者利用循环输入:

int[] mun = new int[]{1,2,3};
//简写
int[] mun = {1,2,3};
//获取数组长度
int len = num.length;
//输入:
Scanner c=new Scanner(System.in);
for(int i = 0;i < 3;i++) int[] mun[i] = c.nextInt();

这里提一下java的输入:

import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner cin=new Scanner(System.in);
        int a=cin.nextInt();//输入一个整数
        System.out.println(a);
        double b=cin.nextDouble();//输入一个双精度的浮点数
        System.out.println(b);
        String str=cin.next();//输入一个单词,遇到分号则输入终止
        System.out.println(str);
        String str2=cin.nextLine();//输入一行,中间可有多个空格
        System.out.println(str2);
    }
}

通过下标访问对应的数据,下标是从0开始的,即第一个数据储存在[0]的位置:

int[0]int[1]int[2]
123

数组的遍历

方式一:for循环
方式二:for增强循环forearch

//例如现有数组mun
//方式一for循环
int len = mun.length
for(int i = 0;i < len;i++){
	System.out.println(mun[i]);
}
//方式二:for增强循环forearch JDK1.5后新增
for(int x:mun){//int是数组类型
//将mun中的元素依次取出来赋给x
	System.out.println(x);
}

数组使用异常

空指针异常(NullPointerException):如果对象未正确初始化或为NULL时尝试使用,则将抛出Null Pointer Exception。例如只定义的数组却没有进行初始化,这时候如果直接访问使用它比如.length,那么就会抛出Null Pointer Exception。
数组越界异常(ArrayIndexOutOfBoundsException):顾名思义,就是当我们访问的数组时超出的数组定义的范围,例如定义int[] mun = new int[5],在访问mun[5]时就会抛出数组越界异常。

多维数组

JAVA中并没有真正意义上的多维数组,是以数组中的元素还是数组的形式表现出来的。

//定义
int[][] num = new int[3][3];
//赋值
num = {{1,2,3},{4,5,6},{7,8,9}};
//或输入
Scanner c=new Scanner(System.in);
for(int i = 0;i < 3;i++)
	for(int j = 0;j < 3;j++)
	//num[i][j]表示第个元素数组中第j个元素,可以理解为二维数组中的第i行第j列的元素
		num[i][j] = c.nextInt();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值