JAVA修炼秘籍第四章《闭关修炼》
往期:
JAVA 修炼秘籍第一章:《痛苦的折磨》
JAVA 修炼秘籍第二章:《逐渐魔化》
JAVA 修炼秘籍第三章:《绝地反击》
文章目录
- 一、方法
- 方法的重载
- 方法递归
- 二、数组
- 获取数组长度与访问数组
- 拷贝数组与以字符串的形式打印数组
一、方法
在JAVA中什么是方法呢,方法其实与C语言中的函数是大相径庭的,方法可以帮助我们更清晰的理解代码,并且可以重复使用重复调用,大大减少了代码的重复性。
方法的书写格式如下:
public class Prog{public static int add(int x,int y){return x+y;}public static void main(String[] args) {int a=3;int b=5;int c=add(a,b);}
}
通过图片来分析代码:
注释部分:
1.在JAVA的方法书写格式与定义中,方法参数可以没有,如果有一定要指定类型。
2.返回值可以没有,如果没有返回值的方法,写上void。
3.方法定义时的参数为形参,方法调用时的参数为实参,形参是实参的一份临时拷贝。
4.方法的定义必须在类中, 调用位置的上方或者下方都可已。
5.方法只会在被调用时运行,不调用则不会。
6.遇到return语句则直接返回,不会继续函数内部后面的代码。
方法的重载
什么是方法的重载,当我想要计算两个正数数相加需要写一个函数,当我想计算两个小数相加又要写一个函数,两个短整型呢?还是很麻烦,这个时候,我们就需要用到重载,可以大大提升我们的代码清晰度,与简洁。不光可以写两个,可以重载很多个。
代码如下:
public static int add(int x,int y){return x+y;}public static double add(double x,double y){return x+y;}public static void main(String[] args) {int a=10;int b=20;double c=2.5;double d=10.3;System.out.println(add(a,b));System.out.println(add(c,d));}
输出结果为:30 12.8。
注释部分:
1.可以看到两个add函数的实现大致相同,他们的作用也相同,不同的点在于他们的参数类型不同,返回值不同。
2.方法名相同。
3.返回值不做要求。
4.参数列表不同,参数个数与参数类型。
5.必须在一个类中。
方法递归
一个方法在执行的过程中调用自身, 就称为递归,递归的程序的执行过程不太容易理解, 要想理解清楚递归, 必须先理解清楚 “方法的执行过程”,
尤其是 方法执行结束 之后, 回到调用位置继续往下执行。
代码部分:计算n的阶乘
public static int factor(int n){if(n==1){return 1;}return n*factor(n-1);}public static void main(String[] args) {int n=5;System.out.println(factor(n));}
注释部分:
1.自身调用自身。
2.要有终止条件。
3.自己能推到出递归公式。
赠送一张图片方便理解:
一定要认真学习并且习惯使用递归,因为在后面一些数据结构中二叉树等都是需要用递归来实现的,递归YYDS,用多了就不难了。
二、数组
在JAVA中数组的使用是非常方便的,数组是多个相同类型的批量创建,数组的定义如下,然后来介绍一下数组的存储形式。
代码如下:
public static void main(String[] args) {int[] arr={1,2,3,4,5};}
注释部分:
1.上面代码转换为中文-》数据类型[ ] 数组名={初始化数据}。
2.这样就用一行代码创建了5个类型为 int 的变量。
3.JAVA中的数组都是在堆上创建的,数组名只是保留了地址。
4.JAVA中栈上的地址是拿不到的,堆上的地址可以拿到,但是不是真的,但是可以看作是真实的。
5.数组的的内存形式如下图所示:
获取数组长度与访问数组
在JAVA中获取数组长度非常简单,随时随地获取,非常简单
代码如下:
public static void main(String[] args) {int[] arr={1,2,3,4,5};System.out.println(arr.length);System.out.println(arr[1];}
注释部分:
1.数组名.length就可以直接计算出当前数组的长度,打印结果为5.
2.数组名[下标],可以直接访问下标所对应的数字,数组的下标是从0开始的,不是1
拷贝数组与以字符串的形式打印数组
拷贝数组其实可以手动实现,也可以使用方便快捷的库方法直接调用,这里介绍这两种数组操作的快捷方法,可以去放心大胆的刷题,自己实现也非常容易.
代码如下:
import java.util.Arrays;(1)
public static void main(String[] args) {int[] arr1={1,2,3,4,5,6};(2)int[] arr2=new int[arr1.length];(3)System.out.println(Arrays.toString(arr1));(4)arr2=Arrays.copyOf(arr1,arr1.length);(5)System.out.println(Arrays.toString(arr2));(6)}
注释部分:(按照代码中(数字)来分析) (1).调用包,使用库方法; (2).创建数组1; (3).创建空数组2,长度为数组1的长度.
(4).输出arr1这个库方法是以字符串的形式打印数组,格式为Arrays.toSring(数组名);
(5).拷贝数组,将arr1中的内容拷贝到arr2中,格式Arrays.copyOf(被拷贝数组名,拷贝长度);
(6)与(4)相同.
数组内容梳理完成,还有二维数组,二维数组与数组大同小异,随处可见,这里就不多比比了,再见.
JAVA修炼秘籍第四章《闭关修炼》相关推荐
- JAVA修炼秘籍第六章《鏖战》
往期: JAVA 修炼秘籍第一章:<痛苦的折磨> JAVA 修炼秘籍第二章:<逐渐魔化> JAVA 修炼秘籍第三章:<绝地反击> JAVA 修炼秘籍第四章:< ...
- Java核心技术卷一 -第四章:方法参数
系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...
- Kali Linux 网络扫描秘籍 第四章 指纹识别(三)
第四章 指纹识别(三) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 4.13 SNMPwalk SNMP 分析 SNMPwalk 是个更加复杂的 SNMP ...
- 【JAVA SE】第四章 变量和方法
第四章 变量和方法 文章目录 第四章 变量和方法 一.变量 1.Java 变量类型 二.方法 1.什么是方法 2.方法的优点 3.方法的命名规则 4.方法的定义 5.方法调用 6.方法的重载 一.变量 ...
- Kali Linux 网络扫描秘籍 第四章 指纹识别(二)
第四章 指纹识别(二) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 4.6 Nmap 服务识别 虽然特征抓取是非常有利的信息来源,服务特征中的版本发现越来越 ...
- Kali Linux 网络扫描秘籍 第四章 指纹识别(一)
第四章 指纹识别(一) 作者:Justin Hutchens 译者:飞龙 协议:CC BY-NC-SA 4.0 4.1 Netcat 特征抓取 Netcat 是个多用途的网络工具,可以用于在 Kali ...
- Kali Linux Web 渗透测试秘籍 第四章 漏洞发现
第四章 漏洞发现 作者:Gilberto Najera-Gutierrez 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 我们现在已经完成了渗透测试的侦查阶段,并且识别了应用所使用的服务器和 ...
- Kali Linux 秘籍 第四章 信息收集
第四章 信息收集 作者:Willie L. Pritchett, David De Smet 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 攻击的重要阶段之一就是信息收集.为了能够实施攻击, ...
- Scikit-learn 秘籍 第四章 使用 scikit-learn 对数据分类
第四章 使用 scikit-learn 对数据分类 作者:Trent Hauck 译者:飞龙 协议:CC BY-NC-SA 4.0 分类在大量语境下都非常重要.例如,如果我们打算自动化一些决策过程,我 ...
最新文章
- * ngIf和* ngFor在同一元素上导致错误
- sql server 2008 64位连接sql 2000服务器出错解决办法
- 聊聊rocketmq的BrokerHousekeepingService
- jetson nano 采坑记录
- 日志插件 log4net 的使用
- php3级分类,关于php非递归三级分类输出json数据
- 正确地实现以太币转账
- java浏览器渲染_优化浏览器渲染
- html实现视频录制,保存和回放
- Verilog中{}的应用
- 【夜读】有些人注定不会失败
- 偏导,梯度,Hesse矩阵的一些概念和求函数的极值
- ClusterStorage-5-配置ACLs与Quotas之设置ACLs
- MKS PI V1.0使用说明书
- 4.4 ipu_param_mem.h头文件分析
- 日本python教程视频_清华学姐推荐的python视频400集,拿走不谢
- 《Java黑皮书基础篇第10版》 第1章【笔记】
- ionic4-ts 字符串中获取汉字与去掉汉字
- java 16进制工具
- 三菱PLC各型号之间的区别
热门文章
- vba 判断文本框内容是否为空_VBA代码用SetFocus精确控制焦点事件
- 软件测试外包到蚂蚁金服,2019蚂蚁金服面试经验(服务运营岗,测试开发工程师等)...
- 【新闻早知道】10月13日 星期日
- poj 4084:拓扑排序
- PHP下拉如何选择比选一个,新手养鱼,如何能够选择一个观赏鱼的最佳饲养模式?其实也不难...
- 详解数据库设计的四个阶段
- 分布式系统的冰与火与技术栈
- 开机、重启和用户登录注销
- vmware 安装openstack,安装mysql,keyston glance,nova
- GUVV-T20GD-U 太阳光紫外线传感器TO-39U韩国GENICOM光电二极管杀菌灯监控