美文网首页
Java基础(二)

Java基础(二)

作者: 浮桥小麦 | 来源:发表于2017-06-06 22:46 被阅读19次
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

相关文章

  • java SE目录

    java SE目录 java基础(一)java基础(二)关键字面向对象(一)面向对象(二)面向对象(三)集合(一)...

  • java基础:Enum — 源码分析

    其他更多java基础文章:java基础学习(目录) 学习资料Java 7 源码学习系列(二)——EnumJava的...

  • 你所需要的java提升篇大总结

    java基础篇深入解析大总结 java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规则 jav...

  • 九章算法课程顺序

    第1周 第一周: Java与算法基础入门 Java 语法基础 Introduction to Java 变量,二进...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 聊一聊对于java并发基础的认知(一)

    聊一聊对于java并发基础的认知(一)聊一聊对于java并发基础的认知(二) 前言 对于java并发程序,我们首先...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • 2018-2019 目标技术栈

    一、java基础 1.Java 集合 2.Java 线程 3.Java io变成 4.Java 网络编程 二、my...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • JAVA基础(二)

    switch语句的格式?针对格式的解释?以及注意事项? 看程序,分析下面程序的结果: int x = 2,y=3;...

网友评论

      本文标题:Java基础(二)

      本文链接:https://www.haomeiwen.com/subject/stdqfxtx.html