Java和C++的数组比较
Java:
数组的定义:
如下两种方式都可以:
int array[];
int[] array;
注意:数组在定义后,不能直接使用。必须在初始化后才能使用。
初始化有两种方式:
1、静态初始化:
int array[] = {2,3,4};
2、动态初始化:
array = new int[2];
array[0] = 0;
array[1] = 1;
array[2] = 2; // 这句话没有语法错误,运行时会触发异常:java.lang.ArrayIndexOutOfBoundsException
可以通过length获取数组的长度:
System.out.println(array.length); // array.length将会返回2
注意:不能在[]中指定数组的大小。
二维数组:
int array[ ][ ] = { {1, 2}, {2, 3}, {4, 5} };
二维数组的长度计算如下:
System.out.println(array.length); // array.length返回3
System.out.println(array[1].length); // array[1].length返回2
二维数组中可以看作是数组的数组;第1维(维数从0开始)中不同的元素(一维数组)的长度可以不同:
int array[ ][ ] = { {1, 2}, {2, 3}, {4, 5, 6} };
System.out.println(array[0].length); // array[0].length返回2
System.out.println(array[1].length); // array[1].length返回2
System.out.println(array[2].length); // array[2].length返回3
C++:
声明数组时要指定数组元素的数量:
int array[2];
声明后,即可使用:
array[0] = 0;
array[1] = 1;
array[2] = 2; // 这句话没有语法错误,运行时也没有做任何检查。后果不可预料,极度危险。
数组可以在声明的同时初始化:
int array[2] = {0, 1}; // 若列表中元素的个数必须小于或等于声明中的元素个数,否则,编译会出错。
可以省略声明中的元素个数:
int array[] = {0, 1};
注意:int[] array是不符合语法的;int array[]也是不符合语法的(如果要这么写,那么必须在声明的同时进行初始化)。
获取数组长度:
cout << sizeof(array) / sizeof(int);
或者:
cout << std::extent<decltype(array)>::value << endl;
decltype是C++11的特性;std::extent在头文件type_traits中。
二维数组:
int array[3][2] = { {1, 2}, {2, 3}, {4, 5} };
只有第一维的长度可以省略:
int array[][2] = { {1, 2}, {2, 3}, {4, 5} };
数组必须是个方方正正的矩阵,第1维(维数从0开始)的每一个元素(一维数组)的长度必须相当。
对于上述二维数组:
cout << sizeof(array) / sizeof(int) << endl; // 返回6
cout << std::extent<decltype(array)>::value << endl; // 返回第0维的长度,3
cout << std::extent<decltype(array), 1>::value << endl; // 返回第1维的长度,2
注意:std::extent的声明如下:
template<class T, unsigned N = 0>
struct extent;
Java和C++的数组比较的更多相关文章
- java中将一个字符数组赋值给另一个,两者同时变化
java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才 ...
- Java 图片提取RGB数组 RGBOfCharMaps (整理)
package demo; /** * Java 图片提取RGB数组 RGBOfCharMaps (整理) * 声明: * 和ImageCombining配合使用的工具,这里是提取图片的R.G.B生成 ...
- Java之--Java语言基础组成—数组
Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...
- 在Java中怎样把数组转换为ArrayList?
翻译自:How to Convert Array to ArrayList in Java? 本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在S ...
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...
- JAVA中list,set,数组之间的转换详解
JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.coll ...
- Java 集合 集合与数组之间的转换
Java 集合 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 ...
- Java 基础类型转换byte数组, byte数组转换基础类型
Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组
- java byte【】数组与文件读写(增加新功能)
今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: ...
- java.sql.SQLException之数组越界
java.sql.SQLException之数组越界 1.具体错误如下: (1)java.sql.SQLException:Parameter index out of range(0<1) ( ...
随机推荐
- TIMESTAMP(6)类型的时间差
TIMESTAMP 数据类型 它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息. 以分钟为单位查询时间差 select ROUND(TO_NUMBER(to_date(to_c ...
- 异常:Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: com.google.common.base.Preconditions.che ckState(ZLjava/lang/String;I)V
Instantiation of bean failed; nested exception is java.lang.NoSuchMethodError: com.google.common.bas ...
- <mvc:resources mapping="/xxx/**" location="/xxx/"/>无效,可能和Controller的URL模式有关
某项目webapp下有子目录res,其中有img.css.js等存放静态资源的文件夹. 在定义了dispacher-servlet的<url-pattern>/</url-patte ...
- [Design] 后端程序的高并发与异步
既然涉及到高并发这个概念,就少不了先谈这么几个概念,并发数.多进程.多线程.协程.负载均衡. 操作系统上讲的并发是操作系统上有几个程序在同时执行,单核CPU在微观上是由CPU调度执行,非同时执行,多核 ...
- ruby在index页面显示货币符号
1.显示人民币符号 <td><%= number_to_currency product.price, unit: "¥" %></td> 2. ...
- pytorch1.0 安装执行后报错ImportError: No module named future.utils
File "/usr/local/lib/python2.7/dist-packages/caffe2/python/utils.py", line 10, in <modu ...
- IntelliJ IDEA mybatis-generator的使用
STEP 1. 在maven项目的pom.xml 添加mybatis-generator-maven-plugin 插件 pop.xml <dependency> <groupId& ...
- JAVA WEN开发环境与搭建
一.下载安装JDK1.配置jdk开发环境JAVA_HOME 2.path 二.下载安装eclipse javaEE版本 三.安装部署tomcat3.1.安装: 直接解压到指定目录即可.(注:目录不要太 ...
- selenium使用技巧
标签(空格分隔): selenium 我们进行selenium的时候,就是通过webdriver,对浏览器做一些操作的: webdriver,除了find操作,之外还有哪些方法和属性呢? 1.获取当前 ...
- java itext替换PDF中的文本
itext没有提供直接替换PDF文本的接口,我们可以通过在原有的文本区域覆盖一个遮挡层,再在上面加上文本来实现. 所需jar包: 1.先在PDF需要替换的位置覆盖一个白色遮挡层(颜色可根据PDF文字背 ...