A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 xiekai_sjz 于 2018-9-13 15:35 编辑

day04 IDEA, 方法
    今天我们来学习IDEA的安装和应用,以及方法的定义,调用和重载。
    以下是今天的学习目标:



  • 掌握idea开发工具的安装
  • 能够使用idea创建Java工程
  • 能够使用idea创建包和类
  • 了解idea的Java工程目录
  • 了解idea字体的设置
  • 掌握idea常用开发快捷键
  • 了解项目的导入和删除
  • 掌握方法定义的参数和返回值含义
  • 了解方法的调用过程
  • 了解方法的三种调用形式
  • 掌握方法定义的注意事项
  • 掌握方法重载的概念
  • 能够判断出方法的重载



    以下是今天的详细笔记:

IDEA
IDEA集成开发环境IDE的概述
IDE: Integrated Development Environment,集成开发环境. 是一款软件, 集成了代码编写, 代码分析, 代码编译, 代码执行, 调试等很多功能. 我们只需要使用一款IDE软件就能够完成多种操作

常见Java开发IDE:
        Eclipse (免费)
        IntelliJ IDEA  (社区版免费, 高级版收费)
IntelliJ-IDEA的安装
关键步骤:
        双击exe安装
        选择安装路径
        创建快捷方式:
                根据自己的操作系统是32位还是64位的, 勾选32-bit launcher或64-bit launcher, 不要勾选其他选项
        各种下一步
IDEA的项目结构
IDEA项目结构:

basic-code                                                   项目
|_ day04                                                       模块
|        |_ src                                                    源代码目录
|                |_ com.itheima.practice_01         包
|                |        |_ Xxx.java                           java类文件
|                |        |_ Yyy.java
|                |_ com.itheima.practice_02
|                        |_ Xxx.java
|                        |_ Yyy.java
|_ day05
        |_ src
                |_ com.itheima.practice_01
                |        |_ Xxx.java
                |        |_ Yyy.java
                |_ com.itheima.practice_02
                        |_ Xxx.java
                        |_ Yyy.java  

IDEA的启动:  Accept
1.首次启动时会询问是否导入以前的配置, 我们选择不导入Do not import settings

2.点击Create New Project创建新的项目

3.首次使用时, 创建一个空的项目, 选Empty Project, 点击Next

4.填写项目名称, 并选择项目路径. 点击Finish
5.项目创建后, 会弹出创建模块弹窗, 点击加号, 选择New Module创建模块
6.左侧列表选择Java. 右侧Module SDK选择JDK. 第一次使用需要点击New选择JDK安装路径.

7.选择好后效果如下, 点击Next:

8.Module Name中输入模块名, 点击Finish

9.在返回设置窗口后点击OK即可

IDEA的HelloWorld开发步骤:
        1. 在模块的src目录中新建包Package, 输入包名
        2. 在包中建类Class, 输入类名
        3. 在类中编写代码
        4. 编写完毕后, 代码区域右键, 选择Run '类名.main()'运行程序

补充: 常见问题

原因: 我们没有指定项目的编译输出目录, 点击弹窗的OK可以弹出Project structure设置窗口, 指定输出目录

IDEA的基本配置打开IDEA设置窗口:
        File -> Settings

设置字体:
        File -> Settings -> Editor -> Font -> Font

设置字体大小:
        File -> Settings -> Editor -> Font -> Size

开启代码提示:
        File -> Settings -> Keymap -> 点击右侧小齿轮 -> Duplicate -> 改名并按回车
        -> 下面列表点击Main menu -> Code -> Completion -> Basic -> 双击 -> Remove Ctrl+空格
        -> 双击 -> Add keyboard shortcut -> 弹窗中直接按Alt / -> OK
        -> 弹窗提示是否删除其他重复快捷键, 点击Remove
IDEA的常用快捷键
快捷键 功能
Alt+Enter
导入包,自动修正代码
Ctrl+Y
删除光标所在行
Ctrl+D
复制光标所在行的内容,插入光标位置下面
Ctrl+Alt+L
格式化代码
Ctrl+/
单行注释
Ctrl+Shift+/
选中代码注释,多行注释,再按取消注释
Alt+Insert
自动生成代码,toString,get,set等方法
Alt+Shift+上下箭头
移动当前代码行
Shift + Enter
从当前行任意位置直接换行到下一行
Ctrl + J
Live Template提示, 可以快速生成代码

方法方法的使用
复习简单方法的使用
方法定义格式:
    public static void 方法名称() {
        方法体
    }

方法调用格式:
        方法名称();


方法注意事项:
    1. 方法定义的先后顺序无所谓。
    2. 方法定义必须是挨着的,不能在一个方法的内部定义另外一个方法。
    3. 方法定义之后,自己不会执行的;如果希望执行,一定要进行方法的调用。


// 生成指定次数的for循环, 从0开始, 小于整数, 每次递增
5.fori
for (int i = 0; i < 5; i++) {

}

// 生成指定次数的for循环, 从整数开始, 大于0, 每次递减
5.forr
for (int i = 5; i > 0; i--) {

}
方法的定义格式
定义方法的完整格式:
                             数据类型 变量名  int a, int b, double c
    修饰符 返回值类型 方法名称(参数类型 参数名称, 参数类型 参数名称, ...) {  // 参数列表
        方法体
        return 返回值;
    }

    // 说明
    修饰符:    目前写 public static
    返回值类型: 方法执行结果的数据类型
    方法名称:  方法的名字, 便于调用方法
    参数类型:  传递进方法的数据的类型
    参数名称:  传递进方法的数据的变量名称
    方法体:    方法功能的实现代码
    return:    结束当前方法, 并将返回值还给方法调用处
    返回值:    方法执行结果. 返回值的数据类型必须和返回值类型一致
[Java] 纯文本查看 复制代码
// 求两个整数的和, 返回结果
public static int sum(int a, int b) {
        int result = a + b;
        return result;
}
 
public static double sum(double a, double b) {
        double result = a + b;
        return result;
}

方法的三种调用格式
方法的3种调用方式:
    1. 单独调用:
            方法名称(参数);
            sum(1, 2);

    2. 打印调用:
            System.out.println(方法名称(参数));
            System.out.println(sum(1, 2));

    3. 赋值调用:
            数据类型 变量名称 = 方法名称(参数);
            int sum = sum(1, 2);


void方法只能单独调用,不能进行打印调用或者赋值调用。
方法的调用流程图解
总结:
方法调用流程:
对比有参数和无参数
定义参数原则:
        如果方法执行依赖于外部数据, 就要定义参数
        如果方法自身能完成功能, 则不需要参数
对比有返回值和无返回值
定义返回值原则:
        如果方法执行结果, 需要被外界使用, 则需要返回值
        如果方法执行结果, 不需要告诉外界, 则不需要返回值

注意事项:
        有返回值的方法,可单独调用, 打印调用, 赋值调用
        无返回值的方法, 只能单独调用
方法练习1: 定义方法比较两个数字是否相同
需求: 定义一个方法,用来判断两个数字是否相同, 在main()方法中测试
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义一个方法,用来判断两个数字是否相同, 在main()方法中测试
 */
public class Test {
    // psvm
    public static void main(String[] args) {
        // 打印调用
        System.out.println(isSame(10, 20)); // false
        System.out.println(isSame(20, 20)); // 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;
        }
        return same;*/
 
        // 三元运算符方式
        /*boolean same = a == b? true : false;
        boolean same = a == b;
        return same;*/
 
        // 直接返回方式
//        return a == b;
 
        //if中直接返回结果方式
        if (a == b) {
            return true;
        } else {
            return false;
        }
 
    }
}

方法练习2: 定义方法求出1到100的累加和
需求: 定义一个方法,方法内部求出1-100之间所有数字的总和并返回. 在main()方法中调用并打印结果
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义一个方法,方法内部求出1-100之间所有数字的总和并返回. 在main()方法中调用并打印结果
 */
public class Test {
    public static void main(String[] args) {
        System.out.println("结果是:" + getSum());
    }
 
    /*
    求出1-100之间所有数字的总和并返回
    返回值类型: int
    方法名称: getSum
    参数列表: 无
     */
    public static int getSum() {
        // 定义求和变量
        int sum = 0;
        // for循环产生1-100的数字
        for (int i = 1; i <= 100; i++) {
            // 累加到sum
            sum += i;
        }
        // 返回结果
        return sum;
    }
}

方法练习3: 打印指定次数的HelloWorld
需求: 定义一个方法,方法内部打印指定次数的HelloWorld. 次数通过方法的参数传递. 在main()方法中调用并打印结果
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义一个方法,方法内部打印指定次数的HelloWorld. 次数通过方法的参数传递. 在main()方法中调用并打印结果
 */
public class Test {
    public static void main(String[] args) {
        printHelloWorld(10);
    }
 
    /*
    打印指定次数的HelloWorld
     */
    public static void printHelloWorld(int num) {
        for (int i = 0; i < num; i++) {
            System.out.println("Hello world!!" + i);
        }
    }
}

方法定义的注意事项
注意事项:
    1. 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套
    2. 方法定义的前后顺序无所谓
    3. 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用
    4. 如果方法有返回值,那么必须写上"return 返回值;",不能没有
    5. return后面的返回值数据,必须和方法的返回值类型,对应起来
    6. 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己
    7. 对于void方法当中最后一行的return可以省略不写
    8. 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写
方法的重载方法重载的基本使用
方法重载:
        Overload
        多个方法, 名称相同, 参数列表不同

重载的好处: 定义多个方法实现类似的多个功能, 只需要记住一个方法名称
方法重载的注意事项
重载注意事项:
        方法重载的参数列表不同包括:
                1. 参数个数不同
                2. 参数类型不同
                3. 参数的多类型顺序不同
        重载与以下无关
                1. 与参数的名称无关
                2. 与方法的返回值类型无关
               
多个方法, 名称相同, 参数列表不同(参数个数不同 || 参数类型不同 || 参数的类型顺序不同), 和参数名无关, 和返回值类型无关
[Java] 纯文本查看 复制代码
// 查看以下方法是否为重载关系
public class Test {
    public static int sum(int a, int b) {
        return a + b;
    }
 
    public static double sum(double a, double b) {
        return a + b;
    }
 
    public static int sum(int a, int b, int c) {
        return a + b + c;
    }
}

重载练习1: 四种不同参数类型的方法
注意重载的方法如何通过参数确定调用哪个方法

需求: 定义方法比较两个数据是否相等
        参数类型分别为:
                两个byte类型
                两个short类型
                两个int类型
                两个long类型
        并在main()方法中测试
代码:
[Java] 纯文本查看 复制代码
/*
需求: 定义方法比较两个数据是否相等
        参数类型分别为:
                两个byte类型
                两个short类型
                两个int类型
                两个long类型
        并在main()方法中测试
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(isSame((byte)10, (byte)20));
        System.out.println(isSame((short)10, (short)20));
        System.out.println(isSame(10, 20));
        System.out.println(isSame(10L, 20L));
    }
 
    // 比较两个byte类型是否相等
    public static boolean isSame(byte a, byte b) {
        System.out.println("byte参数的方法执行");
        return a == b;
    }
 
    // 比较两个short类型是否相等
    public static boolean isSame(short a, short b) {
        System.out.println("short参数的方法执行");
        return a == b;
    }
 
    // 比较两个int类型是否相等
    public static boolean isSame(int a, int b) {
        System.out.println("int参数的方法执行");
        return a == b;
    }
 
    // 比较两个long类型是否相等
    public static boolean isSame(long a, long b) {
        System.out.println("long参数的方法执行");
        return a == b;
    }
}

重载练习2: 判断方法的正确重载
[Java] 纯文本查看 复制代码
public class Demo03OverloadJudge {
 
    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行冲突
}


5 个回复

倒序浏览
回复 使用道具 举报
强势入驻一楼
回复 使用道具 举报
什么鬼,又是我,第四天没啥东西,很简单,基础班没开班我就拿着IDEA整天玩了,各种插件装的停不下来,很好用很好玩的一个软件,各种快捷键让我连伸手摸一下鼠标的都不乐意,只用键盘多爽.这代码敲得,觉得插上翅膀就要飞起来了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马