java数组的实例化

来源:互联网 发布:cf变枪软件 编辑:程序博客网 时间:2024/06/05 04:45

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

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 0
原创粉丝点击