Java手记---数组,作用域,引用

##array

1
2
3
4
5
boolean [] a;  
a = new boolean [] {true,false};
System.out.println(a[0]+" "+a[1]);    //this is right.
System.out.println(a[0]+a[1]);         //this is wrong. Because two boolean can't add .
System.out.println(a[0],a[1]);           //this is also wrong. Because the function can't take two paraments take two paraments.

##array 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ArrayList c;  
c = new ArrayList();
for(int i = 0;i<26;i++)
c.add("hello"+i);
System.out.println(c);
////////可以在程序过程中输入任意多个数据放入这种数组。
Iterator a = c.iterator();//////////////这里是获得c的迭代器。
while(a.hasNext())////////这里判断下一个是否存在。
System.out.println(a.next());
/////////这里不要产生误解:认为第一个打印不出来。这里可以看出迭代器初始值是指向第一个元素,
/////////打印时只是先打印了元素再向后指。

/////////不过要说明的是java中没有指针这个概念,不过我学c/c++多年很自然的想用这个概念。

##Scope:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for(int i = 0;i < 10;i++)  
System.out.println(i);
for(int i = 0;i < 10;i++)
System.out.println(i*10);
////////////////////这样写并没有出错,这与c++不同。代表在for循环以外i已经被销掉。不能再使用i这个变量

int i = 3;
{
char i = 'c';//////////这里将出错,与c++不同。c++中将在第一个输出点输出c
System.out.println(i);
}
System.out.println(i);
~~~~~~~~~~~~~~~~~~~~~~~~~~
int i = 3;
{
char q = 'c';
System.out.println(q);
}
System.out.println(i);
System.out.println(q);///////////这里也会编译失败,原因是q已经超出作用范围。

##reference:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
///////在声明数组或对象时,创建的是一个引用。无论声明什么样的数组,引用都是32位宽。  
int [] ages;
int [] otherAges;
otherAges = new int [5];
ages = otherAges;  //认为把otherAges的引用赋给ages
////如果otherAges[2] = 2;
////则ages[2] == 2;

//////////////////////////////函数不用声明。
//////////////////////////////传入到函数中的数组被永久的改变了。

int [] b = new int []{1,2,3,5,7};  // this is right.
int [] b = new int [5]{1,2,3,5,7}; //this is wrong.
/////////////////////////////////////////////////////////////////
static int[] creat(int a)///返回一个数组。
{
int[] array = new int [a];
..................................
return array;  ///只写数组名。
}

这里说明一下指针和引用的两个概念:

指针是指向地址的,而引用不是.

指针指向地址带来的麻烦就是指针可以乱指,而且有时程序中根本无法判断它是否已经越界.更可能指向系统区并修改里面的数据…后果可想而知.

而引用是一个对象的另一个名字,

1
2
3
4
Object a = new Object();

Object b = a;

这样b成了a的引用.b其实是a的另一种叫法.所以改变了b就相当于改变了a…

因为java中没有指针这个东西,所以比c/c++使用起来安全的多.错误也很容易被编译器发现.