现在的位置: 首页 > 综合 > 正文

黑马:面向对象三

2013年09月17日 ⁄ 综合 ⁄ 共 3011字 ⁄ 字号 评论关闭

1、static关键字
static变量特点:
A、随着类的加载而加载(在类定义定义对象前就存在),随着类的消失而消失(生命周期最长)。
B、在类定义定义对象前就存在。
C、被所有对象共享。
D、可以直接被类名调用。
实例对象和类变量的区别:
A、存放位置
类变量随着类的加载而存放在方法区中;实例变量随着对象的建立存放在堆内存中。
B、生命周期
类变量生命周期最长,随着类的消失而消失;实例变量随着对象的消失而消失。
静态使用注意事项:
A、静态方法只能访问静态成员。
B、静态方法不可以定义this\super关键字。
C、主函数是static。
静态利弊:
利处:对对象的共享数据进行单独空间的存储,节省空间。
弊处:生命周期过长。访问只能访问静态变量。

class Person1{
 String name;
 static String country="CN";
 public static void show(){
  System.out.println(country);
 }
 public static void ha(){
  
 }
}
public class StaticDemo {
 public static void main(String[] args){
  Person1.show();
 }
}

2、main函数
public:表示访问权限最大,jvm可以访问。
static:表示类加载的时候就存在了。
void:没有返回值,jvm不需要返回值。
main:方法名称,jvm就调用此方法。
3、静态什么时候使用
静态变量:当对象中有共享数据值。
静态函数:当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

public class Person{
 String name;
 public static void show(){
  System.out.println(name);//没有访问对象的特有数据
 }
}

4、静态的应用(工具类)
每一个应用程序中都有共性的功能,可以将这些功能打包在一个类中,进行复用。
A、将类中的方法定义为静态的,用类名.函数名进行调用。
B、将方法都静态后可以方便使用,但是该类还可以被调用建立对象,可以将构造函数private。

class ArrayTool{
 //将构造函数私有化
 private ArrayTool(){}
 public static int getMax(int[] arr){
  int max = 0;
  for(int i=1;i<arr.length;i++){
   if(arr[i]>arr[max]){
    max = i;
   }
  }
  return arr[max];
 }
 public static int getMin(int[] arr){
  int min = 0;
  for(int i=1;i<arr.length;i++){
   if(arr[i]>arr[min]){
    min = i;
   }
  }
  return arr[min];
 }
 public void selectSort(int[] arr){
  for(int x=0;x<arr.length-1;x++){
   for(int y=x+1;y<arr.length;y++){
    swap(arr,x,y);
   }
  }
 }
 public void bubbleSort(int[] arr){
  for(int x=0;x<arr.length-1;x++){
   for(int y=0;y<arr.length-x-1;y++){
    if(arr[y]>arr[y+1]){
     swap(arr,y,y+1);
    }
   }
  }
 }
 private void swap(int[] arr,int a,int b){
  int temp = arr[a];
  arr[a] = arr[b];
  arr[b] = temp;
 }
}
 

 5、帮助文档的制作javadoc

A、类为public

B、文档只提供public;不提供protectedprivate类型的范围

Cjavadoc -d help(doc放置的目录) -author -version ArrayTool.java

DAPI:application program interface

/**
 * @description 这是一个可以对数组进行操作的工具类,包含查找数组中的最大值、最小值、排序。
 * @date 2013-5-15 上午8:38:29
 * @author luxiangzhou
 * @version V1.0
 */
public class ArrayTool{
 //将构造函数私有化
 private ArrayTool(){}
 /**
  * @param arr 接收一个int类型的数组
  * @return 返回一个数组中最大值
  */
 static int getMax(int[] arr){
  int max = 0;
  for(int i=1;i<arr.length;i++){
   if(arr[i]>arr[max]){
    max = i;
   }
  }
  return arr[max];
 }
 /**
  * @param arr 接收一个int类型的数组
  * return 返回一个数组中最小值
  * */
 public static int getMin(int[] arr){
  int min = 0;
  for(int i=1;i<arr.length;i++){
   if(arr[i]>arr[min]){
    min = i;
   }
  }
  return arr[min];
 }
 /**
  * @param arr 拍戏
  * */
 public static void selectSort(int[] arr){
  for(int x=0;x<arr.length-1;x++){
   for(int y=x+1;y<arr.length;y++){
    swap(arr,x,y);
   }
  }
 }
 /**
  * @param arr 排序
  * */
 public static void bubbleSort(int[] arr){
  for(int x=0;x<arr.length-1;x++){
   for(int y=0;y<arr.length-x-1;y++){
    if(arr[y]>arr[y+1]){
     swap(arr,y,y+1);
    }
   }
  }
 }
 private void swap(int[] arr,int a,int b){
  int temp = arr[a];
  arr[a] = arr[b];
  arr[b] = temp;
 }
}

一个类中的默认会有一个构造函数,这个构造函数的权限与所属类一致,如果类被public修饰,那么默认的构造函数权限也为public;如果类没有被public修饰,则默认的构造函数也没有被public修饰。

6、静态代码块
静态代码块随着类的加载而加载,且只执行一次,并优先于主函数执行。

class StaticTest01{
 //静态变量,内加载
 private static int num = 1;
 //静态代码块,类加载
 static{
  System.out.println("1");
 }
 //构造代码块,对象加载
 {
  System.out.println("2");
 }
 //构造函数,对象加载
 public StaticTest01(){
  System.out.println("3");
 }
}
public class StaticDemo01 {
 public static void main(String[] args){
  new StaticTest01();
 }
}

 总结:

1、代码执行顺序:静态代码块---构造块---构造函数;

2、工具类中一般定义静态权限函数,且构造函数权限为private

3、制作java帮助文档javadoc:javadoc -d 目录名 -author -version 源文件.java

抱歉!评论已关闭.