java数组的方法 java定义数组的三种类型
大家好,今天给各位分享java数组的方法的一些知识,其中也会对java定义数组的三种类型进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
请教JAVA中数组的正确定义方法
一般来说这是不同语言之间竞争的结果,第二种方法在c语言等面向过程的语言中被广泛的使用,鉴于许多程序员在学习java或者c#时候,都具有部分c的基础,所以这种数组声明的方式被保留了下来。
不过对于java和C#这类面向对象的语言,都推荐使用第一种命名方式,原因很简单,第一,java和c#把数组当成是对象处理,将数组统一的继承自Array这个类。第二,将方括号表示是数组类型,而写在后方容易与变量的名称相互混淆,鉴于一般程序设计语言的变量的定义结构为:
变量类型变量名称赋值运算符变量名称或者常量参数;
因此采用第一种更有助于理解数组是一种引用的数据类型,而与基本数据类型相互区分。
其实在使用中,可以根据个人喜好来写,sun公司推荐第一种原因在于此。
Java数组有哪些用法
数组:是一组相关变量的集合数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组
数据的有点不使用数组定义100个整形变量:int i1;int i2;int i3
使用数组定义 int i[100];
数组定义:int i[100];只是一个伪代码,只是表示含义的(1)一维数组
一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的,使用java数组,必须经过两个步骤,声明数组和分配内存给该数组,声明形式一声明一维数组:数据类型数组名[]=null;非配内存给数组:数组名=new数据类型[长度];声明形式二声明一维数组:数据类型 []数组名=null;
(2)java数据类型分为两大类1.基本数据类型int、long操作的时候本身就是具体的内容引用数据类型:数组、类、接口
引用传递的就是一个内存的使用权,一块内存空间,可能有多个人同时使用
2.事例声明数组
数组的声明格式里,数据类型是数组元素的数据类型,常见的有整形、浮点型、与字符型等数组名是用来统一这组相同数据类型元素的名称,其命名规则和变量的相同数组声明后实际上是在栈内存中保存了此数组的名称,结下了是要在堆内存中配置数组所需要的内存,齐产固定是告诉编译器,所声明的数组要存放多少个元素,而new则是命令编译器根据括号里的长度。
基本数据类型偶读有其默认值:int 0;只要是引用数据类型默认值就是null事例
声明数组的同时分配内存空间声明数组的同时非配内存数据类型数组名[]=new数据类型[个数]int score[]=new int[10];声明一个元素个数为10的整形数组score,同时开辟依靠内存空间工期使用java中,由于整形数据类型占用的空间为4个byte,而整个数组score可保存的元素有10个。所以上例中占用的内存共有4*10=40个字节
(3)数组的访问
数组中元素的表示方法想要访问数组里的元素可以利用索引来完成,java的数组索引标号由10开始,以一个score[10]的整形数组为例,score[0]代表第一个元素一直向下,最后一个为score[9]
(4)取得数组的长度在java中取得数组的长度(也就是数组元素的长度)可以利用数组名称.length完成,数组名称.length--返回一个int类型的数据
(5)数组的静态初始化之前的数组,所采用的都是动态初始化,所有的内容在数组声明的时候并不具体的指定,而是以默认值的形式出现静态初始化是指在数组声明后直接为数组指定具体的内容如果想要直接在声明的时候给数组赋初始值,可以采用大括号完成,只要在数组的生命格式后面加上初值的赋值即可,数据类型数组名 []={初始值0,初始值1,初始值3,....初始值n};
范例排序,在操作中排序是比较常用的从大到小
这个时候不要被i值所迷惑if(score[i]>score[j]){
这一步主要知识为了比较,实际上完成之后输出的时候是根据j的值排序的
(6)二维数组
二维数组声明的方式和以为数组的类似,内存分配也一样是用new这个关键字
其实声明与分配内存的格式如下动态初始化数据类型数组名[][];数组名=new数据类型[行的个数][列的个数];
声明并初始化数组数据类型数组名[][]=new数据类型[行的个数][列的个数];静态初始化
(7)二维数组的存储声明二维数组score同时开辟一段内存空间int score[][]=new int[4][3];整体数据score可保存的元素是4*3=12个,在java中,int数据类型所占用的空间为4个字节,因此该整形数组占用的内存共为4*12=48个字节事例
(8)二维数组静态初始化
用到的时候才会开辟空间,不用的(红色部分)则不开辟空间多维数组一般只是用到二维数组三维数组简单了解
java数组的相关操作
1.在Java中所有的数组都在一个缺省的属性Length,用于获取数组中元素的个数.
2.数组的复制System.arraycopy()
3.数组的排序Arrays.sort()
4.在已排序的数组中查找某个元素Arays.binarySearch()*/
import java.util.Arrays;//对数组排序时要导入此包.
class ArrayTest
{
public static void main(String[] args)
{
/*int [] num1=new int []{1,2,3};
int [] num2=new int [3];
System.arraycopy(num1,0,num2,0,num1.length);
for(int i=0;i<num2.length;i++)
{
System.out.println(num2[i]);
}*/
//对象数组的copy
/*Point [] pts1=new Point []{ new Point(1,1),new Point(2,2),new Point(3,3)};
Point [] pts2=new Point[3];
System.arraycopy(pts1,0,pts2,0,pts1.length);
for(int i=0;i<pts1.length;i++)
{
System.out.println("x="+pts1[i].x+","+"y="+pts1[i].y);
}
pts2[2].x=6;//对pts1[2].x也进行了修改.
pts2[2].y=6;//对pts1[2].y也进行了修改.
System.out.println("x="+pts1[2].x+","+"y="+pts1[2].y);*/
//数组的排序
/*int [] num=new int []{3,1,2};
Arrays.sort(num);
for(int i=0;i<num.length;i++)
{
System.out.println(num[i]);
}
int index=Arrays.binarySearch(num,3);
System.out.println("index="+index);
System.out.println("element="+num[index]);*/
Student [] st=new Student[]{new Student(1,"zhangsan"),
new Student(2,"lisi"),
new Student(3,"wangwu"),
new Student(3,"mybole")};
Arrays.sort(st);
for(int i=0;i<st.length;i++)
{
System.out.println(st[i]);
}
}
}
//要对对象进行排序必须实现comparable接口
class Student implements Comparable
{
int num;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
//重写toString方法
public String toString()
{
return"number="+num+","+"name="+name;
}
public int compareTo(Object o)//覆盖Comparable中的CompareTo方法.
{
Student s=(Student)o;
//return num>s.num?1:(num==s.num?0:-1);
int rusult=num>s.num?1:(num==s.num?0:-1);//在num相同时,对name进行排序.
if(0==rusult)
{
rusult=name.compareTo(s.name);//对于比较字符类型的,在String类中已经重写的compareTo方法,可以直接使用.
}
return rusult;
}
}
class Point
{
int x,y;
Point(int x,int y)
{
this.x=x;
this.y=y;
}
}
java数组的方法和java定义数组的三种类型的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!