你的位置:首页 > Java教程

[Java教程]Java基础笔记


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

格式:

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...!