Java类与对象的使用以及值传递、引用传递、引用数组,垃圾处理等

小编自行整理,直接上干货
出现问题还请指点

package Demo1.test2_HR;
/**
 * Create Time: 2021年10月4日 18:04  endTime: 20:28 
 * @author HongRui
 **/
public class test {
    public static final String tiger = " ready "; //声明一个公共静态成员常量
    static int tiger3 ;                           //input 成员变量(当没有定义静态时是不可以静态方法使用的 #可以试试(因为当类加载时没有给他空间))
    public static void main(String[] args) {      //主方法(must exist)
//**************invoke method******************************
        A.anc();                //exploit 类名进行调用
//**************invoke method******************************
        A acc = new A();        //exploit 对象进行调用(在创建对象时会给定义的变量赋予空间(在不使用对象时,创建的对象会被回收))
        acc.anc();              //invoke A类中的静态方法
        acc.an();               //invoke A类中的实例方法(在调用A类中的其他静态方法)
//**************invoke method******************************
       // zncc();               //invoke 本类中的实例方法(must 是静态方法才能被 invoke)
        test znw =new test();   // 在本类中利用对象进行调用类中的实例方法
        znw.zncc();
        //### ( 演示引用赋值 )
        zncccc();
        //### ( 演示值传递 )
        spread();
        //### ( 演示引用传递 )
        spread1();
//**************************************************
    //### ( 演示传递参数为数组的方法 )
        int arr[] ={1,2,3,4,5};//貌似只能在主函数中实现(意思:在原基础上每位数+10;)(我写的有些绕)
        int sum = 0,sum1 =0;
        for (int w:arr)
        {sum +=w;
        System.out.println("arr["+w+"]"+sum);}
        AddN(arr,10);      //利用方法,对其原数组没位数加10
        for(int W:arr)
        {sum1 +=W;
       sum +=W;
       System.out.println("arr["+W+"]"+sum);}
}
//**************invoke method******************************
    public  void zncc(){           //在本类中的方法
        System.out.println("在本类中的方法");
        String tiger1 ="few";      //define一个非成员变量
        System.out.println(tiger3);//output
        System.out.println("  tiger : "+tiger+"  tiger1 : "+tiger1);
    }
//********************************************
    //### ( 演示引用赋值 )
    public static void zncccc(){
        System.out.println("( 演示引用赋值 )");
       A output1 = new A();   //exploit 对象进行调用
       A output2 = new A(6, 18);//(形参)
        output1.znXY();       //invoke A类中的实例方法
        output2.znXY();       //invoke A类中的实例方法
        output1 = output2;    //二中的值赋给一
        output1.znXY();       //invoke A类中的实例方法
        output2.znXY();       //invoke A类中的实例方法
    }
//********************************************
    //### ( 演示值传递 )
    public static void spread(){
        System.out.println("( 演示值传递 )");
        int a,aa;
        A output3 = new A();    //定义一个对象进行调用
        a = 10;                 //statement a start
        aa = output3.square(a); //传递参数给square方法,结果在返回出来(实参)
        System.out.println(" a="+a+"...aa="+aa);
    }
//**************************************************
    //### ( 演示引用传递 )
    public static void spread1(){
        System.out.println("( 演示引用传递 )");
        A Pp =new A();
        Pp.setXY(10,20);
        System.out.println("x1 = "+Pp.x1+"y1 = "+Pp.y1);
        Pp.squareA(Pp);         //引用Pp中的值,对其地址中的值进行重定义
        System.out.println("x1 = "+Pp.x1+"y1 = "+Pp.y1);
    }
//**************************************************
    //### ( 演示传递参数为数组的方法 )
    public static void AddN(int b[],int N){
        for(int d = 0;d<b.length;d++)
            b[d] = b[d]+N;
    }

}


//************(define A type)*************************
class A{                        //define一个 A类

//************invoke method********************************
    public void an(){           //本类中的一个实例方法(实例能调用 1实例或2静态)
        System.out.println(" invoke method1 ");
        anc();                  //invoke一个静态方法
    }
    public static void anc(){   //本类中的一个静态方法(静态只能调用静态)
        System.out.println(" invoke method2 ");
    }

//**************************************************
    //### ( 演示引用赋值 )
    int x,y;
    A(){
        x = 10;y = 20;
    }
    A(int x ,int y){            //重载
        this.x = x;this.y =y;
    }
    public void znXY(){         //本类中的一个实例方法(实例能调用 1实例或2静态)
        System.out.println(" 点(x,y)为 "+"("+x+","+y+")");
    }
//**************************************************
    //### ( 演示值传递 )
    int square(int z){          //define一个整形实例方法
        z =z*z;
        return z;               //返回值
    }
//**************************************************
    //### ( 演示引用传递 )
    int x1,y1;
    public void setXY(int x2,int y2 ){ //建立一个方法,对类成员进行赋值(形参)
        x1 = x2;y1 = y2;
    }
    public void squareA(A P) {         //建立一个方法,利用P对象对A类中的成员进行修改
        P.x1 =P.x1*P.x1;
        P.y1 =P.y1*P.y1;
    }
//**************************************************
    //### ( 演示传递参数为数组的方法 )见其上
    //###  return返回值法(理解)
//**************************************************
    /*### ( 三个重要方法 )/*
            构造方法
            main()方法
            finalize()方法 */
    //finalize()作用:当垃圾收集器清除无用对象时,弹出窗口,显示要关闭的对象的序号
    //book P72~
}
上一篇:Java 设计模式之代理模式


下一篇:Java反射三四例