第一章 开发工具IntelliJ IDEA
1.1 概述
IDEA是一个专门针对Java的集成开发工具(IDE),由Java语言编写。所以,需要有JRE运行环境并配置好环境变量。 它可以极大地提升我们的开发效率。可以自动编译,检查错误。
1.2 安装
双击安装包进行安装
欢迎界面
无脑Next选择安装路径
不要装在C盘配置安装选项
建议只勾选64快捷启动方式开始菜单
无脑Next安装完毕
1.3首次启动
不导入任何设置
- 选择第二个,ok
创建一个项目
项目结构
点击 new 按钮,配置安装的 JDK9 版本
不使用模板
为工程起名字 demo ,并存储到 d:\ideawork\demo 目录下,如果d盘没有这个目录,会自动创建
1.4idea常用快捷键

=========================================================================================================
| Alt+回车 | 导入包,自动修正 |
|---|---|
| Ctrl+N | 查找类 |
| Ctrl+Shift+N | 查找文件 |
| Ctrl+Alt+L | 格式化代码 |
| Ctrl+Alt+O | 优化导入的类和包 |
| Alt+Insert | 生成代码(如get,set方法,构造函数等) |
| Ctrl+E或者Alt+Shift+C | 最近更改的代码 |
| Ctrl+R | 替换文本 |
| Ctrl+F | 查找文本 |
| Ctrl+Shift+Space | 自动补全代码 |
| Ctrl+空格 | 代码提示 |
| Ctrl+Alt+Space | 类名或接口名提示 |
| Ctrl+P | 方法参数提示 |
| Ctrl+Shift+Alt+N | 查找类中的方法或变量 |
| Alt+Shift+C | 对比最近修改的代码 |
| Shift+F6 | 重构-重命名 |
| Ctrl+X | 删除行 |
| Ctrl+D | 复制行 |
| Ctrl+/ 或 Ctrl+Shift+/ | 注释(// 或者/…/ ) |
| Ctrl+J | 自动代码 |
| Ctrl+E | 最近打开的文件 |
| Ctrl+H | 显示类结构图 |
| Ctrl+Q | 显示注释文档 |
| Alt+F1 | 查找代码所在位置 |
| Alt+1 | 快速打开或隐藏工程面板 |
| Ctrl+Alt+ left/right | 返回至上次浏览的位置 |
| Alt+ left/right | 切换代码视图 |
| Alt+ Up/Down | 在方法间快速移动定位 |
| Ctrl+Shift+Up/Down | 代码向上/下移动。 |
| F2 或Shift+F2 | 高亮错误或警告快速定位 |
| 代码标签输入完成后 | 按Tab,生成代码。 |
| 选中文本,按Ctrl+Shift+F7 | 高亮显示所有该文本,按Esc高亮消失。 |
| Ctrl+W | 选中代码,连续按会有其他效果 |
| 选中文本,按Alt+F3 | 逐个往下查找相同文本,并高亮显示。 |
| Ctrl+Up/Down | 光标跳转到第一行或最后一行下 |
| Ctrl+B | 快速打开光标处的类或方法 |
第二章 方法
2.1回顾—方法的定义与调用
前面的课程中,使用过嵌套循环输出矩形,控制台打印出矩形就可以了,因此将方法定义为 void ,没有返回值。 在主方法 main 中直接被调用。
/** 方法入门基础知识** 定义格式:* public static void 方法名称() {* 方法体;* }** 调用格式:* 方法名称();** 注意事项:* 1,方法定义先后顺序无所谓* 2,方法定义必须是挨着的,不能在一个方法内定义另一个方法* 3,方法定义之后,自己不会执行,只有在调用后才会执行*/public class Demo01Method {public static void main(String[] args) {printMenthod();}public static void printMenthod() {for (int i = 0; i < 5; i++) {for (int i1 = 0; i1 < 20; i1++) {System.out.print("*");}System.out.println();}}}
print 方法被 main 方法调用后直接输出结果,而 main 方法并不需要 print 方法的执行结果,不需要返回值,所以被定义为 void 。
2.2方法的格式及含义
格式:
修饰符 返回值类型 方法名称(参数类型 参数名称,...) {方法体;return 返回值;}
格式含义:
修饰符:现阶段的固定写法:public static
返回值类型:就是方法最终产生的数据结果的类型
方法名称:方法的名字,规则和变量一样,小驼峰
参数类型:进入方法的参数的数据类型
- PS:如果有多个参数,使用逗号进行分割
方法体:方法需要做的事情,若干行代码
return:两个作用,一是停止当前方法,二是将后面的返回值还给调用处
返回值:也就是方法执行后最终产生的数据
- 注意:return后面的“返回值”,必须和方法名称前面的“返回值类型”保持对应
方法的三要素:
- 返回数据类型
- 方法名称
- 参数列表
2.3方法的调用
方法的三种调用格式:
1,单独调用:方法名称(参数)
2,输出调用:System.out.println(方法名称(参数));
3,赋值调用:数据类型 变量名称 = 方法名称(参数);
注意:此前学习的方法,返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或则赋值调用
2.4调用方法的流程
1,找到方法
2,参数传递
3,执行方法体
4,带着返回值回到方法的调用处

package JavaRumen.Java04.demo02;/** 方法其实就是若干语句的功能集合** 方法好比是一个工厂* 蒙牛工厂 原料:奶牛、饲料、水* 产出物:奶制品** 钢铁工厂 原料:铁矿石】煤炭* 产出物:钢铁建材** 参数(原料):就是进入方法的数据* 返回值(产出物):就是从方法中出来的数据** 定义方法的完整格式:* 修饰符 返回值类型 方法名称(参数类型 参数名称,...) {* 方法体;* return 返回值;* }** 修饰符:现阶段的固定写法:public static* 返回值类型:就是方法最终产生的数据结果的类型* 方法名称:方法的名字,规则和变量一样,小驼峰* 参数类型:进入方法的参数的数据类型* PS:如果有多个参数,使用逗号进行分割* 方法体:方法需要做的事情,若干行代码* return:两个作用,一是停止当前方法,二是将后面的返回值还给调用处* 返回值:也就是方法执行后最终产生的数据* 注意:return后面的“返回值”,必须和方法名称前面的“返回值类型”保持对应** 定义一个两个int数字相加的方法,三要素* 返回数据类型:int* 方法名称:sum* 参数列表:int a, int b;** 方法的三种调用格式:* 1,单独调用:方法名称(参数)* 2,输出调用:System.out.println(方法名称(参数));* 3,赋值调用:数据类型 变量名称 = 方法名称(参数);** 注意:此前学习的方法,返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或则赋值调用** 方法调用的流程* 1,找到方法* 2,参数传递* 3,执行方法体* 4,带着返回值回到方法的调用处* */public class Demo02MethodDefine {public static void main(String[] args) {// 单独调用sum(10, 20);System.out.println("=============");// 输出调用System.out.println(sum(11, 22));System.out.println("=============");// 赋值调用int number= sum(3, 7);System.out.println("变量的值" + number);}public static int sum(int a, int b){System.out.println("方法执行了!");// int result = a + b;// return result; // 变量声明和赋值占用了内存,造成了冗余,建议使用精简版return a + b; // 精简版}}
2.5方法参数的有无
有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数
- 例如:两个数子相加,必须知道数字的值是多少,才能相加
无参数:小括号当中留空,一个方法不需要任何数据条件,自己就能完成任务,就是无参数
- 例如:定义一个方法,打印固定10此HelloWorld!
package JavaRumen.Java04.demo02;/** 有参数:小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数* 例如:两个数子相加,必须知道数字的值是多少,才能相加* 无参数:小括号当中留空,一个方法不需要任何数据条件,自己就能完成任务,就是无参数* 例如:定义一个方法,打印固定10此HelloWorld!* */public class Demo03MethodParam {public static void main(String[] args) {method1(10, 7);System.out.println("=============");method02();}// 两个数字相乘,做乘法,必须知道数据的值,否者无法计算// 有参数public static void method1(int a, int b){int result = a * b;System.out.println("结果是" + result);}// 打印输出10此文本字符串,不需要参数,可以自己完成// 无参数public static void method02(){for (int i = 0; i < 10; i++) {System.out.println("Hello world!" + i);}}}
2.6方法返回值的有无
有:对于有返回值的方法,可以使用单独调用、打印调用和赋值调用【必须写返回值】
无:但是对于无返回值的方法,只能使用单独调用,不呢个使用打印调用或则赋值调用【必须不写返回值】
package JavaRumen.Java04.demo02;/** 题目要求:定义一个方法,用来【求出】两个数据之和,(你帮我算,算完之后把结果告诉我)* 题目变形:定义一个方法,用来【打印】两个数据之和。(你来计算,算完之后你自己负责显示结果,不用告诉我)** 注意事项:* 对于有返回值的方法,可以使用单独调用、打印调用和赋值调用(必须写返回值)* 但是对于无返回值的方法,只能使用单独调用,不呢个使用打印调用或则赋值调用(必须不屑返回值)* */public class Demo04MethodReturn {public static void main(String[] args) {// 我是main方法,我来调用你// 我调用你,你来帮我计算一下,算完之后,把结果告诉我的num变量int num = getSum(10, 20);System.out.println("返回值是" + num);System.out.println("==============");printSum(100, 200);System.out.println("==============");System.out.println(getSum(2, 3)); // 正确写法getSum(3, 5); // 正确写法,但是没有用到返回值System.out.println("==============");// 对于void没有返回值的方法,只能单独,不能打印或者赋值// System.out.println(printSum(2, 3)); // 错误写法// int num2 = printSum(2, 3); // 错误写法}// 我是一个方法,我负责两个数字相加// 我有返回值int,谁调用我,我就把计算结果告诉谁public static int getSum(int a, int b){int result = a + b;return result;}// 我是一个返回值,我负责两个数字相加// 我没有返回值,不会把结果告诉任何人,而是我自己进行打印输出public static void printSum(int a, int b){int result = a + b;System.out.println(result);}}
2.7方法的练习
1,定义一个方法,用来判断两个数字是否相同
package JavaRumen.Java04.demo03;/** 题目要求:* 定义一个方法,用来判断两个数字是否相同* */public class Demo01MethodSame {public static void main(String[] args) {// if (isSame(10, 10)) {// System.out.println("两个数字的值相等");// }else {// System.out.println("两个数字不相等");// }System.out.println(isSame(10, 20)); // falseSystem.out.println(isSame(10, 10)); // true}/** 三要素:* 返回值类型:boolean* 方法名称:isSame* 参数列表:int a, int b* */public static boolean isSame(int a, int b){// boolean same;// if (a == b) {// same = true;// }else {// same = false;// }// boolean same = a == b ? true: false;// boolean same = a == b;return a == b;}}
2,定义一个方法,用来求出1-100的累加和
package JavaRumen.Java04.demo03;/** 定义一个方法,用来求出1-100的累加和* */public class Demo02MethodSum {public static void main(String[] args) {sum1();System.out.println("===================");System.out.println("1-100的累加和是" + sum2());}/** 三要素* 返回值:有返回值,计算结果是个int* 方法名称:getSum* 参数列表:数据范围已确定,为固定,不需要数据条件,无参数* */public static void sum1(){int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}System.out.println("1-100的累加和是" + sum);}public static int sum2(){int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}return sum;}}
3,定义一个方法用来打印指定要求的HelloWorld
package JavaRumen.Java04.demo03;/** 题目要求:* 定义一个方法用来打印指定要求的HelloWorld* */public class Demo03MethodPrint {public static void main(String[] args) {printCount(10);}/** 三要素:* 返回值:只是打印操作,无计算,无结果,不需要返回值* 参数名称:printCount* 参数列表:打印次数* */public static void printCount(int num ) {for (int i = 1; i <= num; i++) {System.out.println("Hello World!" + i);}}}
2.8 方法的注意事项
1,方法应该定义在类中,但是不能在方法中再定义方法。不能嵌套
2,方法定义的前后顺序无所谓
3,方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用
4,如果方法有返回值,那么必须写上“return 返回值”,不能没有
5,return后面的返回值数据,必须和方法的返回值类型对应
6,对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己
7,对于void方法当中的最后一行的return可以省略不写
8,一个方法中可以有多个return语句,但是必须保证同时只有一个return会被执行到,两个return不能连写
package JavaRumen.Java04.demo03;/** 使用方法时的注意事项:* 1,方法应该定义在类中,但是不能在方法中再定义方法。不能嵌套* 2,方法定义的前后顺序无所谓* 3,方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用* 4,如果方法有返回值,那么必须写上“return 返回值”,不能没有* 5,return后面的返回值数据,必须和方法的返回值类型对应* 6,对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己* 7,对于void方法当中的最后一行的return可以省略不写* 8,一个方法中可以有多个return语句,但是必须保证同时只有一个return会被执行到,两个return不能连写** */public class Demo04MethodNotice {public static void main(String[] args) {System.out.println(getMax(10, 20));}public static int method1() {return 10;}public static void method2() {// return 10; // 错误写法! void方法没有返回值,return后面不能写返回值return; // 没有返回值,作用:结束方法执行}public static void method3() {System.out.println("AAA");System.out.println("BBB");// return; // void方法的最后一行的return可以不写}public static int getMax(int a, int b) {// int max;// if (a > b) {// max = a;// }else {// max = b;// }// return max;if (a > b) {return a;// return a;}else {return b;}// return a > b ? a : b;}}
2.9 方法的重载
概念
方法的重载(Overload):多个方法名称一样,但是参数列表不一样
重载的相关因素
不同时,可以建立重载
1,参数个体不同
2,参数类型不同
3,参数的多类型顺序不同
重载的无关因素
不同时,无法建立重载,会报错
1,与参数的名称无关
2,与方法返回值类型无关
package JavaRumen.Java04.demo04;/** 对于功能类似的方法来说,因为参数列表的不一样,却要记住很多不同的方法名称,太麻烦** 方法的重载(Overload):多个方法名称一样,但是参数列表不一样* 好处:只要记住一个方法名称就可以实现类似的多个功能** 方法的重载与下列因素相关(不同时,可以建立重载)* 1,参数个体不同* 2,参数类型不同* 3,参数的多类型顺序不同** 方法的重载与下列因素相关(不同时,无法建立重载,会报错)* 1,与参数的名称无关* 2,与方法返回值类型无关* */public class Demo01MethodOverload {public static void main(String[] args) {/*System.out.println(sumTwo(10, 20)); // 30System.out.println(sumThree(10, 20,30)); // 60System.out.println(sumFour(10, 20, 30, 40)); // 100*/System.out.println(sum(10, 20)); // 两个参数的方法System.out.println(sum(10, 20, 30)); // 三个参数的方法System.out.println(sum(10, 20, 30, 40)); // 四个参数的方法// System.out.println(sum(10, 20, 30, 40, 50)); // 找不到任何方法来匹配,所以错误}public static int sum(int a , double b) {return (int) (a + b);}public static int sum(double a , int b) {return (int) (a + b);}public static int sum(int a, int b) {System.out.println("有2个参数的方法在执行");return a + b ;}// 错误写法!重载与返回值数据类型无关// public static double sum(int a, int b) {// return (a + b + 0.0) ;// }// 错误写法,重载与参数名称无关// public static int sum(int x, int y) {// return x + y ;// }public static int sum(int a, int b, int c) {System.out.println("有3个参数的方法在执行");return a + b + c ;}public static int sum(int a, int b, int c, int d) {System.out.println("有4个参数的方法在执行");return a + b + c + d;}}
重载的练习
1,比较两个数据是否相等
package JavaRumen.Java04.demo04;/** 题目要求:* 比较两个数据是否相等* 参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,* 并在main方法中进行测试* */public class Demo02MethodOverloadSame {public static void main(String[] args) {byte num1 = 10, num2 = 20;System.out.println( isSame(num1, num2) );System.out.println( isSame( (byte)20, (byte)20) );short num3 = 20, num4 = 20;System.out.println( isSame(num3, num4) );System.out.println( isSame( (short)11, (short)21 ) );System.out.println( isSame(10, 20) );long num5 = 100L, num6 = 90L;System.out.println( isSame(num5, num6) );System.out.println( isSame( 200L, 200L ) );}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的方法执行");if (a == b) {return true;}else {return false;}}public static boolean isSame(int a, int b) {System.out.println("两个int的方法执行");return a == b ? true : false;}public static boolean isSame(long a, long b) {System.out.println("两个long的方法执行");return a == b;}}
2,判断哪些方法是重载关系
public static void open(){}public static void open(int a){}static void open(int a,int b){}public static void open(double a,int b){}public static void open(int a,double b){}public void open(int i,double d){}public static void OPEN(){}public static void open(int i,int j){}
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){} // 代码错误,与第6行冲突public void open(int i,double d){} // 代码错误,与第5行冲突public static void OPEN(){} // 代码真确,但不是有效重载public static void open(int i,int j){} // 代码错误,与第3行冲突
方法重载关系的判断
方法重载的主要形式有:参数的个体不同、参数的类型不同、参数的顺序不同,与形参变量名和返回值类型无关,但建议返回值类型最好相同判断方法是否重载的核心:调用能否区分
3,实现重载的println方法
package JavaRumen.Java04.demo04;// byte short int long float double char boolean// String// 在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式public class Demo04OverloadPrint {public static void main(String[] args) {myPrint(3.14);myPrint("ddd");myPrint('3');}public static void myPrint(byte num) {System.out.println(num);}public static void myPrint(short num) {System.out.println(num);}public static void myPrint(int num) {System.out.println(num);}public static void myPrint(long num) {System.out.println(num);}public static void myPrint(float num) {System.out.println(num);}public static void myPrint(double num) {System.out.println(num);}public static void myPrint(char zifu) {System.out.println(zifu);}public static void myPrint(boolean is) {System.out.println(is);}public static void myPrint(String str) {System.out.println(str);}}// 10.fori 快捷创建10此循环//
