当前位置: 首页 > news >正文

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);}}
}
http://www.lryc.cn/news/39279.html

相关文章:

  • 常用命令总结
  • 【Linux:程序地址空间--原来操作系统也喜欢画大饼】
  • Python实现简单信号滤波实战
  • Java(110):非对称加密RSA的使用(KeyPair生成密钥)
  • (Mybatis 学习【1】)整合 Mybatis 开发流程
  • 一文搞懂Kerberos
  • Go爬虫学习笔记(三)
  • CASTEP参数设置(2)
  • 浅谈对Promise的理解以及在工作中的应用
  • 开源|快速入门和理解并模拟实现GPS户外机器人的定位与导航
  • Java多线程系列--synchronized的原理
  • QEMU启动ARM64 Linux内核
  • Linux->进程程序替换
  • 最强分布式锁工具:Redisson
  • Java9-17新特性
  • 电脑开机找不到启动设备怎么办?
  • 使用langchain打造自己的大型语言模型(LLMs)
  • assert()宏函数
  • Docker圣经:大白话说Docker底层原理,6W字实现Docker自由
  • Redis+Caffeine多级(二级)缓存,让访问速度纵享丝滑
  • C#和.net框架之第一弹
  • C++---背包模型---潜水员(每日一道算法2023.3.12)
  • C++类的成员变量和成员函数详解
  • (枚举)(模拟)(位运算)116. 飞行员兄弟
  • 详解Array.prototype.shift.call(arguments)
  • Tina_Linux_Wi-Fi_开发指南
  • Spring AOP(AOP概念、组成、Spring AOP实现及实现原理)
  • 8.条件渲染指令
  • 2023年全网最全最细最流行的自动化测试工具有哪些?你都知道吗!
  • 网络安全——数据链路层安全协议