首页 > 学院 > 开发设计 > 正文

Java基础笔记-面向对象2

2019-11-15 00:12:01
字体:
来源:转载
供稿:网友
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 PersonDemo264 {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             else115             {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...!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表