• 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;
    	}
    }
  • 相关阅读:
    三元运算,列表解析,生成器表达式
    迭代器补充
    迭代器协议和for循环工作机制
    文件seek方法的补充
    文件操作的其他方法
    文件操作b模式
    文件操作的其他模式
    其他内置函数
    [TimLinux] JavaScript table的td内容超过宽度缩为三个点
    [TimLinux] JavaScript BOM浏览器对象模型
  • 原文地址:https://www.cnblogs.com/android-lyz/p/4760584.html
Copyright © 2020-2023  润新知