java的一些基本概念

基本概念
  例如:要定义100个整型变量,按照最原始的方式:i1、i2、…i100,这样做的话肯定不好管理,所以,这个时候就可以使用数组完成操作了,数组是一组相关的变量集合。
  在java中,可以使用如下的语法格式定义一个数组:
  数据类型 数组名称[] = new 数据类型[长度] ;
  其中,也可以将以上的语法,变为以下的形式:
  数据类型 [] 数组名称= new 数据类型[长度] ;
  只是,个人已经习惯与第一种写法,所以采用那种方式由个人自行决定。
  范例:定义一个整型数组
public class ArrayDemo01{

public static void main(String args[]){

int temp[] = new int[10] ;
// 表示声明了10个数组大小

}
}

qyylc87.com
jdylc286.com
bebylc68.com
hfylc72.com
fzfylc42.com

  此时,数组已经声明完毕,那么下面就可以使用数组,使用的形式如下:
  • 通过“数组名称[下标]”的形式进行访问
  • 在进行访问的时候,一定要注意的是,数组下标从0开始,10个大小的数组,下标:0~9
范例:访问数组中第一个、第三个元素
public class ArrayDemo01{

public static void main(String args[]){

int temp[] = new int[10] ;
// 表示声明了10个数组大小

System.out.println("第一个元素:"+temp[0]) ;

System.out.println("第三个元素:"+temp[2]) ;

}
}

  因为现在的都是整型数据,所以其默认的数值都是0,但是在进行数组操作的时候,一定要注意,数组的下标绝对不能超过数组的界限,如果超过规定的界限之后,将出现以下的错误:
  • ArrayIndexOutOfBoundsException
  另外,在数组的操作中,为了方便起见,可以通过“数组.length”取得一个数组的长度。
public class ArrayDemo02{

public static void main(String args[]){

int temp[] = new int[10] ;
// 表示声明了10个数组大小

System.out.println("数组长度:" + temp.length) ;

for(int x=0;x<temp.length;x++){

System.out.println("temp["+x+"] = " + temp[x]) ;

}

}
}

  以上所进行的数组操作中,因为使用到了关键字“new”,所以在数组使用的时候已经为其开辟好了新的空间。
  数组的使用分为两个部分:
  • 声明数组,声明数组的时候一般都是栈内存中声明的
  • 为数组开辟空间,使用关键字new进行空间的开辟,在堆内存中声明
  将以上的操作化成图形,如下所示:
  图略,详见视频教程
  为了更好的观察清楚以上的图形,就可以将数组的使用分为两个步骤:
  1、 声明一个数组:数据类型 数组名称[] = null ; // 因为数组是引用数据类型,引用的默认值都是null。
  2、 开辟数组:数组名称 = new 数据类型[长度] ; // 使用关键字new完成
public class ArrayDemo03{

public static void main(String args[]){

int temp[] = null ;
// 声明一个数组,但是没有开辟空间

temp = new int[10] ;
// 开辟了10个大小的空间

System.out.println("数组长度:" + temp.length) ;

for(int x=0;x<temp.length;x++){

System.out.println("temp["+x+"] = " + temp[x]) ;

}

}
}

  数组声明的时候,所有的内容都是默认值0,下面想可以声明一个3个元素的数组,之后为数组里的每一个元素设置的内容都是奇数,并通过此程序,观察内存的分配操作。
public class ArrayDemo04{

public static void main(String args[]){

int x[] = null ;
// 声明数组

x = new int[3] ;
// 开辟3个大小的空间

for(int i=0;i<x.length;i++){

x = i * 2 + 1 ;
// 设置奇数

}

for(int i=0;i<x.length;i++){

System.out.println("x["+i+"] = " + x) ;

}

}
}

  图略,详见视频
  虽然,现在操作的是数组名称,但是实际上改变的都是堆内存中的内容。所以,这样的操作在java中就称为引用数据类型。
  如果,现在假设把栈内存空间保存的内容当作一个人的名字,那么堆内存实际上就表示具体的一个人。也就是说实际上在栈中存放的只是一个标记而已。
  所以,此时,可以为一个堆内存空间同时设置多个栈的引用。
public class ArrayDemo05{

public static void main(String args[]){

int x[] = null ;
// 声明数组

x = new int[3] ;
// 开辟3个大小的空间

for(int i=0;i<x.length;i++){

x = i * 2 + 1 ;
// 设置奇数

}

int y[] = x ;
//将x数组的空间给y数组

for(int i=0;i<x.length;i++){

System.out.println("x["+i+"] = " + x) ;

}

}
}

  图略,详见视频教程
  之后,由数组y修改堆空间中的内容。
public class ArrayDemo05{

public static void main(String args[]){

int x[] = null ;
// 声明数组

x = new int[3] ;
// 开辟3个大小的空间

for(int i=0;i<x.length;i++){

x = i * 2 + 1 ;
// 设置奇数

}

int y[] = x ;
// 将x数组的空间给y数组

y[2] = 300 ;

for(int i=0;i<x.length;i++){

System.out.println("x["+i+"] = " + x) ;

}

}
}

posted on 2014-03-19 09:48  有木有格子  阅读(140)  评论(0编辑  收藏  举报