第一章 开发工具Intellij IDEA
1.1 开发工具概述
- 集成开发软件(IDE):是一种专门用来提高Java(软件)开发效率的软件
- 免费IDE:eclipse
- 收费IDE:IDEA(使用最多)
1.2 IDEA安装
- 下载地址:www.jetbrains.com
- 下载Ultimate
1.3 IDEA项目结构(教学流程)
- 选Empty project
- 创建java项目,选JDK位置
- 创建项目
- src——>创建包cn.gxw.demo(全小写)
1.4 IDEA的Hello World
- 创类HelloWorld
- psvm + space——>main方法
- sout + space——>输出语句
- run
- alt + 4——>弹出run运行框
注:++.class++文件在项目目录里没有,它只负责++运行++程序,所以不显示
1.5 IDEA的基本配置
- file->setting
- 改字体:Editor->Font
1.6 IDEA的常用快捷键
- ++alt + enter——>自动修复代码(eclipse:alt+/)++
- ctrl + y——>光标处删除一行
- ctrl + d——>光标处向下复制所在行内容
- ctrl + alt + L——>格式化代码(自动对齐所有代码):(eclipse:shift+ctrl+f)
- ctrl + /——>单行注释
- ctrl + shift + /——>多行注释
- ++alt + Ins(insert)——>自动生成toString,get,set(eclipse:shift+alt+s)++
- alt + shift + 上下键——>移动++代码行++
- 注:修改快捷键File->Setting->Keymap->Main menu->Code->Completion->Basic
1.6 IDEA项目的关闭打开,模块导入
- 删除:项目右键Remove Module(模块)
- 导入:Project Structure->Module->Import Module
- 导入后:Setup SDK(软件开发工具包)
第二章 方法
2.1 回顾方法定义和调用
- 简单格式:
定义: public static void 方法名称(){ 方法体; } 调用: 方法名称(); ------------------------------ 例: public static void main(String[] args){ pointMethod(); } public static void pointMethod(){ for(int i = 0 ; i < 5; i++){ for(int j = 0; j < 20; j++){ System.out.print("*"); } System.out.println(); } }
- 注: 5.fori——>for循环for(int i = 0; i < 5; i++)
- 注:定义无先后顺序
- 注:不能在一个方法内部再定义一个方法
2.2 方法定义格式
- 方法:其实就是若干语句功能的集合
- 参数(原料):就是进入方法的数据
- 返回值(产出物):就是从方法中出来的数据
- 定义标准格式:
//参数多个用,隔开 //方法体写的是方法要做的事若干行 访问修饰符 返回值类型 方法名称(参数类型 参数名称,...){ 方法体; return 返回值; //功能:停止及值返回给调用处 }
- 注:return后面的++返回值++,必须和方法名称前面的返回值++类型对应++。
- 方法理解:
- 方法(工厂)——可能会有很多方法
- 奶牛工厂
- 原料:牛奶,饲料,水
- 产出物:奶制品
2.3 方法三种调用格式
- 单独调用:方法名称(参数);
- 打印调用:System.out.println(方法名称(参数)); //先调用方法,方法再返回自己的返回值
- 赋值调用:数据类型 变量名称 = 方法名称(参数);
- 注:void不能打印和赋值
2.2 方法流程
- 调用方法
- 找到方法
- 参数传递
- 执行方法体
- 带着返回值回到方法的调用处
2.4 对比有参和无参
- 有参数:小括号当中有内容
- 当一个方法需要一些数据条件,才能完成任务的时候,就是有参数
- 无参数:小括号当中没有内容
- 当一个方法不需要一些数据条件,能够独立完成,就是无参数
public static void main(String[] args) { method1(10, 20); System.out.println("==================="); method2(); } public static void method1(int a, int b){//相乘需要参数 int result = a * b; System.out.println("结果是:" + result); } public static void method2(){ for (int i = 0; i < 10; i++) { System.out.println("HelloWorld!"); } }
2.5 对比有返回值和无返回值
- 有返回值:++求出++结果
-
- 调用方法
-
- 找到方法
-
- 参数传递
-
- 执行方法体
-
- 带着返回值回到方法的调用处
-
- 无返回值:++打印++结果
-
- 调用方法
-
- 找到方法
-
- 参数传递
-
- 执行方法体
-
- 直接结束
-
- 注:有返回值:三种调用方式都可以。无返回值:++只能使用单独调用++。
public static void main(String[] args) { int num = getSum(20, 7); System.out.println("求和结果:" + num); System.out.println("=============="); printSum(33, 9); } 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.6 方法练习题
- 定义一个方法,用来判断两个数字是否相同
public static void main(String[] args) { System.out.println(isSame(5, 8)); //false System.out.println("============"); System.out.println(isSame(8, 8)); //true } /* 三要素: 返回值类型:boolean 方法名称:isSame 参数列表:int a, int b */ public static boolean isSame(int a, int b) { /*if (a == b) { return true; } else { return false; }*/ return a == b; }
- 求1-100的求和
public static void main(String[] args) { System.out.println("1-100求和值:" + getSum()); } /* 三要素: 返回值:int 方法名称:getSum 参数列表:无(题目数据范围已经确定,所以不需要参数) */ public static int getSum() { int sum = 0; for (int i = 1; i <= 100; i++) { //注:1-100所以不能i = 0 sum += i; } return sum; }
- 定义一个方法,打印指定次数的Hello World
public static void main(String[] args) { printCount(8); } /* 三要素: 返回值:void(只是打印操作,没有计算) 方法名称:printCount 参数列表:int a(打印次数) */ public static void printCount(int a) { for(int i = 0; i < a; i++){ System.out.println("HelloWorld"); } }
2.7 方法注意事项
- ++方法应该定义在类当中++,但是++不能方法当中再定义方法++——++不能嵌套++
- 方法前后顺序无所谓
- 方法定义之后不会执行,++希望执行需要调用++:单独调用,打印调用,赋值调用
- 如果方法有返回值:一定要写上“return 返回值;”
- return后面的返回值数据,必须和方法的返回值类型对应
- 对于一个void方法,不能写return后面的返回值,只能写return 自己。(return;只是结束方法的执行)
- 对于一个void方法,最后一行的++return;++可以省略不写
- 一个方法中可以++有多个return语句++,但必须保证同时只有一个会被执行到,不能连写
2.8 方法重载的基本使用(Overload)
- 对于功能类似的方法来说,因为参数列表不一样,却需要记住不同的方法名称(麻烦)
- 方法的重载(Overload)
- ++多个方法的名称一样,参数列表不一样++
- 好处:只需要记住一个方法名,就可以实现类似的功能
- 注:方法重载与下列因素相关
- 参数个数不同
- 参数类型不同
- 参数的多类型顺序不同
- 注:方法重载与下列因素无关
- 参数的名称
- 与方法的返回值无关
public static void main(String[] args) { System.out.println(sum(1, 4)); System.out.println(sum(1, 4, 8)); System.out.println(sum(1, 4, 7, 3)); //sum(1, 3, 4, 5, 6); //错 } //两个参数的 public static int sum(int a, int b) { return a + b; } //public static int sum(int x, int y) { //错:参数的名称无关 // return a + b; //} //三个参数 public static int sum(int a, int b, int c) { return a + b + c; } //public static double 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 int sum(double a, double b) { return (int)(a + b); } //参数的多类型顺序不同======================= public static int sum(int a, double b) { return (int)(a + b); } public static int sum(double a, int b) { return (int)(a + b); }
2.9 方法重载练习题
-
两个类型是否相同(参数类型分别为:byte,short,int,long),在main方法中测试
public static void main(String[] args) { byte a = 3; byte b = 4; System.out.println(isSame(a, b)); System.out.println("============"); System.out.println(isSame((short) a, (short) b)); System.out.println("============"); System.out.println(isSame(10, 10)); System.out.println("============"); System.out.println(isSame(10L, 10L)); } public static boolean isSame(byte a, byte b) { //byte System.out.println("两byte方法执行!"); boolean same; if (a == b) { return true; } else { return false; } } public static boolean isSame(short a, short b) { //short System.out.println("两short方法执行!"); boolean same = a == b ? true : false; return same; } public static boolean isSame(int a, int b) { //int System.out.println("两int方法执行!"); return a == b; } public static boolean isSame(long a, long b) { //long System.out.println("两long方法执行!"); if (a == b) { return true; } else { return false; } }
-
判断下列哪个是正常的重载关系(方法重载:方法名相同,参数不同)
- public static void open(){}; //correct(参数不重样)
- public static void open(int a){}; //correct(参数不重样)
- static void open(int a, int b){}; //error:与viii冲突(和访问修饰符无关)
- public static void open(double a, int b){}; //correct(参数不重样)
- public static void open(int a, double b){}; //error:与vi冲突
- public void open(int i, double d){}; //error:与v冲突(与static和参数名称无关)
- public static void OPEN(){}; //correct++但是并不是有效的方法重载++
- public static void open(int i, int j){}; //error:与iii冲突(和参数名称无关)
-
实现方法重载的println方法
- 注:shift + f6(用到的地方跟着一起变)
public static void main(String[] args) { myPrint(10); myPrint('f'); myPrint("hello"); myPrint(12.4f); myPrint(59L); } public static void myPrint(int num){ //int System.out.println(num); } public static void myPrint(short num){ //short System.out.println(num); } public static void myPrint(long num){ //long System.out.println(num); } public static void myPrint(byte num){ //byte System.out.println(num); } public static void myPrint(boolean num){ //boolean System.out.println(num); } public static void myPrint(char num){ //char System.out.println(num); } public static void myPrint(float num){ //float System.out.println(num); } public static void myPrint(double num){ //double System.out.println(num); } public static void myPrint(String str){ //String System.out.println(str); }