javaSE系列之方法与数组的使用

@[TOC] javaSE系列之方法与数组的使用

方法的定义

方法类似于C语言中的"函数"。

方法的种类
这里方法分为有参方法也分为无参方法, 形参和实参是两个实体(这里相当于函数的传值调用传址调用
1.非静态方法:普通方法/构造方法
1.普通方法:成员方法/构造方法(是一种比较特殊的成员方法)
2.静态方法:被static修饰
3.抽象方法

方法的定义由 修饰符 返回值类型 方法名称(参数类型 形参)
方法体代码
return ;

注意事项:
1.返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void
2.方法名字:采用小驼峰命名
3.参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
4. 方法体:方法内部要执行的语句
5. 在java当中,方法必须写在类当中
6. 在java当中,方法不能嵌套定义
7. 在java当中,没有方法声明一说
8. 定义方法的时候, 不会执行方法的代码.
9. 只有调用的时候才会执行. 一个方法可以被多次调用.

重写与重载

为什么需要重写
当方法功能相同,但是传参不同,这几个方法被重写

重载

  1. 方法名必须相同
  2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  3. 与返回值类型是否相同无关 //就是方法名相同就行

在这里插入图片描述
重写

也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程,进行重新编写,
返回值和形参都不能改变。即外壳不变,核心重写!

【方法重写的规则】

子类在重写父类的方法时,一般必须与父类方法原型一致: 返回值类型 方法名 (参数列表)
要完全一致
,被重写的方法返回值类型可以不同,但是必须是具有父子关系的。
访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为
protected
。 父类被static、private修饰的方法、构造方法都不能被重写。

注意

避免在构造方法中调用重写的方法:
因为当构造子类对象的同时,先会调用父类的构造方法,但是父类的构造方法中,有重写的方法,此时发生动态绑定,会调用子类的方法,但此时子类对象自身还没有构造,并未构造完全。

数组的基本概念

什么是数组

数组:相同元素的集合,在内存中是一段连续开辟的空间(这里和(c语言语法差不多,每个空间都有自己的编号)

数组的创建及初始化

数组类型[] 数组名 = new 数组类型[]
//三种写法

  1. int[] arr = new int[]{1,2,3,4,5,6};
  2. int[] arr = new int[10];
  3. int[] arr = {1,3,4,5,6};
  4. //注意 这里不能写成 int[] arr; arr={1,3,4};
  5. int[] arr;
  6. //这里没有对数组初始化,默认为基本类型的对应的默认值

如何访问数组

system.out.println(arr[0]);

遍历数组

int[] arr = new arr[]{1,3,4,5,3};
//方法一
for(int i = 0; i < arr.length ;i++){
	system.out.println(arr[i]);
}

//方法二
for(数据类型 x : 数组名){
	system.out.println(x);
}
//这里不能使用下标访问,只能每个元素遍历

数组是引用类型

//常见引用类型有
类class
接口interface
数组array

什么是引用变量

变量的实质是一小块内存单元,这一小块内存里存储着变量的值;而当变量指向一个对象时,这个变量就被称为引用变量 引用存在栈上 , 对象存在堆上。
//对象可以被多个引用指向,而一个引用只能指向一个对象,当对象不被指向时才被销毁

在这里插入图片描述

null

null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用.

数组传参

//这里与C语言的传参差不多
//通过引用可以改变数组内容 ,但是不能改变对象的引用变量

拷贝数组

int[] arr = {1,3,5,7,85};
int[] newarr = Arrays.copyOf(arr, arr.length);
拷贝分为深浅拷贝 这里是是一个全新的数组 、arr与newarr不同

Arrays.copyOfRange(arr, 0,length)//这里是数组的下标(0, length} (在合理范围中,可以随意选择)

二维数组

二维数组的创建

数据类型[][] 数组名称 = new 数据类型 [行数][列数] { }; //以下是二维数组的创建
int[][] arr = new arr[6][3];
int[][] arr = new arr[][]{ {34,54},{34,65}}:
int[][] arr = new arr{{34,65},{64,45}};

二维数组其实是特殊的一维数组

在这里插入图片描述
arr[i][j] 中 arr[i]储存的是一维数组的地址

二维数组的遍历

for(int i = 0; i < arr.length; i++){
	for(int j = 0; j < arr[i].length; j++){
		System.out.println("arr[i][j]" + " ")
	}
}
for(int[] arr ; array){
	for(int a ;  arr){
		System.out.println("a" + " ");
	}
}

数组小练习

//冒泡排序

public class Main {
    public static void sort_buttle(int[] arr){
        for(int i = 0; i < arr.length-1; i++){
            for(int j = 0; j < arr.length-1-i; j++){
                if(arr[j] > arr[j+1]){
                    int tmp  = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);
        int[] arr = {3,5,6,2,4,1,41};
        sort_buttle(arr);
        for(int a : arr){
            System.out.println(a);
        }
    }
}
  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值