java一维数组的定义方式
1. java问题的一维数组的定义及拷贝。。求大神指教。。
替你写了一下,测试通过
public class Main {
public static void main(String[] args) {
int[] a = new int[10];
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 20);
}
for(int i=0;i<a.length;i++){
System.out.println("a["+i+"]="+a[i]);
}
int[] b = new int[7];
for (int i = 0; i < 3; i++) {
b[i] = (int) (Math.random() * 100);
}
System.array(a,5,b,3,4);
for(int i=0;i<b.length;i++){
System.out.println("b["+i+"]="+b[i]);
}
}
}
输出结果:
a[0]=15
a[1]=14
a[2]=19
a[3]=18
a[4]=4
a[5]=8
a[6]=14
a[7]=6
a[8]=19
a[9]=10
b[0]=70
b[1]=46
b[2]=55
b[3]=8
b[4]=14
b[5]=6
b[6]=19
2. java中一维数组的概念
一维数组,就是数组,和C语言里面的数组定义是一样的,初始化的时候
int a[] = new int [10]; //声明并定义大小(即分配了指定大小的空间)
int a[] = {1,2,3}; // 声明并初始化,占用空间大小是3个int。
类似这样的就可以了
3. JAVA中如何定义数组类型的数组
你想干啥。二维数组?它的元素就是一位数组。int[][] arr = new int[3][2];里面有3个一位数组,每个一位数组有2个元素
4. Java中一维数组定义及初始化 int []a; a[]={1,2,3}; 是错的,为什么
如果你熟悉C/C++,Java数组的工作原理与它们不同。Java中的数组是对象,这就意味着与C++中的数组的根本不同.
1、数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。数组保存的仅仅是对象的引用,而不是对象本身。数组声明的两种形式:一、int[] arr; 二、int arr[]; 推荐使用前者,这是一个int数组对象,而不是一个int原始类型。
2、数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
4、在数组声明中包含数组长度永远是不合法的!如:int[5] arr; 。因为,声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
5、在数组构造的时候必须指定长度,因为JVM要知道需要在堆上分配多少空间。例:int[] arr = new int[5];
7、一维数组的构造。形如:String[] sa = new String[5]; 或者分成两句:String[] sa; sa = new String[5];
8、原始类型数组元素的默认值。对于原始类型数组,在用new构造完成而没有初始化时,JVM自动对其进行初始化。默认值:byte、short、 int、long--0 float--0.0f double--0.0 boolean--false char--'"u0000'。(无论该数组是成员变量还是局部变量)
10、对象类型的数组虽然被默认初始化了,但是并没有调用其构造函数。也就是说:Car[] myCar = new Car[10];只创建了一个myCar数组对象!并没有创建Car对象的任何实例!
11、多维数组的构造。float[][] ratings = new float[9][]; 第一维的长度必须给出,其余的可以不写,因为JVM只需要知道赋给变量ratings的对象的长度。
12、数组索引的范围。数组中各个元素的索引是从0开始的,到length-1。每个数组对象都有一个length属性,它保存了该数组对象的长度。(注意和String对象的length()方法区分开来)
13、Java有数组下标检查,当访问超出索引范围时,将产生运行时异常。注意,这种下标检查不是在编译时刻进行的,而是在运行时!也就是说int[] arr = new int[10]; arr[100] = 100; 这么明显的错误可以通过编译,但在运行时抛出!
Java中的数组中既可以存储基本的值类型,也可以存储对象。对象数组和原始数据类型数组在使用方法上几乎是完全一致的,唯一的差别在于对象数组容纳的是引用而原始数据类型数组容纳的是具体的数值。在讨论关于数组的问题时,一定要先确定数组中存储的是基本值类型还是对象。特别是在调试程序时,要注意这方面。
5. java:java一维数组和二维数组的定义方法
(一)一维二维数组的定义:
[html]view plain
/*一维数组定义的几种方法:
*int[]x;
intx[];
二维数组定义的几种方法:
int[][]y;
inty[][];
int[]y[];
int[]x,y[];//x一维、y二维
int[]x;
int[]y[];
-----------
a:
x[0]=y;//cuo
b:
y[0]=x;//yes
c:
y[0][0]=x;//cuo
d:
x[0][0]=y;//cuo
e:
y[0][0]=x[0];//yes
f:
x=y;//cuo
*/
packagetest;
publicclasstest{
publicstaticvoidmain(String[]args)
{
inta[][]=newint[3][4];
for(intx=0;x<3;x++)
{
for(inty=0;y<4;y++)
System.out.print(a[x][y]);
System.out.println();
}
}
}
控制台输出结果:
0000
0000
0000
(二)使用二维数组:
[html]view plain
6. java一维数组和二维数组的区别
在java中数组被看成是一个对象
在定义数组时,有两种定义方法:int[] a 和int a[];第二种是C/C++对数组定义方式,对于JAVA建议采用第一种定义方式。
总的原则:任何对象在被调用之前必须先被初始化!
1 一维数组的定义
//定义包含三个元素的一维数组
//方法1,先new对象,然后再初始化每个元素
int[] a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
方法一要注意的是不能这样写:
int[] a = new int[3];
a = {1,2,3};
原因是用new int[3]这种方式创建对象,对象已经被初始化并赋初值为0;可以用下面代码验证:
int[] d = new int[3];
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}
输入结果是:0 0 0
如果再用a = {1,2,3};来赋值,大家知道常量是不能再被赋值的,不可修改的。
//方法2,直接赋初值来创建对象
int[] b = {1,2,3};
//方法3,new完对象直接初始化
int[] c = new int[]{1,2,3};
方法三要注意的是不能这样写: int[] c = new int[3]{1,2,3};
即这种方法不能指定维度,原因:如果指定了数组初始化操作,则不能定义维表达式。
注意:如果用new定义数组时,必须指定其维度,这样定义是错误的: int[] d = new int[];
如果无法确定其元素个数,可以这样定义:int[] e = {};
2 二维数组的定义
基本与一维数组类似
//定义一个3行5列的二维数组
//方法1,先new对象,然后再初始化每个元素
int[][] a = new int[3][5];
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
//方法2,直接赋初值来创建对象
int[][] b = {{1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3} };
//方法3,new完对象直接初始化
int[][] a = new int[][] {{1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3} };
7. java 判定一个数组是否是一维数组
一维数组的定义
//定义包含三个元素的一维数组
int[] a = new int[3]; a = {1,2,3};//方法1,先new对象,然后赋值
int[] b = {1,2,3}; //方法2,直接赋值
int[] c = new int[]{1,2,3}; //方法3,new后直接赋值,注意不能制定长度
javascript中: String s = new Array("a","b"); 或者 String s = ["a","b"]; 或者 String s = new Array(); s.push("a");s.push("b");
注意:如果用new定义数组时,必须指定其维度,这样定义是错误的: int[] d = new int[];
如果无法确定其元素个数,可以这样定义:int[] e = {};
这样也是错误的: int[] c = new int[3]{1,2,3}; 因为初始化时候已经赋值为0;只能为
int[] c = new int[]{1,2,3};
8. java中一维数组的定义及初始化的方法有哪几种
上面的说法的确不对!
可以这样理解二维数组,把“一维数组”看做是一种数据类型,二维数组只不过是定义了包含5个数据类型是“一维数组”(和String一样的一种数据类型)的特殊一维数组。也可以扩展到多维数组。通常会有这种说法java中不存在多为数组,多维数组只是包含n个次维数组类型的元素的一维数组。
从Java中数组定义格式来理解数组的思想。
type[] arrayName;
type arrayName[];
第一种定义格式能更好的帮助我们理解数组,这个格式将 type[] 看做一种数据类型,同于int、String等,是一种引用类型。“type[] arrayName;”定义了一个type[]类型的变量arrayName。从内存中来看,“type[] arrayName;”只是在栈内存中存放了arrayName这个引用类型变量,并没有指向任何有效的内存。只有在初始化后,才会在堆内存中分配数组元素存储空间。
同时,这种定义方法,也解释了为什么说Java中可以不存在多维数组的说法,因为都是把次维数组看做一个数据类型的缘故。
9. java数组
数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来唯一地确定数组中的元素。
§5.1一维数组
一、一维数组的定义
type arrayName[];
其中类型(type)可以为Java中任意的数据类型,包括简单类型组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量。例如:
int intArray[];
声明了一个整型数组,数组中的每个元素为整型数据。与C、C++不同,Java在数组的定义中并不为数组元素分配内存,因此[]中不用指出数组中元素个数,即数组长度,而且对于如上定义的一个数组是不能访问它的任何元素的。我们必须为它分配内存空间,这时要用到运算符new,其格式如下:
arrayName=new type[arraySize];
其中,arraySize指明数组的长度。如:
intArray=new int[3];
为一个整型数组分配3个int型整数所占据的内存空间。
通常,这两部分可以合在一起,格式如下:
type arrayName=new type[arraySize];
例如:
int intArray=new int[3];
二、一维数组元素的引用
定义了一个数组,并用运算符new为它分配了内存空间后,就可以引用数组中的每一个元素了。数组元素的引用方式为:
arrayName[index]
其中:index为数组下标,它可以为整型常数或表达式。如a[3],b[i](i为整型),c[6*I]等。下标 从0开始,一直到数组的长度减1。对于上面例子中的in-tArray数来说,它有3个元素,分别为:
intArray[0],intArray[1],intArray[2]。注意:没有intArray[3]。
另外,与C、C++中不同,Java对数组元素要进行越界检查以保证安全性。同时,对于每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intArray的长度。
例5.1
public class ArrayTest{
public static void main(String args[]){
int i;
int a[]=newint[5];
for(i=0;i<5;i++)
a[i]=i;
for(i=a.length-1;i>=0;i--)
System.out.println("a["+i+"]="+a[i]);
}
}
运行结果如下:
C:\>java ArrayTest
a[4]=4
a[3]=3
a[2]=2
a[1]=1
a[0]=0
该程序对数组中的每个元素赋值,然后按逆序输出。
三、一维数组的初始化
对数组元素可以按照上述的例子进行赋值。也可以在定义数组的同时进行初始化。
例如:
int a[]={1,2,3,4,5};
用逗号(,)分隔数组的各个元素,系统自动为数组分配一定空间。
与C中不同,这时Java不要求数组为静态(static)。
四、一维数组程序举例:
例5.2Fibonacci数列
Fibonacci数列的定义为:
F1=F2=1,Fn=Fn-1+Fn-2(n>=3)
public classFibonacci{
public static void main(String args[]){
int i;
int f[]=new int[10];
f[0]=f[1]=1;
for(i=2;i<10;i++)
f[i]=f[i-1]+f[i-2];
for(i=1;i<=10;i++)
System.out.println("F["+i+"]="+f[i-1]);
}
}
运行结果为:
C:\>java Fibonacci
F[1]=1
F[2]=1
F[3]=2
F[4]=3
F[5]=5
F[6]=8
F[7]=13
F[8]=21
F[9]=34
F[10]=55
例5.3冒泡法排序(从小到大)
冒泡法排序对相邻的两个元素进行比较,并把小的元素交到前面。
public class BubbleSort{
public static void main(String args[]){
int i,j;
int intArray[]={30,1,-9,70,25};
int l=intArray.length;
for(i=0;i<l-1;i++)
for(j=i+1;j<l;j++)
if(intArray[i]>intArray[j]){
int t=intArray[i];
intArray[i]=intArray[j];
intArray[j]=t;
}
for(i=0;i<l;i++)
System.out.println(intArray[i]+"");
}
}
运行结果为:
C:\>java BubbleSort
-9
1
25
30
70
§5.2多维数组
与C、C++一样,Java中多维数组被看作数组的数组。例如二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。下面我们主要以二维数为例来进行说明,高维的情况是类似的。
一、二维数组的定义
二维数组的定义方式为:
type arrayName[][];
例如:
int intArray[][];
与一维数组一样,这时对数组元素也没有分配内存空间,同要使用运算符new来分配内存,然后才可以访问每个元素。
对高维数组来说,分配内存空间有下面几种方法:
1直接为每一维分配空间,如:
int a[][]=new int[2][3];
2从最高维开始,分别为每一维分配空间,如:
int a[][]=new int[2][];
a[0]=new int[3];
a[1]=new int[3];
完成1中相同的功能。这一点与C、C++是不同的,在C、C++中必须一次指明每一维的长度。
二、二维数组元素的引用
对二维数组中每个元素,引用方式为:arrayName[index1][index2] 其中index1、index2为下标,可为整型常数或表达式,如a[2][3]等,同样,每一维的下标都从0开始。
三、二维数组的初始化
有两种方式:
1直接对每个元素进行赋值。
2在定义数组的同时进行初始化。
如:int a[][]={{2,3},{1,5},{3,4}};
定义了一个3×2的数组,并对每个元素赋值。
四、二维数组举例:
例5.4矩阵相乘
两个矩阵Am×n、Bn×l相乘得到Cm×l,每个元素Cij=�aik*bk (i=1..m,n=1..n)
public class MatrixMultiply{
public static void main(String args[]){
int i,j,k;
int a[][]=new int[2][3];
int b[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
int c[][]=new int[2][4];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a[i][j]=(i+1)*(j+2);
for(i=0;i<2;i++){
for(j=0;j<4;j++){
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
System.out.println("\n***MatrixA***");
for(i=0;i<2;i++){
for(j=0;j<3;j++)
System.out.print(a[i][j]+"");
System.out.println();
}
System.out.println("\n***MatrixB***");
for(i=0;i<3;i++){
for(j=0;j<4;j++)
System.out.print(b[i][j]+"");
System.out.println();
}
System.out.println("\n***MatrixC***");
for(i=0;i<2;i++){
for(j=0;j<4;j++)
System.out.print(c[i][j]+"");
System.out.println();
}
}
}
其结果为:
C:\>java MatrixMultiply
for(j=0;j<4;j++)
System.out.print(c[i][j]+"");
System.out.println();
}
}
}
其结果为:
C:\>java MatrixMultiply
***MatrixA***
2 3 4
4 6 8
***MatrixB***
1 5 2 8
5 9 10 -3
2 7 -5 -18
***MatrixC***
25 65 14 -65
50 130 28 -130
如果你学过线性代数,应该可以比较好地理解多维数组。
多维数组和矩阵结合紧密。
a[i][j]就是第i-1行的第j-1列的元素,因为下标是从0开始的。
比如:
一个数组:1 2 3
4 5 6
a[0][0]=1 a[0][1]=2 a[0][2]=3
a[1][0]=3 a[1][1]=5 a[1][2]=6
我推荐你看几本书:
1.Thinking in Java
2.Java 2 核心技术
3.Java2实用教程
4.面向对象程序设计与java语言
10. 怎样用java定义一个int数组
数组:是一组相关变量的集合数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组
数据的有点不使用数组定义100个整形变量:int i1;int i2;int i3
使用数组定义 int i[100];
数组定义:int i[100];只是一个伪代码,只是表示含义的
(1)一维数组
一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的,
使用java数组,必须经过两个步骤,声明数组和分配内存给该数组,
声明形式一
声明一维数组:数据类型 数组名[]=null;
非配内存给数组:数组名=new 数据类型[长度];
声明形式二
声明一维数组:数据类型 [] 数组名=null;
(2)java数据类型分为两大类
1.基本数据类型
int、long操作的时候本身就是具体的内容
引用数据类型:数组、类、接口
引用传递的就是一个内存的使用权,一块内存空间,可能有多个人同时使用
2.事例声明数组