Java基础(二)

Pragma mark — NO.1 方法递归

一个方法体内调用它自身,被称为方法递归。方法递归包含了一种隐式循环,它会重复执行某段代码,但这种重复执行无须循环控制。

public class JavaExample {
    public static void main(String[] args){
      //输出f(10)的结果
       int result = Example.fn(10);
        System.out.println(result);
     }

       public static class Example{
        //f0 = 1 ,f1 = 4. f(n + 2) = 2*f(n+1) + f(n),我们用递归解决
      public  static  int fn(int n){
              if (n == 0){
                 return 1;
               }else if (n == 1){
                   return 4;
               }else{
                   return  2 * fn(n - 1) + fn(n -2);
               }
           }
 }
#注:递归一定要向已知的方向递归,就是递归到最后的值一定是已知的。我们例子中由于递归回去,f0和f1的值是已知的,所以可以算出f(10)的值。
Pragma mark — NO.2 方法重载

Java允许同一个类里定义多个同名方法,只要形参列表不同就行。如果同一个类中包含了两个及以上方法的方法名相同,但形参列表不同,则被称为方法重载。
Java中确定一个方法需要三个要素:
1.调用者
2.方法名
3.形参列表

public class JavaExample {
    public static void main(String[] args){
  Example.test();
     String result = Example.test("你爱我吗?");
        System.out.println(result);
  }

       public static class Example{

        public  static  void test(){
            System.out.println("我爱你");
        }
        public  static  String test(String str){
       String str1 = str;
      return str1;
        }
}
}
#注:思考一下Java为什么不用返回值类型来区分方法重载
Pragma mark — NO.3 成员变量和局部变量
123.png
Pragma mark — NO.4 类的封装—四种修饰符的用法
111.png

类的简单封装

public class JavaExample {
    public static void main(String[] args){

       //操作person类
        Person p = new Person();
        //因为我们的Person里的成员变量是私有属性,所以我们不能用点语法弄
       // p.age = 10000;
       //您设置的年龄不合理
        p.setAge(1000);

     }

       public static class Person{
            //使用private修饰成员变量
           private  String name;
           private  int age;

           //提供方法来操作name成员变量
          public  void setName(String name){
              //执行合理检验, 要求用户名必须在2-6位之间
              if (name.length() > 6 || name.length() < 2){
                  System.out.println("您设置的名字不符合要求");
                  return;
              }else{
                  this.name = name;
              }
          }
          //get方法获得Name
           public String getName(){

              return this.name;
           }

           //提供方法操作age
           public  void setAge(int age){
               if (age > 100 || age < 0){
                   System.out.println("您设置的年龄不合理");
                   return;
               }else {
                   this.age = age;
               }
           }
           public  int getAge(){

               return this.age;
           }
      }
}


Pragma mark — NO.5 构造函数
public class JavaExample {
    public static void main(String[] args){

         Person p = new Person("我",18);

     }
       public static class Person{
             public  String name;
             public  int count;
             //为了保证使用者还能够用系统默认的构造方法,我们重写一下
             public Person(){

             }
             //提供自定义的构造器,该构造器包含两个方法
           public  Person(String name, int count){
                 this.name = name;
                  this.count = count;
             }
       }
}

讲解:

Snip20170601_3.png
Pragma mark — NO.6 什么是多态
Snip20170601_4.png
Pragma mark — NO.7 简单单例的写法
public class FiveInARow {
    public static void main(String[] args) throws Exception {

            //创建Singleton对象不能通过构造器了
        //只能通过getInstance这个实例方法来创建了
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();

        System.out.println(s1);
        System.out.println(s2);
    }
    //单例
    static class  Singleton{
        //使用一个类变量来缓存曾经创建的实例
        private  static Singleton instance;
        //对构造器使用private修饰,隐藏该构造器
        private  Singleton(){}
        //提供一个静态方法,用于返回Singleton实例
        //该方法可以加入自定义控制,保证只产生一个Singleton实例
        //static修饰的就是类方法了
        public  static  Singleton getInstance(){

            if (instance == null){
                instance = new Singleton();
            }
            return instance;
        }
    }
}

Pragma mark — NO.8 final 关键字
Snip20170601_5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容