几乎所有的程序设计语言都支持数组。在C和C++中使用数组是很危险的。因为C和C++中的数组就是内存块。如果一个程序要访问其自身内存块之外的数组,或者在数组初始化之前使用它,都会产生难以预料的后果。

java的主要目标之一就是安全性。java确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销以及运行时的下标检查为代价的。但是由此换来的安全性和效率的提高,也是值得的。

当java创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会被自动初始化一个特殊值。该值拥有自己的关键字null,一旦java看见了null,就知道这个引用还没有指向某个对象。如果使用某个指向null的引用,就会在运行时报错。

1.Java中的数组是对象。数组保存的仅仅是对象的引用,而不是对象本身。

2、数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

3、在数组声明中包含数组长度永远是不合法的!

数组的声明:

c++
int arr[2];
a[0]=1;
a[1]=1;

java
int arr[] = new int[2];
a[0]=1;
a[1]=1;

C#中定义数组:

  1. 一维 int[] i= new int[12];
  2. 二维 int[,] i= new int[5,12];
  3.  
  4. 一维不能写成 int i[]
    二维不写成 int[][] i

在c++中,数组定义时,已经分配存储空间,并可以使用。 (定义时指定数组大小)
在java中,数组定义时,int arr[],只字义了数组变量,数组是不可以使用的。 只有数组new以后,才会创建数组,分配存储空间,并可以使用。 (定义时指定数组大小是非法的,创建时指定数组大小)

java中数组的静态初始化

int[] c = {1,2,3,4}

或者int[] d= new int[]{1,2,3,4}

数组常见异常

超出范围异常ArrayIndexOutOfBoundsException

空指针异常(如果没有为数组变量分配指向的内存空间,就调用其属性int[] a ; a.length)

数组排序

  1. //Java.util.Arrays类的Sort()方法提供数组元素的排序
  2.  
  3. public static void main(String[] args) {
  4.  
  5. int[] nums={5,2,6,7,9,5,498,5};
  6. Arrays.sort(nums);
  7. for(int i=0;i<nums.length;i++)
  8. System.out.println(nums[i]);
  9.  
  10. }

二维数组的使用:

使用二维数组打印10行的杨辉三角,杨辉三角实际上是二项式的展开式的系数

  1. package com.atguigu.java;
  2. import java.util.Arrays;
  3. public class HelloWorld {
  4. //打印十行的杨辉三角
  5. public static void main(String[] args) {
  6. /**
  7. * 1
  8. * 1 1
  9. * 1 2 1
  10. * 1 3 3 1
  11. * 1 4 6 4 1
  12. *
  13. *
  14. * 1.什么是杨辉三角:二项式展开式的系数
  15. * 2.为什么使用二维数组:因为杨辉三角是由行和列组成的。每一行是一个数组
  16. * 3.杨辉三角的特点:
  17. * 3.1第n行有n个元素(n>=1)
  18. * 3.2每一行的第一个元素和最后一个元素都是1
  19. * 3.3不等于1的那些元素的值为上一行的对应列和对应列的前一列的元素的和 *
  20. */
  21.  
  22. //第一步:先声明一个二维数组额,二维数组有10个元素
  23. int[][] yh = new int[10][];
  24. /**
  25. * 杨辉是一个二维数组,二维数组的每个元素是一维数组。而一维数组是引用型,其默认值是null
  26. * 所以现在输出yh的每个元素,得到10个null
  27. */
  28.  
  29. //第二步:对二维数组的元素进行初始化:第i个元素(i从0开始)为长度为i+1的一维数组
  30. for(int i=0;i<yh.length;i++){
  31. yh[i]=new int[i+1];
  32.  
  33. //第三步:对具体的每一个元素进行初始化(是一的元素):
  34. //yh[i][0]=1 , yh[i][i]=1,
  35. yh[i][0] = 1;
  36. yh[i][i] = 1;
  37.  
  38. //第四步:不是1的元素
  39. //yh[i][j] = yh[i-1][j]+yh[i-1][j+1](i>1 && j>0 && j<i)
  40. if(i>1){ //从第三行开始
  41. for(int j =1;j<i;j++){
  42. yh[i][j] = yh[i-1][j]+yh[i-1][j-1];
  43. }
  44. }
  45. }
  46.  
  47. for(int i =0;i<yh.length;i++){
  48. for(int j=0;j<yh[i].length;j++){
  49. System.out.print(yh[i][j]+" ");
  50. }
  51. System.out.println();
  52. }
  53. }
  54.  
  55. }

Length和GetLength()

Array.GetLength 方法,这个只是C#中的方法

获取一个 32 位整数,该整数表示 Array 的指定维中的元素数

  1. public int GetLength(
  2. int dimension
  3. )
  4.  
  5. 参数
  6. dimension类型:System.Int32
  7. Array 的从零开始的维度,其长度需要确定。
  8.  
  9. 返回值
  10. 类型:System.Int32
  11. 一个 位整数,它表示指定维中的元素数。

二维数组 myArray
int k= myArray.Length;             //二维数组的长度
int k= myArray.GetLength(0);   //二维数组的长度
int k= myArray.GetLength(1);   //一维的长度(固定)

数组在C++和java中的区别的更多相关文章

  1. c语言中数组的定义和java中数组定义的一些区别

    感谢原文:https://blog.csdn.net/gzwdz778/article/details/79799408 一维情况下: c中,数组的声明需要给出数组的维数,比如: int arr[5] ...

  2. OC中的@interface和java中的区别以及 @implementation @protocol

      java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时, ...

  3. java 中的& &&区别以及 C++ 中& &&的区别

    java中的 & &&两个运算符 (1).&在java中称做: 逻辑与 判断boolean类型,只有两者都是true时,才会返回true 举例: boolean b1= ...

  4. Java中泛型区别以及泛型擦除详解

    一.引言 复习javac的编译过程中的解语法糖的时候看见了泛型擦除中的举例,网上的资料大多比较散各针对性不一,在此做出自己的一些详细且易懂的总结. 二.泛型简介 泛型是JDK 1.5的一项新特性,一种 ...

  5. Java中的堆栈区别

    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...

  6. 在Java中>、>>、>>>三者的区别

    Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力 ...

  7. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  8. Java中的数组初探

    1.数组的类型? Java中的数组为引用类型. 2.数组的三种初始化方式 1. int[] arr1=new int[] {1,2,3,4,}; 2. int[] arr2= {1,2,3,4,}; ...

  9. java中 列表,集合,数组之间的转换

    java中 列表,集合,数组之间的转换 java中 列表,集合,数组之间的转换 java中 列表,集合,数组之间的转换 List和Set都是接口,它们继承Collection(集合),集合里面任何数据 ...

随机推荐

  1. 【iOS控制器跳转时,NavigationBar有阴影动画闪过的解决办法】

    如题,push控制器时,由于默认的控制器view是黑色,push到这个控制器时,navigationBar(默认是透明效果)后面有一个黑色阴影一闪而过,解决办法将navigationBar设为图片填充 ...

  2. JPA事务回滚配置

    <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.or ...

  3. 如何学习H264协议

    如何学习h.264协议 首先,我假定你已经具有如下基础: 1 了解基本的视频知识,知道什么是YCbCr/YUV: 2 知道基本的视频压缩原理: 如果这两条还不具备,那么,停一下,补一下课.这方面的相关 ...

  4. jQuery的矿建结构小demo举例

    (function (global) { var document = global.document,//变成局部变量提高搜索的性能 init;// 核心函数 function itcast(sel ...

  5. Dhroid框架笔记(DhNet、Adapter)

    3.1.1 DhNet用于获取网络中的数据 DhNet net=new DhNet("路劲"); net.addParam("key", "参数&qu ...

  6. SSIS学习计划

    百科:SSIS是Microsoft SQL Server Integration Services的简称,是生成高性能数据集成解决方案(包括数据仓库的提取.转换和加载 (ETL) 包)的平台. htt ...

  7. (转)ECSHOP给分类添加代表图

    转之--http://www.cnblogs.com/wangblognet/archive/2012/12/09/2809916.html ecshop的模板有很多不完善的地方,比如添加商品分类的时 ...

  8. 转:常用的HTML标签和属性解释

    基本结构标签: <HTML>,表示该文件为HTML文件 <HEAD>,包含文件的标题,使用的脚本,样式定义等 <TITLE>---</TITLE>,包含 ...

  9. ThinkPHP 使用极光推送给ios推送消息

    HTML <div id="wrap"><a href="<{:U('Push/pushData')}>">推送</a ...

  10. C语言基础学习基本数据类型-字符专属的输入输出函数

    可以使用%c说明符以及scanf()和printf()函数来输入输出字符.现在我们将学习专门为面向字符而设计的一对函数:getchar()和putchar().getchar()函数没有参数,它返回来 ...