JAVA中数组的大小需要用new来分配,数组length属性可获取数组长度
1.指定数组大小后分配内存
public class Test9{
private String name;
public void SetName(String name)
{
this.name = name;
}
public String GetName()
{
return this.name;
}
public static void main(String[] args) {
Test9[] testarray = new Test9[10];
for (int i=0;i<testarray.length ;i++ ) {
testarray[i] = new Test9();
testarray[i].SetName("im:"+i);
}
for (int i=0;i<testarray.length ;i++ ) {
System.out.println(testarray[i].GetName());
}
}
}
2.不指定数组大小,直接在数组初始化中
public class Test9{
private String name;
public Test9(String name)
{
this.name = name;
}
public void SetName(String name)
{
this.name = name;
}
public String GetName()
{
return this.name;
}
public static void main(String[] args) {
Test9 test9[] = new Test9[]{new Test9("DOG"),new Test9("CAT"),};
for (int i=0;i<test9.length ;i++ ) {
System.out.println(test9[i].GetName());
}
}
}
3.基本数据类型无需申请内存,切勿混淆
public static void main(String[] args) {
int test9[] = new int[9];
for (int i=0;i<test9.length ;i++ ) {
test9[i] = i;
}
for (int i=0;i<test9.length ;i++ ) {
System.out.println(test9[i]);
}
}
}
和C++中数组的概念相差甚大,据观察,JAVA的类是以指针方式存储才会如此,C++参照:
using namespace std;
class Test2
{
public:
void SetName(string name)
{
this->name = name;
}
string& GetName()
{
return this->name;
}
private:
string name;
};
typedef unsigned char BYTE;
int main() {
Test2* ptest = new Test2[10];
char Buf[25] = { 0 };
for (int i = 0; i < 10; i++)
{
sprintf(Buf, "im:%d", i);
ptest[i].SetName(Buf);
}
for (int i = 0; i < 10; i++)
{
cout << ptest[i].GetName().c_str() << endl;
}
delete[]ptest;
return 0;
}
其实用二位数组来理解JAVA的对象数组更容易些
int main() {
Test2** ptest = new Test2*[10];
char Buf[25] = { 0 };
for (int i = 0; i < 10; i++)
{
sprintf(Buf, "im:%d", i);
ptest[i] = new Test2(); ;
ptest[i]->SetName(Buf);
}
for (int i = 0; i < 10; i++)
{
cout << ptest[i]->GetName().c_str() << endl;
}
for (int i = 0; i < 10; i++)
{
delete ptest[i];
}
delete[]ptest;
return 0;
}