JAVA-方法学习
方法的定义
JAVA语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。
方法头和方法体的定义
定义方法的部分
修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变
量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以
不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名 (参数类型 参数名){
***
方法体
***
}
自定义的方法实例
比大小
public class Max {
public static void main(String[] args) {
System.out.println(max(20, 20));
}
public static int max(int num1,int num2){
int result =0;
if (num1==num2){
System.out.println("两数相等");
return 0 ; //返回会输出0
}
if(num1>num2){
result = num1;
}else{
result = num2;
}
return result;
}
}
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不相同的函数
方法重载的规则
- 方法名称必须相同
- 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
- 方法的返回类型不做要求
- 仅仅返回类型不同不足以成为方法的重载
命令行传参
在Dos命令中编译的注意事项:
Dos命令传参遇到的问题
问题一:编码问题
text.java:5: 错误: 编码GBK的不可映射字符
解决: 在编译时改为UTF-8 格式
javac -encoding UTF-8 text.java
问题二:错误: 找不到或无法加载主类 text
解决因为涉及到多个独立库之间的调用,因此要回到根目录下执行
但是编译时需要在最详细的目录下编译,具体到文件
问题三:java text.text This is China
在Dos命令下传入参数-->This is China
即在运行Java 文件后直接导入 参数
源码呈现
package text;
public class text {
public static void main(String[] args) {
for (int i = 0; i < args.length ; i++) { //fori 回车 快速写一个for循环
System.out.println("agr["+i+"]:"+args[i]);
}
}
}
调用可变参数
释意:参数的不确定个数定义(数组的一种呈现)
但一个方法只能定义一个可变参数,且需要定义在该方法参数的最后
可变参数的错误定义
public static int printMax(double...x,int y)
报错:
Vararg parameter must be the last in the list
可变参数的正确定义
public class text {
public static void main(String[] args) {
printMax(12,12,23,34,56,7,8);
}
public static void printMax(int...number){
int result = 0;
result = number[0];
for (int i = 0; i <number.length ; i++) {
if (number[i]>result){
result = number[i];
}
} //最大值为:56
System.out.println("最大值为:"+result);
}
}
public void test(int...i)
test.test(1,2,3,4,56,7)
对参数i数组化,使其可以只定义一个变量表示多个元素节省变量的定义数量
public class text {
public static void main(String[] args) {
text test = new text();
test.test(1,2,3,4,56,7);
}
public void test(int...i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
}
}
定义静态参数变量的好处(便于调用)
public class text {
public static void main(String[] args) {
test(1,2,3,4,56,7);
}
public static void test(int...i) {
System.out.println(i[0]);
}
}
在此部分
public static void main(String[] args) {
test(1,2,3,4,56,7);
}
可以省去
text test = new text();
test.test(1,2,3,4,56,7);
的定义过程(对新手友好,可以直接调用写好的方法)
方法中的递归思想
示例一:用递归实现阶乘
public class text {
public static void main(String[] args) {
System.out.println(f(4));//结果为24
}
//实现阶乘的递归写法
public static int f(int n){
if (n==1){
return 1;
}else{
return n*f(n-1);
}
}
}
实例二:用递归实现累加
public class text {
public static void main(String[] args) {
System.out.println(f(4));//结果为10
}
//实现阶乘的递归写法
public static int f(int n){
if (n==1){
return 1;
}else{
return n+f(n-1);
}
}
}
原文地址:https://www.cnblogs.com/chendanyu/p/15081239.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Flutter 学习路线图
- Flutter 强大的MediaQuery控件
- 基于web的图书管理系统设计与实现
- 《Flutter 动画系列一》25种动画组件超全总结
- 网工小白升级打怪篇(三)ssh实现远程管理
- 贪吃蛇的使命 | 零基础入门贪吃蛇游戏(附源码、演示地址)
- Java开发岗面试题--基础篇(二)
- C++核心准则T.48:如果你的编译器不支持concepts,使用enable_if模仿它
- 《Flutter 动画系列》组合动画
- Flutter 完美的验证码输入框
- 【送红宝书】JavaScript 测试系列实战(四):掌握 React Hooks 测试技巧
- Spring 自定义注解你了解过吗?
- 《Flutter 小技巧》一行禁用App,一行置灰App,致敬
- 字符串:总结篇!
- 3 个助你玩转正则表达式的利器