1.声明数组变量:

           double[] array=new double[10];
        double array[]=new double[10];
      double[] array1=new double[5];
      double[] mylist={1.0,2.0,3.0,4.0};//声明创建和初始化一句表达,不能拆分
	    double[][] myArray=new double[2][];//maArray.length=5,注意此时new double创建时必须指定第一个下标
    myArray[0]=new double[5];//myArray[0].length=5
myArray[1]=new double[4];//myArray[1].length=4
myArray[2]=new double[3];//myArray[2].length=3
myArray[3]=new double[2];//长度为2
myArray[4]=new double[1];//长度为1
          int [][] myArray2={{1,2,3,4,5},{6,7,8,9},{10,11,12},{13,14},{15}};//声明创建和初始化一句表达,不能拆分

注意

❶声明数组变量"double[] array";并不会在内存中分配空间,只是创建一个对数组应用的存储位置。默认值为null。实质上,array只是一个含有10个double元素数组的引用变量。

❷创建数组数即不能修改大小。可以使用array.length获取长度。

❸创建数组后,元素均赋予默认值。基本类型默认0,char默认‘\u0000’,boolen类型默认false

❹不同于C++采取一行填满才能存下一行的存储模式,Java每行的元素个数可以不同。

❺Java的数组变量的维度,额可以使用控制台输入的形式,如下:

Scanner input=new Scanner(System.in);
int length=input.nextInt();
int[] intArray=new int[length];
for(int u:intArray)//使用for-each遍历
System.out.println(u);

2.初始化与赋值

❶直接初始化 double[] mylist={1.0,2.0,3.0,4.0};//未使用new,但声明、创建和初始化必须放在一条语句中

❷基于索引(0开始),或者使用for循环,一一初始化。可使用Scanner对象从控制台获得初始化

❸相同长度的数组变量可以使用for循环赋值或者初始化

     ❹数组复制,赋值或者复制数组初始化某个数组。复制之前目标数组应该已经分配存储空间:
arraycopy(sourceArray,src_pos,targetArray,tar_pos,length)

❺数组名赋值array=array1,不复制内容,仅复制array1的引用值至array。array和array1将指向同一个数组,原来array指向的new
double[10]则不能再引用,变成垃圾由JAVA虚拟机自动收回。

3.遍历和输出

❶基本类型可以使用循环输出

❷char数组,可以使用数组名输出输出,如System.out.println(charArrayName).

❸for-each遍历

             for(Type u:array)//对array中的所有元素,进行process操作。u和array的类型应该一致
                  {Process(u)........}.

4.作函数的形参或返回类型

❶使用值传递。不同于基本数据类型作形参,形参数组值变导致实参亦变

     ❷ 直接使用数组作为形参: function(dataType[] name)
      使用匿名数组显式引用如:printArray(new int[]{1,2,3,4,5,6});//直接使用初始化常量

❸返回类型为数组类型

               dataType[]  function(....)
    { dataType[] data=new dataType[10];
..........;
return data;}

以下生成随机字符数组并统计每个字符出现的次数:

package StudyArray;
public class StudyArray {
public static void main(String[] args) {
//随机生成50个数组并且,统计生成的个数
char[] charArray=new char[50];
ArrayProcess.creatCharArray(charArray);
int[] count=ArrayProcess.count(charArray);
ArrayProcess.printArray(charArray);
for(int i=0;i<26;i++)
System.out.println((char)(i+'a')+"---共有"+count[i]+"个");
}
} package StudyArray;
public class ArrayProcess {
public static void printArray(char[] charArray)
{
for(int i=0;i<charArray.length;i++)
if((i+1)%10==0)
System.out.println(charArray[i]);
else
System.out.print(charArray[i]+" ");
}
public static void creatCharArray(char[] charArray)
{
for(int i=0;i<charArray.length;i++)
charArray[i]=RandomCharacter.getRandomLower();
}
public static int[] count(char[] charArray)
{
int[] count=new int[26];//26个字母
for(int i=0;i<charArray.length;i++)
count[charArray[i]-'a']++;
return count;
}
}

2维数组作参数如int[][] intArray,则声明function(int [][]),使用形式如function(intArray),然后分别对应使用1维长度和2长度进行遍历元素,可以参考数组创建法。

5.可变长参数列表

只能给方法(函数)最多1个可变长参数,且必须是函数参数表的最后一个参数。Java将可变长参数视作数组。在使用时,实参可以是同类型的数组或者可变的参数个数,Java创建数组并将参数传递给形参。

以下求数值中最大数:

package StudyArray;
public class StudyArray {
public static void main(String[] args) {
printMax(new double[]{12,-15,4,0,7,23});//匿名数组形参
printMax(0,1,2,3,4,5,6);//可变参数个数
}
public static void printMax(double...numbers)//可变长参数列表
{
double result=numbers[0];
for(int i=1;i<numbers.length;i++)
if(result<numbers[i])
result=numbers[i];
System.out.println("the max of these number is--"+result);
}
}

6.Arrays类

java.util.Arrays包括多种静态的数组处理函数,如排序,比较,填充,查找函数。对所有基本类型都已经重载。

❶java.util.Arrays.sort(array)//升序排列,sort(array,a,b),目标排序段索引为[a b-a]

❷java.util.Arrays.binarySearch(array,target)//数组必须提前安增序排列,存在返回index(从0),不存在返回“-(插入点下标+1)”

❸java.util.Arrays.equals(array1,array2);//判断2个数组是否相等,相等返回ture,不等false。可以输出

❹java.util.Arrays.fill(array,8);//整个数组填充8,fill(array,2,4,8),8部分填充

Java探索之旅(5)——数组的更多相关文章

  1. Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder

    1.数组线性表ArrayList 数组一旦定义则不可改变大小.ArrayList可以不限定个数的存储对象.添加,插入,删除,查找比较数组更加容易.可以直接使用引用类型变量名输出,相当于toString ...

  2. Java探索之旅(18)——多线程(2)

    1 线程协调 目的对各线程进行控制,保证各自执行的任务有条不紊且有序并行计算.尤其是在共享资源或者数据情况下. 1.1 易变volatile cache技术虽然提高了访问数据的效率,但是有可能导致主存 ...

  3. Java探索之旅(16)——异常处理

    1.异常与异常处理 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来 ...

  4. Java探索之旅(15)——包装类和字符类

    1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...

  5. Java探索之旅(14)——文本I/O与读写

    1文件类File    ❶封装文件或路径的属性.不包括创建和读写文件操作.File实例并不会实际创建文件.不论文件存在与否,可以创建任意文件名的实例.两种实例创建方式如下:               ...

  6. Java探索之旅(13)——字符串类String

    1.初始化 String类是Java预定义类,非基本类型而是引用类型. public class StudyString { public static void main(String[] args ...

  7. Java探索之旅(11)——抽象类与接口

    1.Java数据类型       ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括:         Primitive变量:boolean,byte, char, doubl ...

  8. Java探索之旅(7)——对象的思考

    1.知识要点 ❶不可变类:一旦创建,其内容不能改变的类称之为不可变类.满足:⑴所有数据域私有,⑵没有修改器,⑶没有访问器方法,其返回一个指向可变数据域的引用.(这样通过引用就能修改私有数据域).比如, ...

  9. Java探索之旅(6)——对象和类

    1.知识要点 假设: public ClassName{     int data;   String name;     ClassName(){data=1;}     public static ...

随机推荐

  1. R语言数据管理(三):数据读入

    R的数据读入非常灵活,即可以在R软件中直接输入,也可以读入外部数据. 一.直接输入数据 ①c()函数 ②scan()函数 其功能类似c()函数,scan()实际上是一种键盘输入数据函数.当输入scan ...

  2. 内存写越界导致破环堆结构引起的崩溃问题定位经验[如报错malloc(): memory corruption或free(): invalid next size]

    前段时间开发的一个后端C模块上线后,线上出core,初始时,因为訪问压力不大,所以崩溃是上线3天左右出现的.当时用gdb跟进调用堆栈并检查源代码,发现出core位置的代码沒有啥问题.因为当时开发任务较 ...

  3. python基础10 ---匿名函数和递归

    一.匿名函数 1.lambda表达式就相当于匿名函数,其格式为: lambda 参数列表:参数表达式 2.lambda自带return值,因为匿名函数有个限制,就是只能有一个表达式,不用写return ...

  4. Shell传参的多种方式

    Shell 传参的多种方式 使用$1 $2 这种类似占位符的方式 # 命令行调用 start.sh 8080 9090 # 脚本中获取 port1=$1 # 8080 port2=$2 # 9090 ...

  5. CentOS7 添加用户到 sudoers

    1.在装完系统后,CentOS默认普通用户是无法使用sudo命令的,这时我们就需要将登陆的用户加入/etc/sudoers 文件中 假设用户名是yhd 3.切换到超级用户:$ su - 当然输入的 p ...

  6. 每天一个Linux命令(36)ps命令

          Linux中的ps命令是Process Status的缩写.       ps命令用于报告当前系统的进程状态.可以搭配kill指令随时中断.删除不必要的程序.       (1)用法:   ...

  7. python有哪些关键字?让他自己“吐”出来!

    通过调用库来输出!for循环控制! 源代码: import keyword c = 0 for i in keyword.kwlist: print(i) c += 1 代码截图: 哈哈,关键字: F ...

  8. jquery获取表单元素与回显

    一.获取哦表单元素 dcoument表单文本对象的集合 all[] 对所有html元素的访问 forms 返回对文档中所有form对象的引用 forms[1] 对所有form对象引用 <scri ...

  9. nginx 启动/停止/重启

    启动: -c filename   : set configuration file (default: conf/nginx.conf) [root@LinuxServer sbin]# /usr/ ...

  10. BI入门经典(转载)

    原帖地址:http://blog.csdn.net/sgtzzc/archive/2009/10/10/4649770.aspx [前言] 昨天论坛的SQL Server大版新增了一个BI板块,大家讨 ...