J-8 面向对象

静态
工具类

十二、静态

static关键字

  • 静态

  • 使用情况:如果某个成员变量是被所有成员变量共享的,那么就应该定义为static。

  • 可以修饰成员变量,成员方法。

  • 特点:
    ①随着类的加载而加载。
    ②优先于对象存在。
    ③被类的所有对象共享。 例如:53班的学生共同用一个教室编号。
    ④可以通过类名、对象名调用。
    推荐使用类名调用,修饰的内容为:与类相关的,类成员。

    class Student {
    //非静态变量
    int num = 10;

    //静态变量
    static int num2 = 20;
    }

    class StudentDemo {
    public static void main(String[] args) {
    Student s = new Student();
    System.out.println(s.num);

    //通过类名、对象名调用。
    System.out.println(Student.num2);
    System.out.println(s.num2);
    }
    }

静态内存图解

静态的注意事项

  • 静态方法中没有this关键字
    因为:静态是随着类的加载而加载,this是随着对象的创建而存在。
    静态比对象先存在。
  • 静态方法只能访问静态的成员变量和静态的成员方法。
    静态方法:只能访问静态成员变量;只能访问静态成员方法。
    非静态方法:可以是静态,也可以是非静态的;

静态变量和成员变量的区别

  • 所属不同:
    静态变量属于类,所以也称为类变量。
    成员变量属于对象,所以也称为实例变量(对象变量)
  • 内存中位置不同:
    静态变量存储于方法区的静态区。
    成员变量存储于堆内存。
  • 内存出现的时间不同
    静态变量随着类的加载而加载,随着类的消失而消失
    成员变量随着对象的创建而存在,随着对象的消失而消失。
  • 调用不同
    静态变量可以通过类名调用,也可以通过对象调用。
    成员变量只能通过对象名调用。

main方法的格式

public static void main(String[] args){...}

  • public:公共的

  • static:静态的,不需要创建对象,通过类名就可以,方便jvm调用。

  • void:方法的返回值是返回给调用者,而main方法是被jvm调用,返回内容给jvm没有意义。

  • main:常见的方法入口。

  • String[] args:这是一个字符串数组。
    早期是为了接收键盘录入的数据的,格式:
    在控制台输入(现在已经废弃不用)

    javac Maindemo.java
    java Maindemo hello world java
    则args数组长度为3,值为{hello,world,java}。

十三、工具类

  • 工具类中使用静态
    ①在同一个目录下,把两个类写在一个文件和两个文件中是一样的。
    ②把构造方法私有,外界就不能创建对象了。在工具类方法中使用静态,通过类名调用方法。

说明书的制作

如何制作一个说明书:

  • 写一个工作类

  • 对这个类加入文档注释

  • 用工具解析文档注释 javadoc工具

  • 格式:

    javadoc -d 目录 -author - version ArrayTool.java

制作帮助文档出错:

  • 找不到可以文档化的公共或受保护的类——告诉我们类的权限不够。

查看帮助文档:

  • 打开index.html

实例:

/**
* 这是针对数组进行操作的工具类
* @author 刘意
* @version V.10
*/
public class ArrayTool {

//把构造方法私有,外界就不能在创建对象了
/**
* 这是私有构造
*/
private ArrayTool(){}

/**
* 这是遍历数组的方法,遍历后的格式是:[元素1, 元素2, 元素3, ...]
* @param arr 这是要被遍历的数组
*/
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.print(arr[x]+", ");
}
}
}

/**
* 这是获取数组中最大值的方法
* @param arr 这是要获取最大值的数组
* @return 返回数组中的最大值
*/
public static int getMax(int[] arr) {
int max = arr[0];

for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}

return max;
}

/**
* 获取指定元素在数组中第一次出现的索引,如果元素不存在,就返回-1
* @param arr 被查找的数组
* @param value 要查找的元素
* @return 返回元素在数组中的索引,如果不存在,返回-1
*/
public static int getIndex(int[] arr,int value) {
int index = -1;

for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}

return index;
}
}

posted @ 2015-08-26 15:36  小懒66  阅读(275)  评论(1)    收藏  举报