java数组的实例化

今天出现了一个营弱智的问题,数组的初始化,构造函数是否有返回值。接下来我说下本人的错误与解决办法,希望大家引以为戒!

public class PlayBack implements BasicTimer.BasicTimerCallback {
    private MapView mMapView = EChartLib.getInstance().getMapView();
    private VesselLayer vessellayer = mMapView.getVesselLayer();
    float lat = (float) 38.8;
    float lon = (float) 118.145;
    static final String TAG = "TAG";
    private BasicTimer basicTimer = new BasicTimer(this);
    private VesselTrack vesselTrack = new VesselTrack();
    private Map<Integer, VesselTrack> map = new HashMap<Integer, VesselTrack>();

    public  PlayBack() {
        Arraysort();
        map.put(321, vesselTrack);
        vessellayer.prepareHistoryTracks(map);
        vessellayer.setHistoryTrackVisible(true);
    }


    void Arraysort() {
        vesselTrack.pts = new VesselTrackPoint[50];
        for (int i = 0; i < 50; i++) {
            vesselTrack.pts[i] = new VesselTrackPoint();
            vesselTrack.pts[i].longitude = lon;
            vesselTrack.pts[i].latitude = lat;
            vesselTrack.pts[i].t = i;
            if (lat < 38.9) {
                lat += 0.001;
                lon += 0.001;
            } else {
                lat += 0.002;
                lon += 0.0005;
            }
        }
    }

这个是我的初始代码!想必很多大牛或者老手都一下子看出来了问题所在!
下面我详细说一下:
问题1:
    
public void PlayBack() {}
这是我的构造函数;没有返回值!而我们众所周知,构造函数是不加void。
构造方法是一种特殊的方法,具有以下特点。 
(1)构造方法的方法名必须与类名相同。 
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。 
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。 
(4)构造方法不能由编程人员调用,而要系统调用。 
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构  造器,这个构造器不执行任何代码。 
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分




问题二:
vesselTrack.pts = new VesselTrackPoint[50];
        for (int i = 0; i < 50; i++) {
            vesselTrack.pts[i].longitude = lon;
            vesselTrack.pts[i].latitude = lat;
            vesselTrack.pts[i].t = i;
            if (lat < 38.9) {
                lat += 0.001;
                lon += 0.001;
            } else {
                lat += 0.002;
                lon += 0.0005;
            }

这个是我的数组实例化并赋值;大家也看到了,我的pts是new了一个【50】。不好意思这个new在java中只是为数组开辟空间,其对象仍为null,所以我们还是要加一句vesswlTrack.pts【i】=new VesselTrackPoint();
这样数组的每隔对象才会实例化;特别是C+的朋友们写java的市属更得注意!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值