当前位置: 首页 > 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);}}
}

相关文章:

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

[TOC] javaSE系列之方法与数组的使用 方法的定义 方法类似于C语言中的"函数"。 方法的种类 这里方法分为有参方法也分为无参方法&#xff0c; 形参和实参是两个实体&#xff08;这里相当于函数的传值调用和传址调用&#xff09; 1.非静态方法&#xff1a;普通方法/…...

常用命令总结

将常用命令汇集于此&#xff0c;以便在忘记的时候查询&#xff0c;持续更新…… Git Local changes 添加名字&#xff1a; git config --global user.name "<你的名字>"添加邮件&#xff1a; git config --globa user.email "<你的邮箱>"…...

【Linux:程序地址空间--原来操作系统也喜欢画大饼】

目录 1 代码感受 2 进程地址空间 3 扩展 1 代码感受 在正式讲程序地址空间前我们先来看一段简单的代码来分析分析&#xff1a; 1 #include<iostream>2 #include<unistd.h>3 using namespace std;4 5 int g_val100;6 7 int main()8 {9 pid_t idfork();10 if(i…...

Python实现简单信号滤波实战

在有些项目中需要对信号进行滤波处理&#xff0c;尤其是在医疗的设备中如心跳、脉搏等设备的采样后进行处理。滤波的目的就是除去某些频率的信号如噪声。常见的包括有低通滤波、高通滤波、带通滤波。 低通滤波指的是去除高于某一阈值频率的信号&#xff1b;高通滤波去除低于某…...

Java(110):非对称加密RSA的使用(KeyPair生成密钥)

Java(110)&#xff1a;非对称加密RSA的使用(KeyPair生成密钥) RSA 算法是一种非对称加解密算法。服务方生成一对 RSA 密钥&#xff0c;即公钥 私钥&#xff0c;将公钥提供给调用方&#xff0c;调用方使用公钥对数据进行加密后&#xff0c;服务方根据私钥进行解密。 1、RSA生…...

(Mybatis 学习【1】)整合 Mybatis 开发流程

Mybatis 整合流程 ① 添加MyBatis的依赖 ② 创建数据库表 ③ 编写pojo实体类 ④ 编写映射文件UserMapper.xml ⑤ 编写核心文件mybatis-config.xml ⑥ 编写测试类** 编写 pojo 实体类 (设计相应的数据库&#xff09; Data AllArgsConstructor NoArgsConstructor public class…...

一文搞懂Kerberos

Kerberos一词来源于古希腊神话中的Cerberus——守护地狱之门的三头犬&#xff0c;Kerberos是为TCP/IP 网络设计的可信第三方鉴别协议&#xff0c;最初是在麻省理工学院(MIT)为Athena 项目而开发的。Kerberos服务起着可信仲裁者的作用&#xff0c;可提供安全的网络鉴别&#xff…...

Go爬虫学习笔记(三)

day3 ‍ 04&#xff5c;敏捷之道&#xff1a;大型Go项目的开发流程是怎样的&#xff1f; 瀑布模式 流程&#xff1a; 市场调研需求分析产品设计研发实现集成与测试项目交付与维护 适用场景&#xff1a; 需求在规划和设计阶段就已经确定了&#xff0c;而且在项目开发周期内&…...

CASTEP参数设置(2)

虚拟试验&#xff08;分子模拟&#xff09; 在表征材料以及材料的相关性质时&#xff0c;只要是采用已有的理论加以解释 但是通常来说&#xff0c;需要采用已有的理论来进行设计和探索&#xff0c;伴随着工业软件的发展&#xff0c;应当选用仿真技术来缩小探索范围 传统试验V…...

浅谈对Promise的理解以及在工作中的应用

浅谈对Promise的理解以及在工作中的应用Promise的概念背景知识JavaScript的同步和异步JavaScript事件循环回调函数进行异步操作解决方案&#xff1a;PromisePromise 在工作中的运用创建PromisePromise封装AJAXPromise链式操作Promise.all()Promise.race()async和await总结Promi…...

开源|快速入门和理解并模拟实现GPS户外机器人的定位与导航

户外机器人的定位导航相对于需要建图的场景来说&#xff0c;是比较简单容易实现的&#xff0c;因为可以借助第三方地图完成定位&#xff0c;并在第三方地图中完成路径规划和下发航点等操作&#xff0c;实现的难题在于如何控制机器人完成步行和转弯。 这些在不引进RTK高精度定位…...

Java多线程系列--synchronized的原理

原文网址&#xff1a;Java多线程系列--synchronized的原理_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java的synchronized的原理。 反编译出字节码 Test.java public class Test {private static Object LOCK new Object();public static int main(String[] args) {synchro…...

QEMU启动ARM64 Linux内核

目录前言前置知识virt开发板ARM处理器家族简介安装qemu-system-aarch64安装交叉编译工具交叉编译ARM64 Linux内核交叉编译ARM64 Busybox使用busybox制作initramfs使用QEMU启动ARM64 Linux内核前言 本文介绍采用 qemu 模拟ARM-64bit开发板&#xff08;针对ARM-32bit的有另一篇文…...

Linux->进程程序替换

目录 前言&#xff1a; 1 程序替换原理 2 单进程替换 3 替换函数 3.1 函数使用 4 程序去替换自己的另一个程序操作方式 5 实现自己的shell 前言&#xff1a; 通过我们之前对于子进程的应用&#xff0c;我相信大家一定是能够想到创建子进程的目的之一就是为了代劳父进程执…...

最强分布式锁工具:Redisson

1 Redisson概述1.1 什么是Redisson&#xff1f;Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, Sorted…...

Java9-17新特性

Java9-17新特性 一、接口的私有方法 Java8版本接口增加了两类成员&#xff1a; 公共的默认方法公共的静态方法 Java9版本接口又新增了一类成员&#xff1a; 私有的方法 为什么JDK1.9要允许接口定义私有方法呢&#xff1f;因为我们说接口是规范&#xff0c;规范时需要公开…...

电脑开机找不到启动设备怎么办?

电脑正常开机&#xff0c;却提示“找不到启动设备”&#xff0c;这时我们该怎么办呢&#xff1f;本文就为大家介绍几种针对该问题的解决方法&#xff0c;一起来看看吧&#xff01;“找不到启动设备”是什么意思&#xff1f;可引导设备&#xff08;又称启动设备&#xff09;是一…...

使用langchain打造自己的大型语言模型(LLMs)

我们知道Openai的聊天机器人可以回答用户提出的绝大多数问题,它几乎无所不知&#xff0c;无所不能&#xff0c;但是由于有机器人所学习到的是截止到2021年9月以前的知识&#xff0c;所以当用户询问机器人关于2021年9月以后发送的事情时&#xff0c;它无法给出正确的答案&#x…...

assert()宏函数

assert()宏函数 assert是宏&#xff0c;而不是函数。在C的assert.h文件中 #include <assert.h> void assert( int expression );assert的作用是先计算表达式expression&#xff0c; 如果其值为假&#xff08;即为0&#xff09;&#xff0c;那么它会打印出来assert的内容…...

Docker圣经:大白话说Docker底层原理,6W字实现Docker自由

说在前面&#xff1a; 现在拿到offer超级难&#xff0c;甚至连面试电话&#xff0c;一个都搞不到。 尼恩的技术社群&#xff08;50&#xff09;中&#xff0c;很多小伙伴凭借 “左手云原生右手大数据”的绝活&#xff0c;拿到了offer&#xff0c;并且是非常优质的offer&#…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...