• 变量、方法以及静态和非静态


    变量
    变量的种类:
        1、成员变量
        2、局部变量
    成员变量与局部变量的区别:
        定义位置的区别
            1、成员变量定义在方法之外,类之内。
            2.局部变量定义在方法之内。
        作用的区别:
            1、成员变量用于描述事物的公共属性。
            2、局部变量提供一个一个变量给方法内部使用。
        生命周期的区别:
            1、成员变量随着对象的创建而存在,对着对象的消失而消失。
            2、局部变量在调用了对应的方法时执行到了创建该变量的语句时存在,一旦出了自己的作用域会马上从内存中消失。
        初始值得区别:
            1、成员变量有默认初始值:
                数据类型            默认初始值
                int             0
                float            0.0f
                double            0.0
                boolean            false
                char            ''(空字符)
                String            null
            2、局部变量没有默认值,必须先初始化在使用。
    方法:函数也被称为方法。

    静态- static修饰符
    static 修饰成员变量(静态成员变量)
        使用场景:如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。例如统计一个类被使用了几次。
        静态成员变量的访问方式:
            1、可以通过对象进行访问
                格式:对象.变量名
            2、可以使用类名进行访问
                格式:类名.变量名
        注意事项:
            1、非静态成员变量只能使用对象访问,不能使用类名访问。
            2、千万不要为了方便访问数据而使用static修饰成员变量。只有成员变量数据真正需要被共享的时候才使用static修饰。
    static 修饰方法(静态成员方法)
        使用场景:如果一个函数没有直接访问到非静态的成员时,那么就可以使用static修饰了,一般用于工具类型的方法。----静态函数只要存在对象,也可以访问非静态数据,只要不能直接访问而已。
        静态成员函数的访问方式:
            1、可以通过对象进行访问
                格式:对象.静态函数名(形参列表);
            2、可以使用类名进行访问
                格式:类名.静态函数名(形参列表);
        注意事项:
            1、 静态函数是可以调用类名或者对象进行调用的,而非静态函数只能使用对象进行调用。
            2、静态的函数可以直接访问静态的成员,但是不能直接访问非静态的成员。    
                原因:静态函数是可以使用类名直接调用的,这时候可能还没有存在对象,
                而非静态的成员数据是随着对象的存在而存在的。
            3、非静态的函数是可以直接访问静态与非静态的成员。
                原因:非静态函数只能由对象调用,当对象存在的时候,静态数据老早就已经存在了,而非静态
                数据也随着对象的创建而存在了。
            4、静态函数不能出现this或者super关键字。
                原因:因为静态的函数是可以使用类名调用的,一旦使用类名调用这时候不存在对象,而this
                关键字是代表了一个函数的调用者对象,这时候产生了冲突。

    静态的数据的生命周期:静态的成员变量数据是优先于对象存在的。
    ***推荐使用类名访问静态的成员

    静态的成员变量与非静态的成员变量的区别
        1. 作用上的区别:
            1. 静态的成员变量的作用共享一个数据给所有的对象使用。
            2. 非静态的成员变量的作用是描述一类事物的公共属性。
        2. 数量与存储位置上的区别:
            1. 静态成员变量是存储方法区内存中,而且只会存在一份数据。
            2. 非静态的成员变量是存储在堆内存中,有n个对象就有n份数据。
        3. 生命周期的区别:
            1. 静态的成员变量数据是随着类的加载而存在,随着类文件的消失而消失。
            2.非静态的成员数据是随着对象的创建而存在,随着对象被垃圾回收器回收而消失。

    代码示例如下:
    //数组工具类
    class ArrayTool{
        static int count = 0; //统计使用的次数
        {
            count++;
        }
        public static void showCount(){
            System.out.println("创建了"+count+"个对象");
        }

        //转化为字符串并以","分割
        public static String toString(int[] arr){
            String result  = "";
            for(int i = 0;  i < arr.length ; i++){
                if (i==0){
                    result+="["+arr[i]+",";
                }else if(i==(arr.length-1)){
                    result+= arr[i]+"]";
                }else{
                    result+=arr[i]+",";
                }
            }
            return result;
        }

        //从小到大排序
        public static void sort(int[] arr){
            for(int i = 0; i < arr.length-1 ; i++){
                for(int j = i+1 ; j<arr.length ; j++){
                    if(arr[i]>arr[j]){
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }    
        }
    }

    class Demo{
        public static void main(String[] args){
            ArrayTool at1 = new ArrayTool();
            ArrayTool at2 = new ArrayTool();
            ArrayTool at3 = new ArrayTool();
            ArrayTool at4 = new ArrayTool();
            ArrayTool.showCount();

            int[] arr = {12,1,456,165};
            ArrayTool.sort(arr);
            String info = ArrayTool.toString(arr);
            System.out.println("数组的元素:"+ info);
        }
    }

  • 相关阅读:
    Hadoop技术内幕——Hadoop配置信息处理
    协程,线程池
    线程知识点(锁,信号量,队列,条件)
    进程的概念
    socketserver网络编程简单的小例子
    socket 发送文件
    网络编程
    正则表达式
    面对对象--多态封装
    创建可管理的属性:property
  • 原文地址:https://www.cnblogs.com/zhangyubao/p/7017241.html
Copyright © 2020-2023  润新知