zoukankan      html  css  js  c++  java
  • Java基础笔记-面向对象2

    构造函数:(当类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数)

    格式:

    class Person

    {

      Person(){} //空参数

    }

    1.函数名与类名相同,

    2,不定义返回值类型,即不能写return语句.

    作用:给对象进行初始化.

    与一般函数的区别:

    1.构造函数 只执行一次,其他函数可以被执行多次.

    构造代码块:

    构造代码块,给对象进行初始化,对象一建立就运行,且优先于构造函数


    与构造函数的区别:

    相同点是,都是给对象进行初始化使用的.

    构造代码块是给所有对象进行初始化的,而构造函数是给对应的对象进行初始化.


    构造代码块中定义的是不同对象的共性的初始化内容.
    格式:

    例如:
     {
      System.out.println("构造代码块!");
     }

    this关键字:

    作用:用于区别成员变量局部变量 同名的情况.

    例如:

    class Person{

    String name; //--->成员变量name.

    Person(String name) //--->局部变量ame.

    {

      this.name=name;  // this.name  ===>中的name指的就是成员变量的name.

      name = name; //如果这样定义,这两个name都是局部变量name.

    }

    }


    this代表它所在类的所属对象的引用,

    通俗来讲:即哪个函数调用this所在的函数,this就代表哪个对象.

    有关this关键字,构造函数和构造代码块的相关代码演示.

     1 class Person
     2 {
     3     private int age;
     4     private String name ;
     5     /*
     6     构造代码块,给对象进行初始化,对象一建立就运行,且优先于构造函数.
     7     与构造函数的区别:构造代码块是给所有对象进行初始化的,而构造函数是给对应的对象进行初始化.
     8     构造代码块中定义的是不同对象的共性的初始化内容.
     9     */
    10     {
    11         System.out.println("构造代码块!");
    12         cry();
    13     }
    14     //构造函数
    15     Person()
    16     {
    17         System.out.println("A: name = "+name+"    age = "+age);
    18         //cry();
    19     }
    20     /*this: 关键字
    21     作用:用于区别成员变量与局部变量同名的情况.
    22     this代表它所在类的所属对象的引用,即哪个函数调用this所在的函数,this就代表哪个对象.
    23     */
    24     Person(int age)
    25     {
    26         this.age = age;
    27         System.out.println("B: name = "+name+"    age = "+age);
    28         //cry();
    29     }
    30     Person(int age ,String name)
    31     {
    32         this.age = age;
    33         this.name = name;
    34         System.out.println("C: name = "+this.name+"    age = "+this.age);
    35         //cry();
    36     }
    37     
    38     /*
    39     this的应用:定义一个函数,比较两个人年龄是否相同.
    40     */
    41     public boolean compare(Person p)
    42     {    
    43         return this.age == p.age;  //this.age中的this代表的是调用这个函数的对象. ===>77行中的对象p4调用了compare函数,this就是代表的p4.
    44     }
    45     
    46     //设置名字的函数
    47     public void setName(String name)
    48     {
    49         this.name = name;
    50     }
    51     //获取名字的函数
    52     public String getName()
    53     {
    54         return name;
    55     }
    56     
    57     public void cry()
    58     {
    59         System.out.println("Cry--------!");
    60     }
    61 }
    62 
    63 class PersonDemo2
    64 {
    65     public static void main(String args [])
    66     {
    67         Person p1 = new Person();
    68         Person p2 = new Person(10);
    69         Person p3 = new Person(5,"Tom");
    70         System.out.println(p3.getName());
    71         
    72         p3.setName("Paul");
    73         System.out.println(p3.getName());
    74         
    75         Person p4 = new Person(25);
    76         Person p5 = new Person(20);
    77         boolean b = p4.compare(p5);  
    78         System.out.println(b);
    79 
    80     }
    81 }


     

    static关键字:

    用于修饰成员变量(全局变量)和函数.

    被static修饰的变量,叫类变量,也叫做静态变量.

    static成员变量只初使化一次,防止在其他文件单元中再被引用.

    static局部变量和普通局部变量的区别:

    1.把局部变量改变为静态变量后,改变了它的存储方式即改变了它的生存期.

    2.把成员变量改变为静态变量后,改变了它的作用域,限制了它的使用范围.

    static局部变量只被初始化一次,下一次依据上一次结果值;   

    <什么时候定义静态函数:当功能内部没有访问到静态数据(对象的特有数据)时,该函数可以定义为静态函数.>???

    由于静态函数在内存中只有一个实例,在使用过程中不需要再new实例化对象.这些类一般都是无状态的,函数谁调用都是一样的.

    因此它们适用于工具类中.

    工具类应用的有关代码练习操作:

      1 /**
      2 这是一个可以对数组进行操作的工具类,可以获取最值,排序,打印等功能.
      3 @author JerryHo
      4 @version V1.0
      5 */
      6 //要生成帮助文档,这个类必须是public的.
      7 public class ArrayTool
      8 {
      9     //将构造函数私有化以后,可以强制该类不能建立对象
     10     /**
     11     空参数构造函数.
     12     */
     13     private ArrayTool()
     14     {
     15         //系统会有个默认的构造函数
     16     }
     17     /**
     18     获取整型数组中的最大值.
     19     @param arr 接收一个int类型的数组.
     20     @return 返回该数组中的一个最大值.
     21     */    
     22     public static int getMax(int arr[])
     23     {
     24         int max=0;
     25         for(int x=0; x<arr.length;x++)
     26         if(arr[max]<arr[x])
     27         {
     28             max = x;
     29         }
     30         return arr[max];
     31     }
     32     /**
     33     获取整型数组中的最小值.
     34     @param arr 接收一个int类型数组.
     35     @return 返回该数组中的一个最小值.
     36     */
     37     public static int getMin(int arr[])
     38     {
     39         int min=0;
     40         for(int x=0;x<arr.length;x++)
     41         {
     42             if(arr[min]>arr[x])
     43             {
     44                 min = x;
     45             }
     46         }
     47         return arr[min];
     48     }
     49     /**
     50     对int类型的数组进行选择排序.
     51     @param arr 接收一个int类型数组.
     52     */
     53     public static void selectSort(int arr[])
     54     {
     55         for(int x =0;x<arr.length-1;x++)
     56         {
     57             for(int y=x+1;y<arr.length;y++)
     58             {
     59                 if(arr[x]>arr[y])
     60                 {
     61                     //int temp =arr[x];
     62                     //arr[x]=arr[y];
     63                     //arr[y]=temp;
     64                     swap(arr,x,y);
     65                 }
     66             }
     67         }
     68     }
     69     /**
     70     对数组进行冒泡排序.
     71     @param arr 接收一个int类型数组.
     72     */
     73     public static void  bubbleSort(int arr[])
     74     {
     75         for(int x=0;x<arr.length-1;x++)
     76         {
     77             for(int y =0;y<arr.length-1-x;y++)
     78                 if(arr[y]>arr[y+1])
     79                 {
     80                     //int temp =arr[y];
     81                     //arr[y]=arr[y+1];
     82                     //arr[y+1]=temp;
     83                     swap(arr,y,y+1);
     84                 }
     85         }
     86     }
     87     /**
     88     交换整型数组中的两个变量的值.
     89     @param arr 接收一个int类型数组.
     90     @param a 要置换的位置.
     91     @param b 要置换的位置.
     92     */
     93     private static void swap(int[]arr,int x,int y)
     94     {
     95         int temp =arr[x];
     96         arr[x]=arr[y];
     97         arr[y]=temp;
     98     }
     99     
    100     /**
    101     打印整型数组中的元素.
    102     @param arr 接收一个int类型数组.
    103     打印形式为:[element1,element2,...]
    104     */
    105     public static void printArray(int arr[])
    106     {    
    107         System.out.print("[");
    108         for(int x=0;x<arr.length;x++)
    109         {
    110             if(x!=arr.length-1)
    111             {
    112                 System.out.print(arr[x]+",");
    113             }
    114             else
    115             {
    116                 System.out.println(arr[x]+"]");
    117             }
    118         }
    119     }
    120 }
     1 class ArrayToolDemo
     2 {
     3     public static void main(String args[])
     4     {
     5         /*
     6         int [] arr= new int[]{3,5,1,8,4,9,12};
     7         int [] arr1 = new int[]{9,3,6,18,13,4,23};
     8         ArrayTool at = new ArrayTool();
     9         
    10         int max = at.getMax(arr);
    11         System.out.println("max = "+max);
    12         
    13         int min =at.getMin(arr);
    14         System.out.println("min = "+min);
    15         
    16         at.printArray(arr);
    17         at.selectSort(arr);
    18         at.printArray(arr);
    19         
    20         at.printArray(arr1);
    21         at.bubbleSort(arr1);
    22         at.printArray(arr1);
    23         */
    24         
    25         //直接用类名调用有关的函数.
    26         int [] arr= new int[]{3,5,1,8,4,9,12};
    27         int [] arr1 = new int[]{9,3,6,18,13,4,23};
    28         
    29         int max = ArrayTool.getMax(arr);
    30         System.out.println("max = "+max);
    31         int min = ArrayTool.getMin(arr);
    32         System.out.println("min = "+min);
    33         
    34         int Max = ArrayTool.getMax(arr1);
    35         System.out.println("max = "+Max);
    36         int Min = ArrayTool.getMin(arr1);
    37         System.out.println("min = "+Min);
    38         
    39         ArrayTool.printArray(arr);
    40         ArrayTool.selectSort(arr);
    41         ArrayTool.printArray(arr);
    42         
    43         ArrayTool.printArray(arr1);
    44         ArrayTool.selectSort(arr1);
    45         ArrayTool.printArray(arr1);
    46         
    47         
    48     }
    49 }

    昨天停了快一天的电,一晚上热的没睡好,早上起来就开始看,看完教程还得自己思考,好多地方不是很懂不过还是慢慢来把,感觉脑袋都有些僵硬了,看完视频教程都快11点多了,又得做笔记,还得想想总结一天学的东西,然后敲代码,编译以后发现总是好多问题,又改来改去的看问题出现在哪里,一折腾就11点快12点了,在还得写博客记录,一天下来感觉又充实又累人,有种高三的感觉啊,洗澡睡觉去,明天还得继续..hold on...!

  • 相关阅读:
    js 剪切板应用clipboardData
    正则表达式的与或非
    自定义类型转换器
    struts2类库下载
    通过ajax提交form表单
    面试官:为什么Mysql中Innodb的索引结构采取B+树?
    代码生成器:IDEA 强大的 Live Templates
    深入理解JVM,7种垃圾收集器,看完我跪了
    你能说出多线程中sleep、yield、join的用法及sleep与wait区别?
    Java8中一个极其强悍的新特性,很多人没用过(非常实用)
  • 原文地址:https://www.cnblogs.com/jerryho/p/4507229.html
Copyright © 2011-2022 走看看