文章目录
1. IntelliJ IDEA 集成开发环境
IDEA — Integrated Development Environment,集成开发环境。
1.1. IDEA 项目结构
- 项目—模块–包—结构:
- 新建一个项目(project):
- 创建模块(module):
- 这里我们创建了一个名为day06-code的模块(module)注意:。所有的代码都要写在src文件夹中,day06-code.iml存放一些配置信息,不用管;External Libraries就是JDK。
- 然后创建包(package):
- 给包取名的要求:一般只使用英文小写,还有数据和英文句点。一般使用公司的域名,然后倒过来,例如公司域名为:itcast.cn,倒过来就是cn.itcast。这里我们命名这个包为:cn.itcast.day06.demo01。注意在这里:英文句点是起分隔作用,在这里有四个层级文件夹的嵌套;因为包是一组文件的名称。
- 创建成功之后,就是这样的:
- 之后在创建一个cn.itcast.day06.demo02的包:
- 然后最终项目结构如下图所示:
- 然后就可以在新建的包cn.itcast.day04.demo01中创建一个HelloWorld的类。.class文件自动生成,保存在项目文件夹中的out文件夹。
- 如果想新建新的模块(module):File --> New --> Module
1.2. IDEA常用设置
-
字体、外观设置:File --> setting
-
自动补全:File --> setting --> keymap
1.3. IDEA常用快捷键
1.4. 导入一个新的module
File --> Project Structure --> Module --> 点击“+”
2. 方法
2.1. 简介
-
方法定义的注意事项:
- 方法定义的顺序无所谓。
- 方法定义必须是挨着的,不能再一个方法内部定义另外一个方法。
- 方法定义之后不会自动执行,要调用。
-
定义方法的完整格式:
修饰符 返回值类型 方法名称 (参数类型 参数名称,...) { 方法体; return 返回值; }
-
修饰符:现阶段固定写法:
public static
-
返回值类型:
-
方法名字:方法的命名和变量一样,小驼峰。
-
参数类型:
-
参数名称:
-
return:注意:return后面的返回值必须和方法名称前面的返回值类型,保持对应。
return的两个作用:
- 停止当前方法
- 将后买你的结果数据返回给调用出
-
2.2. 三种方法调用格式
定义一个两个int数字相加的方法:
- 单独调用:
方法名称(参数);
- 打印调用:
System.out.println(方法名称(参数));
- 赋值调用:
数据类型 变量名称 = 方法名称(参数)
package cn.itcast.day04.demo02;
public class Demo02MethodDefine {
public static void main(String[] args) {
// 1.单独调用:
sum(10, 20);
// 2.打印调用:
System.out.println(sum(10,20));
// 3.赋值调用:
int num = sum(15,25);
System.out.println(num);
}
public static int sum(int a, int b) {
int result = a + b;
return result;
}
}
- 注意:此前学习的方法,返回值类型固定写为
void
,这种方法只能单独调用,不能进行打印调用或者赋值调用。
2.3. 对比有参数和无参数的情况
package cn.itcast.day04.demo02;
public class Demo03MethodParam {
public static void main(String[] args) {
method1(10,20);
method2();
}
// 1.有参数:
public static void method1(int a, int b) {
int result = a * b;
System.out.println(result);
}
// 2.无参数:
public static void method2() {
for(int i = 0; i <= 10; i++) {
System.out.println("Hello World" + i);
}
}
}
2.4. 对比有无返回值
注意事项:
- 对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。
- 对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。
2.5. 练习
- 定义一个方法,判断两个数字是否相同:
package cn.itcast.day04.demo03;
public class Demo01MethodSame {
public static void main(String[] args) {
System.out.println(isSame(10, 20));
;
}
// 方法1:
// public static boolean isSame(int a, int b) {
// if (a == b) {
// return true;
// } else {
// return false;
// }
// }
// 方法2:
// public static boolean isSame(int a, int b) {
// return a == b;
// }
// 方法3:
// public static boolean isSame(int a, int b) {
// boolean same;
// same = a == b;
// return same;
// }
// 方法4:
public static boolean isSame(int a, int b) {
boolean same = a == b ? true : false;
return same;
}
}
- 求出1–100的所有的和:
package cn.itcast.day04.demo03;
public class Demo02MethodSum {
public static void main(String[] args) {
System.out.println("输出结果是:" + getSum());
}
public static int getSum() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
}
- 定义一个方法,用来打印指定次数的HelloWorld。
package cn.itcast.day04.demo03;
public class Demo03MethodPrint {
public static void main(String[] args) {
printCount(9);
}
public static void printCount(int num){
for (int i = 0; i < num; i++) {
System.out.println("Hello World" + (i + 1));
}
}
}
2.6. 方法的注意事项
-
不能嵌套:方法应该定义在类当中,但是不能再方法中再定义方法。
-
方法执行的定义前后顺序无所谓。
-
方法有三种调用模式:1. 单独调用;2. 打印调用;3. 复制调用
-
如果方法有返回值,那么必须写上:
return 返回值;
-
return后面的返回值数据,必须和方法返回类型对应起来。
-
对于一个
void
没有返回值的方法,不能写return后面的返回值,只能写return自己(一般不会写)。 -
对于方法当中最后一行的return可以省略不写。
-
一个方法中可以有多个return语句,但是要保证只有一个会被执行。
package cn.itcast.day04.demo03;
public class Demo04MethodNotice {
public static void main(String[] args) {
}
public static int method1() {
return 10;
}
public static void method2() {
return; // 没有返回值,知识结束方法执行而已
}
public static void method3() {
System.out.println("AAA");
System.out.println("BBB");
//return; // 最后一行return可以不写
}
}
2.7. 方法的重载
-
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。所以有了方法的重载(overload):多个方法的名称名一样,但是参数列表不一样。
-
好处:只需要记住唯一一个方法的名称,就可以实现类似的功能。
-
对比,Python中没有方法的重载(overload)
为什么Python不需要重载?转载与 知乎文章
https://www.zhihu.com/question/20053359
这个问题,最近在 cpyug 上面讨论得很火热。我简要概括一下。为了考虑为什么 python 不提供函数重载,首先我们要研究为什么需要提供函数重载。
函数重载主要是为了解决两个问题。
1。可变参数类型。
2。可变参数个数。
另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。
好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。
那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。=
-
方法重载与下列因素相关:
- 参数个数不同。
- 参数类型不同。
- 参数的多类型顺序不同。
-
方法重载与下列因素无关:
- 与参数的名称无关。
- 与方法的返回类型无关。
package cn.itcast.day04.demo04;
public class Demo01MethodOverload {
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));
System.out.println(sum(10,20,30,40));
}
public static int sum(int a, int b) {
return a + b;
}
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;
}
}
2.8. 方法的重载练习
- 比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型。并在main方法中进行测试。
package cn.itcast.day04.demo04;
public class Demo02MethodOverloadSame {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
System.out.println(isSame(a,b));
System.out.println(isSame((short) 20, (short) 20));
System.out.println(isSame(10, 11));
System.out.println(isSame(10L, 11L));
}
public static boolean isSame(byte a, byte b) {
System.out.println("两个byte参数方法执行。");
boolean same;
if (a == b) {
same = true;
} else {
same = false;
}
return same;
}
public static boolean isSame(short a, short b) {
System.out.println("两个short参数方法执行。");
boolean same = a == b ? true : false;
return same;
}
public static boolean isSame(int a, int b) {
System.out.println("两个int参数方法执行。");
return a == b;
}
public static boolean isSame(long a, long b) {
System.out.println("两个long参数方法执行。");
return a == b;
}
}
- 判断下列那些方法是重载关系。
public static void open(){} // 正确重载
public static void open(int a){} // 正确重载
static void open(int a,int b){} // 代码错误,和第8行冲突
public static void open(double a,int b){} // 正确重载
public static void open(int a,double b){} // 代码错误,和第5行冲突
public void open(int i,double d){} // 代码错误,和第5行冲突
public static void OPEN(){} // 代码正确不会报错,但不是有效重载
public static void open(int i,int j){} // 代码错误,和第3行冲突
- 模拟输出语句中的
println
方法效果,传递什么类型的数据就输出什么类型的数据,只允许定义一个方法名println
。
package cn.itcast.day04.demo04;
public class Demo04OverloadPrint {
public static void main(String[] args) {
println(100);
println("AAAAA");
}
public static void println(byte a) {
System.out.println(a);
}
public static void println(short a) {
System.out.println(a);
}
public static void println(int a) {
System.out.println(a);
}
public static void println(long a) {
System.out.println(a);
}
public static void println(float a) {
System.out.println(a);
}
public static void println(double a) {
System.out.println(a);
}
public static void println(char a) {
System.out.println(a);
}
public static void println(boolean a) {
System.out.println(a);
}
public static void println(String a) {
System.out.println(a);
}
}