2022Java学习笔记(初识Java_04)


1. 初识方法

  • 方法的定义完整格式:
修饰符 返回值类型 方法名称 (参数类型 参数名称, ...){
	方法体;
	return 返回值;
}
  • 修饰符:现阶段固定写法 public static
  • 返回值类型:最终产生的数据结果的类型
  • 方法名称:方法的名字 小驼峰式
  • 参数类型:进入方法的数据的类型
  • 参数名称:进入方法的数据对应的变量名称
  • 参数如果有多个 用逗号进行分隔
  • 方法体:方法需要做的事情 若干行代码
  • return:两个作用 第一停止当前方法 第二将后面的返回值还给调用处
  • 返回值:方法执行后最终产生的数据结果
  • return 后面的返回值必须和方法名称前面的返回值类型保持一致
  • 有参数:小括号中有内容 一个方法需要一些数据条件才能完成任务
  • 无参数:小括号留空 一个方法不需要任何数据条件就能完成任务

举例

	//定义一个两数相加的方法:
    public static int add(int a,int b){
        int result=a+b;
        return result;
    }

2. 方法的调用

  • 方法的调用:
    • 1.单独调用:方法名称(参数);
    • 2.打印调用:System.out.println(方法名称(参数));
    • 3.赋值调用:数据类型 变量名称 = 方法名称(参数);
  • 注意:返回值类型固定写为void 这种方法只能单独调用 不能打印调用或赋值调用,有返回值时 可以单独调用 打印调用 和 赋值调用
System.out.println("==========");
//单独调用
add(10,20);
System.out.println("==========");
//打印调用
System.out.println(add(10,20));// 30
System.out.println("==========");
//赋值调用
int number=add(15,25);
number+=100;
System.out.println("变量的值"+number);

举例

	//定义一个方法 判断两个数是否相同
	public static boolean isSame(int a,int b){
		//语句一:boolean same = a==b ? true : false; return same;
		//语句二:boolean same = a==b; return same;
		//语句三:boolean same; if(a==b){same=true}else{same=false} return same;
		//语句四:(执行)
		return a==b;
    }
	
	System.out.println(isSame(10,20));
    System.out.println(isSame(20,20));
    //定义一个方法 打印指定次数的HELLO WORLD
    public static void print(int a){
        for (int i=0;i<a;i++){
            System.out.println("HELLO WORLD "+i);
        }
    }
    
	print(10);
    //定义一个方法求出1-100的和
    public static int sum(){
        int sum=0;
        for (int i = 1; i <= 100; i++) {
            sum+=i;
        }
        return sum;
    }

    System.out.println("1-100的和为:"+sum());
  • 使用方法的注意事项:
    • 1.方法应该定义在类中 但是不能在方法中再定义方法 不能嵌套
    • 2.方法定义的前后顺序无所谓
    • 3.方法定义之后不会执行 如果希望执行 一定要调用 单独调用 打印调用 赋值调用
    • 4.如果方法有返回值 那么必须写上 return 返回值; 不能没有
    • 5.return 后面的返回值必须和方法名称前面的返回值类型保持一致
    • 6.对于一个void没有返回值的方法 不能写return后面的返回值 只能写return自己
    • 7.对于void方法当中最后一行的return可以省略不写
    • 8.一个方法当中可以有多个return语句 但是必须保证同时只有一个会被执行到 两个return不能连写

3. 方法的重载

  • 方法的重载:
    多个方法的名称一样 但是参数列表不一样

  • 好处:
    只需要记住一个方法名称 就可以实现类似的多个功能

    举例

    //方法的重载:
    public static int sum(int a,int b){
        System.out.println("有两个参数的方法执行");
        return a+b;
    }
    public static int sum(int a,int b,int c){
        System.out.println("有三个参数的方法执行");
        return a+b+c;
    }
    public static int sum(int a,int b,int c,int d){
        System.out.println("有四个参数的方法执行");
        return a+b+c+d;
    }
    
    //方法重载
    System.out.println(sum(10,20));// 30
	System.out.println(sum(10,20,30));// 60
	System.out.println(sum(10,20,30,40));// 100
  • 方法重载与下列因素相关:
    • 1.参数个数不同
    • 2.参数类型不同
    • 3.参数的多类型顺序不同
  • 方法重载与下列因素无关:
    • 1.与参数的名称无关
    • 2.与方法的返回值类型无关

举例

	//方法重载
    public static int sum(int a,int b){
        return a+b;
    }
	
	public static int sum(double a,double b){
        return a+b;
    }
	
	public static int sum(int a,int b,int c){
        return a+b+c;
    }

	public static int sum(double a,int b){
        return a+b;
    }

	public static int sum(int a,double b){
        return a+b;
    }
	
	//报错
	public static int sum(int x,int y){
        return x+y;
    }
	
	public static double sum(int a,int b){
        return (double)(a+b);
    }

4. 数组及初始化

  • 数组:同时存放多个数据值

  • 特点:

    • 1.数组是一种引用数据类型
    • 2.数组当中的多个数据类型必须统一
    • 3.数组的长度在程序运行期间不可改变
  • 两种常见的数组初始化:

    • 1.动态初始化(指定长度)
    • 2.静态初始化(指定长度)
  • 动态初始化数组格式:

    • 数据类型[] 数组名称 = new 数据类型 [数组长度]
    • 含义解析:
      • 左侧的数据类型:也就是数组中保存的数据 全都是统一的什么类型
      • 左侧的中括号:代表一个数组
      • 左侧数组名称:代表数组的名字
      • 右侧的new:代表创建数组的动作
      • 右侧的数据类型:必须和左边数据类型保持一致
      • 右侧中括号的长度:也就是数组中到底可以保存多少个数据 是一个int类型数据

举例

		//创建一个数组 里面可以存放300个int数据
		//格式:数据类型[] 数组名称 = new 数据类型 [数组长度]
		int[] arrayA = new int[300];
		
		//创建一个数组 能存放10个double类型的数据
		double[] arrayB = new double[10];
		
		//创建一个数组 能存放5个字符串
		String[] ayyayC = new String[5];	
  • 静态初始化数组格式:
    • 数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,…};
  • 注意事项:虽然静态初始化没有直接告诉长度 但可根据大括号里面的元素具体内容推算数组的长度
	//直接创建一个数组 里面装的是int数字 具体为 5 15 25
	int[] arrayD = new int[] {5,15,25};
	
	//创建一个数组 存储字符串 "hello" "world" "java"
	String[] arrayE =new String[] {"hello","world","java"};
  • 静态初始化数组省略格式:

    • 数据类型[] 数组名称 = {元素1,元素2,…};
  • 注意事项:

    • 1.静态初始化没有指定长度 仍会自动推算得到长度
    • 2.动态初始化 静态初始化都可以拆分为两个步骤
    • 3.静态初始化一旦使用省略格式 则不能拆分为两个步骤

举例

	//省略格式的静态初始化
	int[] arrayF = {10,20,30};
	
	//静态初始化 动态初始化 拆分为两个步骤
	int[] arrayG;
	arrayG = new int[] {10,20,30};
	int[] arrayH;
	arrayH = new int[5];
	
	//静态初始化的省略格式不能拆分为两个步骤
	int[] arrayI;
	arrayI = {10,20,30};//错误写法!

5.访问数组元素

  • 访问数组元素:
    • 直接打印数组名称 得到的是数组对应内存地址的哈希值
    • 访问数组元素的格式:数组名称[索引值];
    • 索引值从0开始 一直到数组的长度-1为止
	//静态初始化的省略格式
	int[] array ={10,20,30};
	System.out.println(array);//打印数组对应内存地址哈希值
	System.out.println(array[0]);// 10
	System.out.println(array[1]);// 20
	System.out.println(array[2]);// 30
	
	int num=array[1];
	System.out.println(num);// 20
  • 使用动态初始化数组 其中的元素将会自动拥有一个默认值
  • 整数类型:默认为0 浮点数类型:默认为0.0 字符类型:默认为’\u0000’
  • 布尔类型:默认为false 引用类型:默认为null
  • 注意事项:静态初始化也有默认值的过程 系统自动马上将默认值换成了大括号中的数值*
	//动态初始化一个数组
	int[] array=new int[3];
	System.out.println(array);//内存地址哈希值
	System.out.println(array[0]);// 0
	System.out.println(array[1]);// 0
	System.out.println(array[2]);// 0
	
	array[1]=123;
	System.out.println(array[0]);// 0
	System.out.println(array[1]);// 123
	System.out.println(array[2]);// 0
  • Java的内存划分为5个部分:
	1.栈(Stack):存放的都是方法中的局部变量 方法的运行一定要在栈中运行
	  局部变量:方法的参数 或者说方法{}内部的变量
	  作用域:一旦超出作用域 立刻从栈内存当中消失
	2.堆(Heap):凡是new出的东西都在堆中
	  堆内存里面的东西都有一个地址值:16进制
	  堆内存里面的数据 都有默认值
	  整数类型:默认为0 浮点数类型:默认为0.0 字符类型:默认为'\u0000' 
	  布尔类型:默认为false 引用类型:默认为null
	3.方法区(Method Area):存储.class相关信息 包含方法的信息
	4.本地方法栈(Native Method Stack):与操作系统相关
	5.寄存器(pc Register):与CPU相关
  • 数组索引编号从0开始到数组长度-1为止
  • 如果访问数组元素索引编号并不存在 则将发生数组索引越界异常
    ArrayIndexOutOfBoundsException
  • 所有的引用类型变量 都可以赋值为一个null 但是代表其中什么都没有
  • 数组必须进行new初始化才能使用其中的元素
  • 如果只是赋值了一个null没有进行new创建 则将发生空指针异常
    NullPointerException
	int[] array = null;
	array = new int[3];
	System.out.println(array[0]
  • 获取数组长度:数组名称.length 得到一个int数字
  • 数组一旦创建 程序运行期间 长度不可改变
        int[] arrayA={1,2,3,5,6,88,9,48,4,4,7,9,2,7,10,88,54,1};
        int len= arrayA.length;
        System.out.println("arrayA的长度是"+len);
        int[] arrayB=new int[3];
        System.out.println(arrayB.length);// 3
        System.out.println(arrayB);
        System.out.println("==============");
        arrayB=new int[5];
        System.out.println(arrayB.length);// 5
        System.out.println(arrayB);
        System.out.println("==============");
  • 数组遍历
        int[] arrayA={1,2,3,5,6,88,9,48,4,4,7,9,2,7,10,88,54,1};
		int len= arrayA.length;
		for循环 次数就是数组的长度
        for (int i = 0; i < arrayA.length; i++) {
			System.out.print(" "+arrayA[i]);
        }
  • 数组最值问题
        int min=arrayA[0],max=arrayA[0];
        for (int i = 1; i < arrayA.length; i++) {
            System.out.print(" "+arrayA[i]);
            if(min>arrayA[i]){
                min=arrayA[i];
            }
            if(max<arrayA[i]){
                max=arrayA[i];
            }
        }
        System.out.println();
        System.out.println("arrayA的最小值为"+min);
        System.out.println("arrayA的最大值为"+max);
  • 数组元素反转
	初始化语句:int min=0,int max =array.length-1
	条件判断:min<max
	步进表达式:min++,max--
	循环体:int temp 交换array[min] array[max]
        for (int i = 0; i < arrayA.length; i++) {
            System.out.print(" "+arrayA[i]);
        }
        System.out.println();
        for (int min = 0,max=arrayA.length-1; min <max; min++,max--) {
            int temp;
            temp=arrayA[min];
            arrayA[min]=arrayA[max];
            arrayA[max]=temp;
        }
        for (int i = 0; i < arrayA.length; i++) {
            System.out.print(" "+arrayA[i]);
        }
  • 数组作为方法参数_传址
  • 数组作为方法返回值_返回地址
    • 数组作为方法参数 向小括号里进行传参 传递的是数组的地址
 public static void printarrayA(int[] array) {

        System.out.println("传递的参数是:"+array);
        for (int i = 0; i < array.length; i++) {
            System.out.print(" " + array[i]);
        }
    }
	printarrayA(arrayA);// 调用

	//如果希望一个方法中可以返回多个相同类型的返回值 可以使用一个数组作为返回值类型即可

    public static int[] calculate(int a,int b,int c){
        int sum=a+b+c;
        int avg=sum/3;
        
        //int[] array=new int[2];
        //array[0]=sum;
        //array[1]=avg;
        //return array;
        
        int[] array={sum,avg};
        System.out.println("array of address is:"+array);
        return array;
		
		int[] result=calculate(10,20,30);
        System.out.println("result of address is:"+result);
        System.out.println("sum="+result[0]);
        System.out.println("avg="+result[1]);

  • ——————END-2022-04-04——————
  • 个人学习笔记,如有纰漏,敬请指正。
  • 感谢您的阅读。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苡荏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值