1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

小黄鸭系列java基础知识 | java中的方法

前言

今天我们要探讨的问题,是java基础语法的最后一个问题,也就是java中的方法,今天主要从以下几个方面来介绍:

  1. 方法是什么(定义)
  2. 方法的分类
  3. 方法的调用

应该说,学完今天的知识,你至少应该看懂java代码的大概结构,能够写一些简单的java程序,来处理一些简单的问题,如果还没达到这个高度,那你可要好好学习,多动手练习,我记得我那会开始学习的时候,就是靠着一本二手的java教材,然后看着课后练习题,不断敲代码,然后才入门的,刚开始的时候好多概念也不知道,也没看视频教程,走了好多弯路,所以我觉得你也可以,加油吧!

正文

什么是方法

在最开始我们讲到java的基本结构的时候,我们说方法是某个对象的行为,比如对于人这个class

class 人 {
  	名字;
    电话;
    年龄;
    吃饭() {
        
    }
    睡觉() {
        
    }
    打豆豆() {
        
    }
}

吃饭、睡觉、打豆豆都是人这个class的行为,也就是方法,现在我们要对方法进行扩展和更精确的定义。从实际应用开发的角度来说,方法就是一系列操作的集合,但这一系列组合操作要尽可能相关,因为实际应用开发的原则是一个方法只做一件事。

当然你也可以在一个方法中做多件事,但是这样不够优雅,对于后期维护极其不方便,你能想象一个方法里面有上百行,甚至上千行的代码吗?我们的项目中还真有,后期修改那个业务的时候,我想死的心都有,因为那已经是经过N手的代码,没有注释,业务逻辑只能靠debug和自己猜,所以各位小伙伴一定要养成编写优雅代码的好习惯,这样才会你好我好大家好。

方法的创建语法是这样的:

访问控制符 特殊修饰符 返回值类型 方法名(参数类型 参数1名称, 参数类型 参数2名称...) {
    // 方法内部的操作
    // 返回语句,对于返回值类型为void的语句,返回语句为【return ;】,当然返回语句可以省略
    return  类型为返回值类型的变量 
}

其中,访问控制符就是我们上周说的,主要有privatepublicprotected、默认,访问控制权限和修饰class类似:

访问修饰符 本类 同包 子类 其他
private × × ×
默认 × ×
protected ×
public

无修饰符的方法在实际开发中应用很少(反正我没见过),需要注意的是接口中的方法并非是无修饰符的,它的方法默认修饰符是public,只是是隐式的。

特殊修饰符指的是为了一些特殊需求而加的修饰符,只要有finalstaticabstract,这里不做过多说明,后面在面向对象的继承部分会详细说明。

返回值类型指的是方法执行完成要返回的结果的类型,如果当前方法不需要返回结果,返回结果类型就是void。返回值类型,除了基本类型外,还可以是任意引用类型,比如StringObject

方法名就是我们定义的操作集合的名称,从代码规范的角度来说,名称要尽可能反映该方法集合要做的事情,比如吃东西的方法集合,为了让其他人看了也知道,那我起的名字就是eat

参数是方法内部要用到的变量,但是这些变量必须要方法外部传入,比如我定义了一个eat方法:

public void eat(String food) {
        System.out.println("吃" + food);
    }

现在我的参数是食物,但如果我还想再增加一个参数,增加餐具,你这样定义方法就可以:

public void eat(String food, String eatTool) {
        System.out.println("用" + eatTool + "吃" + food);
    }

如果需要更多参数,你自行添加即可。参数的次序没有任何要求,可以自己调整,但是参数名称一定要尽可能真实表达参数的意义,这样对于方法的调用方,他就可以更清楚地传值。

方法的分类

方法的分类简单来讲有三类:

  1. 类(静态)方法:static特殊修饰符修饰的方法,比如main方法就是最典型的静态方法:

     public static void main(String[] args) {
            Person person = new Person();
            person.age = 20;
            System.out.println(person.age);
            double pi = Math.PI;
            float pif = (float) pi;
            System.out.println(pi);
            System.out.println(pif);
        }
    
  2. 实例方法:顾名思义,实例方法,就是要先创建方法所在的类的实例,然后才能调用的方法。这类方法最常见,也是实际开发中应用最广的方法,我们上面定义的eat方法就是此类

  3. 构造方法:这类方法是在创建某个类的对象是调用的,和上面两个不同的是,这个方法没有返回值类型,不可以加特殊修饰符,该方法默认返回类的实例对象:

    public class You {
        public String name;
        public int age;
        public String gender;
    
        public You() {
            // 方法操作
            System.out.println("you被创建");
        }
        You(String name) {
            // 方法操作
            System.out.println("you被创建,you的名字" + name);
        }
        private You(int age) {
            // 方法操作
            System.out.println("you被创建,you的年龄" + age);
        }
        protected You(String name, int age) {
            // 方法操作
            System.out.println("you被创建,you的名字" + name + "you的年龄" + age
    }
    

    上面的这些方法,都是you的构造方法,需要注意的是,构造方法的名字必须和类名保持一致(区分大小写),构造方法也可以说它是静态方法,只是它的static是隐式的,至于为什么,我们在方法的调用再来探讨。

方法的调用

方法也叫函数,但是在java中我们习惯叫他方法,方法的调用就是方法的使用,一个方法如何使用,首先取决于它的类型(它是哪种方法),所以这里我们也分三块来讲:

静态方法的调用

静态方法可以被实例方法、构造方法和静态方法调用,调用方法也很简单:

类名.方法名(方法入参);
// 如果是在同一个类中调用,可以省略类名:
方法名(方法入参)

示例代码:

	public static void testSatatic(String name) {
        System.out.println("我是一个静态方法,我被调用了,name=" + name);
    }
	/**
  	* 在静态方法中调用静态方法
  	*/
	public static void main(String[] args) {
        String name = "静态方法";
       You.testSatatic(name);
    }
	/**
	* 在实例方法中调用
	*/
    public void test(String name) {
        System.out.println("我是一个实例方法,我被调用了,name=" + name);
        testSatatic("实例方法");
    }
	/**
	* 在构造方法中调用
	*/
	public You() {
        // 方法操作
        System.out.println("you被创建");
        testSatatic("构造方法");
    }

实例方法的调用

我们前面说了,实例方法必须先创建类的实例,才能调用实例方法,所以实例方法的调用是这样的:

类名 实例名 = new 构造方法();
实例名.实例方法名(方法入参)
// 如果是在同一个类中调用,可以省区实例化操作:
实例方法名(方法入参)

示例代码:

	public void test(String name) {
        System.out.println("我是一个实例方法,我被调用了,name=" + name);
    }
	/**
 	 * 在静态方法中调用实例方法
  	*/ 
    public static void main(String[] args) {
       You you = new You();
       you.test("静态方法");
    }
   /**
     * 在实例方法中调用
     */ 
    public void test2() {
        System.out.println("我是一个实例方法");
        test("实例方法");
    }
	/**
     * 在构造方法中调用
     */
	public You() {
        // 方法操作
        System.out.println("you被创建");
        test("构造方法");
    }

构造方法的调用

构造方法的调用也很简单:

类名 实例名 = new 构造方法();

示例代码:

	public You() {
        // 方法操作
        System.out.println("you被创建");
    }
    /**
      * 在静态方法中调用
      */
    public static void main(String[] args) {
       You you = new You();
    }
	/**
      * 在实例方法中调用
      */
	public void test2() {
        System.out.println("我是一个实例方法");
        You you = new You();
    }
	/**
      * 在构造方法中调用
      */
	public You(String name) {
        // 方法操作
        System.out.println("you被创建,you的名字" + name);
        You you = new You();
    }
	/**
	  * 如果是同一个类的构造方法之间的调用,也可以这样写:
	  */
	public You(String name) {
        // 调用无参构造方法
        this();
        // 方法操作
        System.out.println("you被创建,you的名字" + name);        
    }

这里需要注意的是,在构造方法中通过this调用自己的构造方法时,调用操作必须写在第一行,否则会报编译错误:

结语

java方法部分的内容到这里就结束了,当然方法这里还有很多知识点没有讲到:方法的重写、重载、方法传参等,内容还有很多,后面等面向对象部分的内容讲解完后,我们再来进一步剖析。希望看完今天内容的小伙伴,能对方法有个更清晰的认知和了解,我刚才翻了下之前自己的学习笔记,我发现我那会对方法这块认识的还不够,所以希望正在学习的你,能少走弯路,最后附上我之前的笔记,大家看下是不是认识不够:

实例方法可以调用该类中的实例方法或者类方法,类方法只能调用该类的类方法或者静态方法,不能调用实例方法(静态方法只能调用静态方法,不能调用非静态方法)

方法声明中用关键字static修饰的均为类方法或者静态方法,不用static修饰的方法称为实例方法;

最后,放上最近刚开源的一个小仓库,里面有我日常开发整理形成的工具类,目前确实详细的说明文档,后续会逐步补充,如果只是参考使用的话,代码的注释应该已经可以了。

项目地址:

https://github.com/Syske/syske-common-utils

项目目录:

posted @ 2021-02-27 11:17  云中志  阅读(98)  评论(0编辑  收藏  举报