【JAVA300】31-35 笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jvao_q7/article/details/76169871
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;
    }
}

猜你喜欢

转载自blog.csdn.net/jvao_q7/article/details/76169871
今日推荐