您的位置:首页 > 编程语言 > Java开发

JAVA基础知识之我的理解 4(后续跟进中,希望对大家有帮助会有后续贴持续跟进) ...

2012-07-31 23:35 162 查看

 

开篇废话

最近有几天没有写总结了,没写的原因有那么几个,但主要的还是自己略微有些懒惰,最近看了有一些书,经历了一些事,觉得自己还是一个蛮幸福的人,可以干自己想干的事。父母又很开明,对我干什么都很支持,再此感谢他们对我的信任吧。这几天在做画图板,做的很纠结,本来要做一个画图板的总结,由于一些原因耽误了,不过没关系。有时间还是要把画图板那个完整版做个总结与大家分享。Where最近的一点点感悟在这个版块与大家分享,最近周围有朋友总是各种牢骚+抱怨,where觉得很没必要。生活本来就是跌宕起伏,一帆风顺属于童话。我们没权利要求生活事事顺意,但我们可以要求自己事事尽力。试着每天用一个幸福的心态作开始,慢慢的我们会发现一切没那么糟。试着给生活一缕微笑,或许它会回馈给你别样的风景。好了“废话”的最后还是希望大家可以微笑面对生活吧。

 

本次总结提纲

<!--[if !supportLists]-->1.      <!--[endif]-->数组的理解

<!--[if !supportLists]-->2.      <!--[endif]-->一维数组的理解和使用

<!--[if !supportLists]-->3.      <!--[endif]-->二维数组的理解和使用

<!--[if !supportLists]-->4.      <!--[endif]-->数组的排序(这部分比较有意思)

<!--[if !supportLists]-->一.    <!--[endif]-->数组的理解

<!--[if !supportLists]-->1)<!--[endif]-->数组是具有相同的基本数据类型的变量或对象的集合;

<!--[if !supportLists]-->2)<!--[endif]-->数组元素既可以是基本数据类型也可以是复合数据类型因此数组的           元素可以是数组,我们一会要说的二维数组可以理解为元素为数组的一维数组(听起来较拗口,多读几遍也许会习惯);

补充:JAVA中基本数据类型包括8种:byte、int、short、long、char、float、double、boolean。

     JAVA中复合数据类型有两种:数组、类或接口。

<!--[if !supportLists]-->3)<!--[endif]-->数组这种复合数据类型与我们以前提到过的基本数据类型的最大区别是对数组的操作是通过引用其地址来实现的。而基本数据类型是通过值来操作。

二.一维数组的理解和使用

很多书上讲数组往往把数组的声明和初始化混在一起讲,包括我先在学习用的书也是这样,对于这点我表示不怎么喜欢。因为它本质是两个过程,下面我们就分开看看这两个过程。声明一个数组时,只能得到存放这个数组的地址变量,并没有为他的元素分配储存空间数组还不能直接使用。而初始化就是为数组分配内存空间的过程。

<!--[if !supportLists]-->1)<!--[endif]-->一位数组的声明格式有两种:

数据类型 数据名[];

 

数据类型[] 数据名;

 

<!--[if !supportLists]-->2)<!--[endif]-->一维数组的初始化也是有两种方法:

直接初始化:

数据类型 数据名[] = {值1,值2,……值n}

例:int a[]= {1,2,3}

动态初始化:

数据类型 数组名[] =new 数据类型[数组长度];

数据类型 数组名[];

数组名= new数据类型[数组长度];

(如果用动态初始化建议用地一种)

注意点:1.数组下标编号从0开始

        2.两种初始化方式不可随意组合比如:

          Int a[];

          a={1,2,3,4,5,};

这个就不对了,下午做二维数组的排序时where就犯了个类似的脑残错误找了半天。

<!--[if !supportLists]-->三.    <!--[endif]-->二维数组的理解和使用

二维数组可以理解为元素为一位数组的一位数组,同理N维数组可以理解成元素为N-1维数组的一维数组,当然可以有别的理解方式,但我这为什么都要最终把他们归结为一位数组,这里先卖个关子,一会儿在排序中会讲到。

1)二维数组的声明格式有两种:

数据类型 数据名[][];

 

数据类型[][] 数据名;

      2) 维数组的初始化也是有两种方法:

直接初始化:

例:int a[][]={ {1,2}{3,3}};

动态初始化也分两种:这里直接上示例

<!--[if !supportLists]-->1.      <!--[endif]-->int a[][];

a =new int[2][3];

 

<!--[if !supportLists]-->2.      <!--[endif]-->int a[][];

b = new int[2][];

b[0] =new int[3];

b[1] =new int[3];

         注意:在JAVA中不要求多维数组的每一维长度相等,即我们平时所说的列长度,如二维数组的第二个[]的数不一定相同,这点与C语言不同;

<!--[if !supportLists]-->四.    <!--[endif]-->数组的排序

 

关于一维数组的排序:冒泡排序,选择排序,插入排序,希尔排序,快速排序等等吧,各种参考书都有我再讲也没意思,大家就自己研究一下,不难。下面分享一个也不难但是比较有意思的二维数组排序。

二维数组排序的思想是:创建一个一维数组存放二维数组的元素,然后对一位数组排序(我用的是冒泡排序),最后再依次输出二维数组。

有代码有真相:package exercise0731;

/**
* 二維數組
* @author where
*
*/
public class DimArray
{

public static void main(String[] args)
{

//創建一個二維數組對象
int[][] a =new int[5][5];

//對二維數組賦值
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
java.util.Random ran=new java.util.Random();
a[i][j] = ran.nextInt(10);
}
}
//打印二維數組
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
int[][] k=sort(a);
//打印二維數組
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
//排序
public static int[][] sort (int[][] x)
{
int[] b=new int[x.length*x[0].length];

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

b[i+t*5]=x[t][i];

}
}
for(int j=0;j<x.length*x[0].length;j++)
{
for(int k=j+1;k<x.length*x[0].length;k++)
{
if(b[j]>b[k])
{
int temp=b[j];
b[j] = b[k];
b[k] = temp;
}
}
}
for(int t=0;t<x.length;t++)
{
for(int i=0;i<x[t].length;i++)
{
x[t][i]= b[i+t*5];
}
}
return x;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐