javaSE系列之方法与数组的使用
创始人
2024-06-02 15:59:25
0

@[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);}}
}

相关内容

热门资讯

政策利好叠加交投活跃 券商业绩...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 转自:证券时报  上...
用画笔定格浪漫与幸福 这个新兴... 记录婚礼的方式都有哪些?有人选择用相机定格瞬间,也有人选择把婚礼仪式拍成一部微电影。随着个性化婚礼的...
建行本溪育建支行:一块暖心糖温...   在本溪县小镇的繁华街角,建行本溪育建支行就像一位忠实的伙伴,每天迎接着往来的客户,用专业与热情为...
1400万吨!山东能源枣矿集团... (转自:山东国资报道)通讯员 曹士刚近日,在内蒙古自治区呼伦贝尔市自然资源局,当墨迹鲜亮的《采矿许可...
建行沈阳北站团结路支行开展“消...   建行沈阳北站支行辖内团结路支行积极开展“消保知识常相伴,敬老爱老暖心间”主题活动,通过创新举措和...
以新质生产力夯实农业农村现代化... 转自:光明网-《光明日报农业是国民经济的基础,农业领域形成新质生产力是国民经济形成和发展新质生产力的...
古茗早盘涨超6% 机构指公司稳... .ct_hqimg {margin: 10px 0;} .hqimg_wrapper {text-a...
大行评级|里昂:上调明源云目标... 里昂发表报告指,该行调查显示,中国房地产市场在上半年仍然疲弱,预计明源云今年收入增长亦会受阻。然而,...
赛意信息跌2.03%,成交额1... 7月2日,赛意信息盘中下跌2.03%,截至11:14,报26.52元/股,成交1.22亿元,换手率1...
苹果“沉浸式虚拟显示”专利曝光...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! 来源:环球网【环球网...