JAVA学习笔记四之方法
2016-05-25 14:29
507 查看
JAVA学习笔记四之方法
一、方法的定义和实现
1、定义方法就是能够完成特定功能的代码块。
2、格式
格式:
修饰符 返回值类型 方法名(数据类型 变量1, 数据类型 变量2, …) {
方法体;
return 返回值;
}
3、位置:
在类的大括号里边定义。
4、解释:
修饰符:public static(面向对象讲解)
返回值类型:功能结果的数据类型。
方法名:其实就是符合标识符规则的一个名称,方便调用的。
参数:
在方法声明上:形式参数 就是接收实际参数的变量
在调用的时候:实际参数 就是参与实际运算的数据
方法体:就是按照正常的逻辑完成功能的代码。
return 返回值:返回值就是功能的结果,只不过它由return带到调用这个方法的地方。
哪里调用,return就把结果返回到哪里。
class FunctionDemo1 { public static void main(String[] args) { // 求a和b的和 int a = 3; int b = 4; int c = a + b; System.out.println(c); // 求x和y的和 int x = 5; int y = 6; int z = x + y; System.out.println(z); // 这两段代码的功能是相同的 } }
二、方法的调用
1、如果你要想写好一个方法,首先你得明确两个知识点:返回值类型:知道结果类型。
参数列表:知道有几个数据参与操作。
2、注意:
方法只有被调用才执行。
3、怎么调用呢?
有明确返回值类型的方法调用。
A:方式一,单独调用。
B:方式二,输出调用,这是有意义的,而且我一般这样用。
但是,这种方式不够好,因为谁说我的计算结果一定要输出呢?
假如我要拿着这个结果继续进行操作,那就做不了了。
C:方式三,赋值调用。推荐方式。
人家返回什么类型,你就用什么类型的接收。
人家要什么类型的,你就给什么类型的。
人家要几个,你就给几个。
class FunctionDemo2 { //我们要写一个方法:求和方法。对两个整数求和 /* 明确: 返回值类型:int 参数列表:int a, int b */ public static int sum(int a, int b) { int result = a + b; return result; } public static void main(String[] args) { int x = 10; int y = 20; //单独调用,没有意义。 //sum(x, y); //输出调用 //System.out.println(sum(x, y)); //赋值调用 //人家返回什么类型,你就用什么类型接收。 int z = sum(x, y); //z += 100; System.out.println(z); } }
4、方法注意事项:
A:方法之间是平级的关系。
B:方法不能嵌套定义。
C:参数之间用逗号隔开。
lass FunctionDemo3 { //比较两个数据是否相同 /* 明确: 返回值类型:boolean 参数列表:int a, int b */ //实现方案有多种 //方式1 /* public static boolean compare(int a, int b) { if (a == b) { return true; }else { return false; } } */ //方式2 /* public static boolean compare(int a, int b) { boolean flag; if (a == b) { flag = true; }else { flag = false; } return flag; } */ //方式3 public static boolean compare(int a, int b) { //boolean flag = (a == b) ? true : false; //return flag; //改进版 //boolean flag = (a == b); //return flag; //最终版 return a == b; } public static void main(String[] args) { int x = 10; int y = 20; boolean flag = compare(x, y); System.out.println(flag); } }
5、请写一个方法实现获取三个数中的最大值,并在main方法中进行测试。
import java.util.Scanner; class FunctionDemo4 { /* 需求:获取三个数中的最大值。 明确: 返回值类型:int 参数列表:int a, int b, int c */ public static int getMax(int a, int b, int c) { //方案一:if语句的嵌套实现 /* if (a > b) { if (a > c){ return a; }else { return c; } }else { if (b > c) { return b; }else { return c; } } */ //方案二:把嵌套内的if用三元运算符改进 /* if (a > b) { return (a > c ? a : c); }else { return (b > c ? b : c); } */ //方案三:三元运算符的嵌套 return ((a > b) ? (a > c ? a : c) : (b > c ? b : c)); } public static void main(String[] args) { //封装键盘录入 Scanner sc = new Scanner(System.in); //输入数据 System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); System.out.println("请输入第三个数据:"); int c = sc.nextInt(); //调用 int result = getMax(a, b, c); System.out.println(result); } }
6、无返回值的方法的调用
一个方法如果没有明确的返回值类型,就用void表示。
void类型的方法如何调用呢?
A:单独调用 可以
B:输出调用 不可以
C:赋值调用 不可以
需求:请写一个方法,输出一句话:给我10块钱。
class FunctionDemo5 { /* 需求:请写一个方法,输出一句话:给我10块钱。 明确: 返回值类型:void 参数列表:空参数 */ public static void printSentence() { System.out.println("给我10块钱。"); } /* 需求:请写出一个函数,输出我传递过来的一个字符串。 明确: 返回值类型:void 参数列表:String s */ public static void printString(String s) { System.out.println(s); } public static void main(String[] args) { //单独调用 printSentence(); //输出调用 //System.out.println(printSentence()); //FunctionDemo2.java:29: 错误: 此处不允许使用 '空' 类型 //赋值调用 //void v = printSentence(); //FunctionDemo2.java:33: 错误: 非法的表达式开始 //带参数的调用 printString("给我10块钱。"); } }
7、请写一个方法,实现输出nn乘法表。(n的取值1-9)
然后在main方法中进行测试。
如果一个变量由两个字符组成,这两个字符的大小写要求一致。
import java.util.Scanner; class FunctionDemo6 { /* 需求:请写一个方法,实现输出nn乘法表。(n的取值1-9) 明确: 返回值类型:void 参数列表:int n */ public static void printnn(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + j*i + "\t"); } System.out.println(); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个数据:"); int n = sc.nextInt(); printnn(n); } }
三、方法的重载
1、由于我们要求对方法取名做到:见名知意。所以,sum2,sum3这样的名字就是有问题的。不满足这个要求。
java针对这种情况:功能一样,而参数不同的方法,可以让它们的方法名称一样。
这种做法被称为:方法重载。
方法重载:
方法名相同,参数列表不同。跟返回值无关。
参数列表:个数不同,或者类型不同。
需求:写一个方法,实现求数据的和。
class FunctionDemo7 { //两个数据的和 public static int sum(int a, int b) { return a + b; } /* //三个数据的和 public static int sum2(int a, int b, int c) { return a + b + c; } //四个数据的和 public static int sum3(int a, int b, int c, int d) { return a + b + c + d; } */ //三个数据的和 public static int sum(int a, int b, int c) { return a + b + c; } //四个数据的和 public static int sum(int a, int b, int c, int d) { return a + b + c + d; } public static float sum(float a, float b) { return a + b; } public static void main(String[] args) { int a = 10; int b = 20; int c = 30; int d = 40; float x = 3.8f; float y = 4.5f; /* //输出调用 System.out.println("sum(int a, int b):" + sum(a, b)); System.out.println("sum2(int a, int b, int c):" + sum2(a, b, c)); System.out.println("sum3(int a, int b, int c, int d):" + sum3(a, b, c, d)); */ System.out.println("sum(int a, int b):" + sum(a, b)); System.out.println("sum(int a, int b, int c):" + sum(a, b, c)); System.out.println("sum(int a, int b, int c, int d):" + sum(a, b, c, d)); System.out.println("sum(float a, float b):" + sum(x, y)); } }
2、请自己写几个方法,分别实现int类型,short类型,long类型,byte类型的两个数据是否相等。
最后在main方法中进行测试。
class FunctionDemo8 { /* public static boolean compare(int a, int b) { System.out.print("int:"); return a == b; } */ public static boolean compare(short a, short b) { System.out.print("short:"); return a == b; } public static boolean compare(long a, long b) { System.out.print("long:"); return a == b; } public static boolean compare(byte a, byte b) { System.out.print("byte:"); return a == b; } public static void main(String[] args) { //这个测试走的是谁呢? //走的是int类型的那个比较,因为整数,默认是int类型。 //没有int就向上匹配 System.out.println(compare(10, 20)); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树