java下标为什么从0开始的,C语言的下标为什么从0开始
老铁们,大家好,相信还有很多朋友对于java下标为什么从0开始的和C语言的下标为什么从0开始的相关问题不太懂,没关系,今天就由我来为大家分享分享java下标为什么从0开始的以及C语言的下标为什么从0开始的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
数组下标的问题
记得循环的时候,下标是从0开始到N-1,打印出遍历数组的索引十分有帮助,注意一下它的循环条件,也可以加断点。
出现此类问题的原因有多方面。总结一下我所理解的,数组的长度决定了它所能装载的数据的量。还有就是数组计数是从零开始的。例如:当Srring arr[]==new String[6];如果要往里输入名字的话就只能输入六个,多了就是下标越界。
另外数组一般都是与for循环结合起来用,所以用的的时候要注意一下它的循环条件。数组下标越界异常:Java.lang.ArrayIndexOutOfBoundsException,这是一个非常常见的异常,从名字上看是数组下标越界错误,解决方法就是查看为什么下标越界。这种错误就是字符串索引越界。
当处理数组越界时,打印出遍历数组的索引十分有帮助,这样我们就能够跟踪代码找到为什么索引达到了一个非法的值。
所谓的数组越界,简单地讲就是指数组下标变量的取值超过了初始定义时的大小,导致对数组元素的访问出现在数组的范围之外,这类错误也是 C语言程序中最常见的错误之一。
java中二维数组第一个下标为0
int[][] a=new int[0][0];
合法,不知道你那个serise是什么值,但是根据你的意思应该是合法的.
java中数组的长度可以为零,这个可以应用于一些特定的情况,很多情况得到一个零长度的数组要比一个NULL的有用的多。
就像一个空的ArrayList比一个NUll好一样,程序中不用专门去做NULL的判断,直接拿来循环取值就行,虽然取不到.
为什么java 7 开始在数字中使用下划线
JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量。其中的一个特征是介绍字面常量数字的下划线。从Java7开始,你就可以在你的Java代码里把长整型数字比如10000000000写成一个更具可读性10_000_000_000。在字面常量数字中加下划线的一个重要的原因是避免一些难以通过看代码来发现的细微的错误。对比10000000000和1000000000,我们很难发现少了一个0或多了一个0,但对于10_000_000_000和1_000_000_000却不然。所以如果你在Java源码中要处理大数字,你可以在数字中加入下划线来提高可读性。使用的时候要注意:在字面常量数字里加下划线是有一定规则的,下划线只能在数字之间,在数字的开始或结束一定不能使用下划线。在本章节的以下部分,我们将学习如何在字面常量数字中使用下划线,以及在字面常量数字中使用它们的规则。
怎样在Java中有效的给数字使用下划线
正如我之前说的,这不过是个语法糖,非常像字符串在 switch场景下的实现,这也是使用编译器的帮助下实现的。编译期间,编译器把这些下划线移除,并把真实的数字赋值给变量。比如在编译期间10_000_000将会被转化成10000000。既然CPU在处理长数字上毫无压力,对于我们这些可怜的在处理长数字上有困难的人类来说,就不用为它烦恼了。这个特征尤其在需要处理大数额金钱、信用卡号码、银行账号以及其它需要长账号的银行和金融领域更有用。尽管在写Java文件里写敏感信息很让人沮丧,我们应该永远不要在编码的时候这么做。但在数字中用下划线让我们的生活比以前变得更加简单了。
在Java中给数字加下划线的规则
Java编码语言对给数值型的字面值加下划线有严格的规定。如上所述,你只能在数字之间用下划线。你不能用把一个数字用下划线开头,或者已下划线结尾。这里有一些其它的不能在数值型字面值上用下划线的地方:
在数字的开始或结尾
对浮点型数字的小数点附件
F或L下标的前面
该数值型字面值是字符串类型的时候
这里有一些例子,来表现哪些地方加给数字加下划线有效,哪些地方给数字加下划线无效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
float pi1= 3_.1415F;//无效的;不能在小数点之前有下划线
float pi2= 3._1415F;//无效的;不能在小数点之后有下划线
long socialSecurityNumber1= 999_99_9999_L;//无效的,不能在L下标之前加下划线
int a1= _52;//这是一个下划线开头的标识符,不是个数字
int a2= 5_2;//有效
int a3= 52_;//无效的,不能以下划线结尾
int a4= 5_______2;//有效的
int a5= 0_x52;//无效,不能在0x之间有下划线
int a6= 0x_52;//无效的,不能在数字开头有下划线
int a7= 0x5_2;//有效的(16进制数字)
int a8= 0x52_;//无效的,不能以下划线结尾
int a9= 0_52;//有效的(8进制数)
int a10= 05_2;//有效的(8进制数)
int a11= 052_;//无效的,不能以下划线结尾
下面是一些在数字中用下划线的其它示例:
1
2
3
4
5
6
7
8
long creditCardNumber= 6684_5678_9012_3456L;//在编码的时候,最好永远不要这么做
long socialSecurityNumber= 333_99_9999L;//在编码的时候,最好永远不要这么做
float pi= 3.14_15F;
long hexBytes= 0xFF_EC_DE_5E;
long hexWords= 0xCAFE_BABE;
long maxLong= 0x7fff_ffff_ffff_ffffL;
byte nybbles= 0b0010_0101;
long bytes= 0b11010010_01101001_10010100_10010010;
使用下划线后,你会发现你的代码比以前可读性更强。顺便说一句,在java中应该一直用L去表示一个长整型数字。尽管用小写的l表示长整型数也是合法的,但他看起来太像1了,所以应该永远都不要用它。告诉我你能不能再 12l和121之间找出差别,我猜能找到的人不多吧。但是在 12L与121之间呢?
总之,要养成在数字中使用下划线的习惯,尤其是对长整型数来说,这样能增加它的可读性。我知道这个功能只是从Java1.7开始才有效,还没有被广泛的使用。但鉴于Java1.8的现状,我期望Java8在Java社区中传播比Java7更加迅速更加广泛。
C语言的下标为什么从0开始
C语言的下标与其地址是相对应的,而第一个下标刚好是数组所在的地址,所以不用加偏移(既加0),所以C语言的下标就定为从0开始(C语言的发明者认为这样比较符合逻辑).
这个特性是为了方便编译器设计者而设定的。(为什么不呢,开头几年c语言的主要客户就是编译器设计者啊)。
偏移量在编译器设计者心目中根深蒂固,a[3]就是首地址为a+3的值。所以c语言被设计成这个样子。
后来的c++,java也都遵循这个约定。但并不是所有语言都是这样。比如:vb可以指定下标,而关联数组则是用字符串做为下标的。
java下标为什么从0开始的和C语言的下标为什么从0开始的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!