【JAVA300】31-35 笔记


Java学习者论坛:www.javaxxz.com
31_面向对象_04_程序执行过程的内存分析_01.wmv//属性:field:成员变量属性作用范围是整个类体在定义成员变量时可以对其初始化,如果不对其初始化,java使用默认的载对其初始化(数值:0,0.0  char:\u0000,  boolean:false,所有引用类型:null 如String)
//属性定义格式:【修饰符】属性类型  属性名 = 【默认值】——【修饰符】可以省略。或为public,protected,private,static,final——可以是任何类型,基本类型和引用类型——合法的标识符即可。首字母小写,驼峰原则
//方法定义格式:【修饰符】方法返回值类型 方法名(形参列表){n条语句}对象是通过引用操作的
——JAVA中方法参数传递是:值传递!
return结束语句或返回值。
局部变量需要初始化才能用,全局变量系统会帮忙初始化为0。
栈:(自动分配连续的空间,后进先出)存放局部变量堆:(不连续的空间)存放new出来的对象方法区:类的信息,static变量,常量池(字符串常量)等
引用都是4个字节


32_面向对象_05_程序执行过程的内存分析_02.wmv

常量池有和其他类共享的机制对象里面再引用对象,后进先出

33_面向对象_06_虚拟机内存管理_垃圾回收机制_c++和java的比较.wmv 
Gaebage Collection:垃圾回收c++由程序员来做
程序员无权调用垃圾回收器程序员可以通过System.gc().通知GC运行,但JAVA规范并不能保证立刻运行finalize方法,是JAVA提供给程序员用来释放对象或资源的方法,但是尽量少用

34_面向对象_07_构造方法.wmv  
构造器:构造方法:constructor构造器用于构造该类的实例。格式如下:【修饰符】类名(形参列表){//n条语句}
是一种特殊的方法通过new关键字调用构造器虽有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能构造器里调用return.如果我们没有定义构造器,则系统会自动定义一个无参的构造函数。如果已定义则编译器不会添加!构造器的方法名必须与类名一致构造该类的对象,经常也用来初始化对象的属性
代码:package cn.bjsxt.oop;
public class Point {    double x, y, z;

    // 通过构造方法初始化对象的属性    public Point(double _x, double _y, double _z) {        x = _x;        y = _y;        z = _z;    }
    //单独设置点的坐标    public void setX(double _x){        x = _x;    }    public void setY(double _y){        y = _y;    }    public void setZ(double _z){        z = _z;    }

    public double distance(Point p){    return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z));//当前这个点减去p点的x的平方然后相加,最后开方返回。

    }
    public static void main(String[] args) {        Point p = new Point(3, 4, 8);        Point p2 =new Point (200,40,80);// define        p.setX(10);        System.out.println(p.x);        System.out.println(p.distance(p2));
    }}

35_面向对象_08_方法重载_构造方法重载.wmv方法的重载(overload)是指一个类中可以定义相同的名字,但参数不同的多种方法。调用时,会根据不同的参数表选择对应的方法两同三不同:同一个类,同一个方法名,不同:参数列表不同(类型,个数,顺序不同)
只有返回值不同不构成方法的重载(int     a(String str){}void  a{String i},调用:a()只有形参的不同的名称不同,不构成方法的重载与普通方法一样,构成方法也可以重载
代码:package cn.bjsxt.oop;
/** * 测试重载 *  * @author jiahao * */public class TestOverload {
    public int add(int a, int b) {        return a + b;    }//不同方法不会有歧义
    public static void main(String[] agrs) {        MyMath m = new MyMath();        int result = m.add(4, 5);        System.out.println(result);        int result1 = m.add(1, 4, 5);        System.out.println(result1);        int result2 = m.add(4.2, 5);        System.out.println(result2);        int result3 = m.add(4, 5.2);        System.out.println(result3);    }}
class MyMath {    int a;
    //构造器的重载    public MyMath(){
    }
    public MyMath(int a){        this.a=a;    }
    /*不构成重载,形参不同     * public int add(int c, int d) {        return a + b;    }    */    public int add(int a, int b) {        return a + b;    }
    /*返回值改成double,返回值不一样,不构成重载    public double add(double a, int b) {        return (double)(a + b);    }    */
    public int add(double a, int b) {        return (int)(a + b);    }
    public int add(int a, double b) {        return (int)(a + b);    }
    public int add(int a, int b, int c) {        return a + b + c;    }}
本站声明
本文转载自:http://blog.csdn.net/jvao_q7/article/details/76169871     作者:jvao_q7     发布日期:2017/07/27     本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。


 
© 2014-2017 ITdaan.com 粤ICP备14056181号