Java基础之方法与数组

news2024/9/25 3:23:57

方法

在Java中, 方法的定义包括方法的修饰符、返回类型、方法名、参数列表和方法体。方法既能够模块化的组织代码(当代码规模比较复杂的时候)。也做到代码被重复使用(一份代码可以在多个位置使用)。Java中的方法类似与C语言中的函数,具有C语言中函数的大部分功能,但是也有部分区别,下面我们进行解释。

方法的定义

public static 方法返回值 方法名称([参数类型 形参 ...]){
 方法体代码;
 [return 返回值];
}

方法的重载

Java支持方法重载,即在同一个类中可以定义多个同名方法参数列表必须不同,返回值类型并不影响。编译器会根据方法的参数列表来进行调用。在C语言中调函数时,调用不同的函数,要用不同的函数名,并重新定义函数,操作较为复杂,这就体现到了Java中方法的重载的优点了。

public class test {
    public static int add(int a,int b) {
        return a+b;
    }
    public static int add(int a,int b,int c,int d) {
        return a+b+c+d;
    }
    public static int add(int a,int b,int c) {
        return a+b+c;
    }
    public static double add(double a,double b) {
        return a+b;
    }
    public static void main(String[] args) {
        int a=1,b=2;
        System.out.println(add(a,b));
        System.out.println("-----------------");
        int c=3,d=4,e=5;
        System.out.println(add(c,d,e));
        System.out.println("-----------------");
        double f=6.0,g=7.0;
        System.out.println(add(f,g));
    }
}

数组

数组的定义

//动态初始化
数据类型[] 数组名称 = new 数据类型 [] { 初始化数据 };
 
// 静态初始化
数据类型[] 数组名称 = { 初始化数据 };

引用

引用类似C语言中的指针,创建一个引用只是相当于创建了一个很小的变量, 这个变量保存了一个整数, 这个整数表示内存中的一个地址。 "引用" 本质上只是存了一个地址Java中当引用不指向的时候,引用指向null,而不能和C语言一样指向0。Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实只是将数组的地址传入到函数形参中。这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大)。

引用在内存的案例

案例一:引用的指向,arr存的地址赋值给了arr2所以arr2也指向arr。

 案例二:这里我们可以出,两个引用可以指向同一个对象

案例三:这个案例可以看出并不是只要引用就能解决问题,这里arr1指向新建的一个数组,并部署原来的地址,然后方法调用后就释放了,所以并不会影响arr内的值。

Java数组中类的便利之处

1.for-each 遍历数组:是 for 循环的另外一种使用方式, 能够更方便的完成对数组的遍历

 public static void main(String[] args) {
        int[] array = {5,4,3,1,2};
        for (int x : array) {
            System.out.println(x);
        }
}

2.Arrays.toString(array):这个和C语言具有很大区别,C语言中想遍历需要运用一个for循环,而Java只需要调用方法就可以实现这一个功能。实例如下

public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(Arrays.toString(array));
}

3.Arrays.equals(array1,array2):判断是否两个数组是否相同,返回类型为布尔类型

public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        int[] array1={1,2,3,4,5,6};
        boolean ret=Arrays.equals(array,array1);
        System.out.println(ret);
}

4.Arrays.binarySearch(array, key):用于二分查找,返回值为所找数据的索引,找不到就会返回负值

 public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(Arrays.binarySearch(array, 3));
}

5.Arrays.sort(array)排序:这个主要进行升序进行排序

public static void main(String[] args) {
        int[] array = {5,4,3,1,2};
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
}

6.Arrays.copyOf(array,array.length):copyOf 是将数组进行了 深拷贝, 即又创建了一个数组对象, 拷贝原有 数组中的所有元素到新数组中。

int[] arr = {1,2,3,4,5,6};
        int[] newArr = Arrays.copyOf(arr, arr.length);
        System.out.println(Arrays.toString(newArr));
}

7.Arrays.copyOfRange(array,int,int):是拷贝某个范围,Arrays.toString(newArr)拷贝的是左闭右开。

    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        int[] newArr = Arrays.copyOfRange(arr, 2, 4);
        System.out.println("newArr: " + Arrays.toString(newArr));
    }

二维数组

二维数组的定义

数据类型[ ][ ] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

 Java中二维数组的定义和C语言中的定义是有区别,定以方式有如下三种,arr[ ][ ]这里面的方括号是数据的类型,里面不能定义数组的行和列。第三种方式需要依次遍历填入数据。

public static void main(String[] args) {
        int arr[][]={{1,2,3},{4,5,6}};
        int arr2[][]=new int[][]{{1,2,3},{4,5,6}};
        int arr3[][]=new int[2][3];
}

理解二维数组是一个特殊的一维数组

在C语言中,总说二维数组是一个特殊的一维数组,在Java中也是这样只不过Java使这一现象更加具体化了。下面用图解和代码进行论述这一现象。从代码与运行后的结果可知Java中的数组的存储方式,类似与左一的这种情况,分为一块一块的。

不规则的二维数组

Java中存在不规则的二维数组,具体案例如下,二维数组的打印使用Arrays.deepToString(arr)。

注意两个块里面存的是地址,地址里面上面存的是数据,因此当仅出现int [][]arr=new int [2][];就会出现空指针异常的情况。

总结

本节主要介绍了,Java中数组和方法与C语言中的区别,期待大佬的指正,创作不易期待各位大佬的一键三连(收藏,关注,点赞)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2073891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java SpringBoot实战教程:如何一步步构建保险业务管理与数据分析系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

LlamaIndex 实现 RAG(三)- 向量数据

RAG 中使用向量存储知识和文档数据,召回时通过语意进行搜索。文档转为向量是个非常消耗时的操作,不同 Embedding Model 参数不同,结果维度也不同,消耗的算力也不同。所以通常的做法都会在索引阶段(Embedding&#xff0…

deeplab3-plus(中文翻译)

** Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation 文章目录 Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation1 Introduction2 Related Work3 Methods3.1 Encoder-Decoder with Atrous Convolution…

鸿蒙南向开发:测试框架xdevice核心组件

简介 xdevice是OpenHarmony中为测试框架的核心组件,提供用例执行所依赖的相关服务。 xdevice主要包括以下几个主要模块: command,用户与测试平台命令行交互模块,提供用户输入命令解析,命令处理。config,…

electron仿微信,高度还原,入门项目

效果展示 Electron仿写微信-效果展示 目前完成了一些基础的功能,还在持续开发中,后期会整理开源。 有些样式没有追求百分百还原,只是通过该项目,让大家了解一下Electron创建桌面应用,各种窗口的创建及销毁、事件传递机…

NLP从零开始------13.文本中阶序列处理之语言模型(1)

语言模型( language model) 用于计算一个文字序列的概率, 评估该序列作为一段文本出现在通用或者特定场景中的可能性。每个人的语言能力蕴涵了一个语言模型,当我们说出或写下一段话的时候,已经在不自觉地应用语言模型来帮助我们决定这段话中的…

viscode 自定义片段,快速生成自己的开发模板

设置 ---> 代码片段 2.选择新建全局代码片段文件 3.根据示例自定义配置代码片段 4.示例:vue prefix:内容--> 代表用于触发代码片段的内容 $1, $2 用于制表位,如 $1 代表生成后第一个输入的位置,$2代表第二个,不用自己移动鼠标 {// Place your snippets f…

Sac格式

本文章只作为自己学习时的用法,不通用,大家可不用参考。 sac格式 0.01000000 -1.569280 1.520640 -12345.00 -12345.009.459999 19.45000 -41.43000 10.46400 -12345.00-12345.00 -12345.00 -12…

SQL注入漏洞的基础知识

目录 SQL注入漏洞的定义和原理 SQL注入的类型和攻击方法 SQL注入的防御措施 示例代码 深入研究 SQL注入漏洞的常见攻击场景有哪些? 如何有效防范SQL注入攻击? SQL注入与跨站脚本攻击(XSS)之间有什么区别? 主要…

每日一练【最大连续1的个数 III】

一、题目描述 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 二、题目解析 本题同样是利用滑动窗口的解法。 首先进入窗口,如果是1,就直接让right,但是如果是…

【软考】树、森林和二叉树之间的相互转换

目录 1. 说明2. 树、森林转换为二叉树2.1 树转成二叉树2.1 森林转成二叉树 3. 二叉树转换为树和森林 1. 说明 1.树、森林和二叉树之间可以互相进行转换,即任何一个森林或一棵树可以对应表示为一棵叉树,而任何一棵二叉树也能对应到一个森林或一棵树上。 …

SSRF复现

目录 环境 分析测试 写入shell 环境 web-ssrfme docker环境 拉取运行 分析测试 进入网站会显示源码 可以看到过滤了file,dict等,但get传参info会执行phpinfo() 可以发现这里网站ip是172.18.0.3,可以使用这个地址绕过waf 测试看是否存在…

如何实现一次搭建 多平台适配的小程序

如何实现一次搭建 多平台适配的小程序 什么是小程序小程序的优势有什么?如果构建小程序,会用在什么领域和场景?如何实现一站式开发多平台的小程序?你希望了解小程序上哪些功能模块的集成能力? 随着微信、支付宝、百度、…

七、Centos安装LDAP--Docker版--已失败

参考博客: docker 安装 OpenLDAP 及 LdapAdmin桌面版、页面版(osixia/openldap)_docker安装ldap-CSDN博客 LDAP使用docker安装部署与使用_memberof ldap docker-CSDN博客 目录 一、安装Docker Docker基本使用 管理镜像 二、拉取LDAP镜像 配置docker国内的镜像…

Java 入门指南:初识 Java 异常(Exception)

初识Java异常 何为异常 在Java中,异常是一个不需要的或意外的事件,它发生在程序执行期间,即在运行时,破坏了程序指令的正常流程。异常可以被程序捕获(catch)和处理(handle)。 方法…

C/C++逆向:寻找main函数(Debug-x86)

在程序的逆向分析中,寻找main函数在逆向分析中是非常重要的,它是程序的核心执行点,从这里开始,程序的主要逻辑开始展开;在这边我们需要明确两个概念:用户入口(User Entry Point) 和 …

【C语言进阶】深入C语言指针:基础到进阶的跨越

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言数据在内存中的存储 🌹🌹期待您的关注 🌹🌹 ❀C语言指针进阶 &a…

Linux中安装java和tomcat(保姆级教程)

java 篇 JDK是用于开发Java应用程序的软件开发工具包。它包含了编译器、调试器、运行时环境和其他一些开发工具,可以帮助开发人员创建、编译、调试和部署Java应用程序。JDK提供了Java编程语言的开发工具和运行时库,使开发人员能够编写和执行Java代码。 …

TypeScript教程(一)之我们为什么要学TypeScript

根据软件开发设计公司 The Software House 针对 2022 年前端市场状态的调查显示,84% 的受访者都在使用 TypeScript,43% 的受访者甚至认为 TypeScript 将超越 JavaScript 成为前端开发的主要语言。TypeScript 这些年越来越火,可以说是前端工程…

影视会员官方渠道api对接

API对接是指两个不同的软件系统或应用程序之间通过API(应用程序编程接口)进行交互的过程。这种交互允许数据和功能的共享,而不必暴露系统的内部工作原理。在影视会员充值场景中,API对接具有以下几个关键特点和优势: 数…