分析Java中的length和length()
在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度?
这里我们先举用实例去分析一下:
int[] arr=new int[3];
System.out.println(arr.length);//使用length获取数组的长度
String srt=”abc”;
System.out.println(str.length): //使用length()获取字符串的长度
那么我们问题是,为什么数组有length属性,而字符串有length()方法?
为什么数组有length属性?
我们已经知道数组是一个容器,它包含的是同一类型的固定数量的值,一旦数组被创建,它的长度就是固定的了,数组的长度我们可以作为final来理解,因此长度可以作为一个数组属性。
使用表达式创建数组方式如下,该方式指明了元素类型、数组的维度、以及至少一个维度的数组的长度。
该声明方式是符合要求的,因为他指定了一个维度的长度(该数组的类型为int,维度为2,第一维度的长度为3)
int[][] arr = new int[3][];
使用数组初始化的方式创建数组时需要提供所有的初始值。形式是使用{和}将所有初始值括在一起并用,隔开。
int[] arr = {1,2,3};
注:
这里可能会有一个疑问,既然数组大小是初始化时就规定好的,那么int[][] arr = new int[3][];定义的数组并没有给出数组的第二维的大小,那么这个arr的长度到底是如何“规定好”的呢?
其实,arr的长度就是3。其实Java中所有的数组,无论几维,其实都是一维数组。例如arr,分配了3个空间,每个空间存放一个一维数组的地址,这样就成了“二维”数组。但是对于arr来说,他的长度就是3。
int[][] a=new int[3][];
System.out.println(a.length);//3
int[][] b=new int[3][5];
System.out.println(b.length);//3
为什么String有length()方法?
String背后的数据结构是一个char数组,所以没有必要来定义一个不必要的属性(因为该属性在char数值中已经提供了)。和C不同的是,Java中char的数组并不等于字符串,虽然String的内部机制是char数组实现的。(注:C语言中,并没有String类,定义字符串通常使用char string[6] = “hollis”;的形式)
注:要想把char[]转成字符串有以下方式:
char []s = {‘a’,’b’,’c’};
String string1 = s.toString();
String string2 = new String(s);
String string3 = String.valueOf(s);
分析Java中的length和length()的更多相关文章
- java中数组有没有length()方法?string没有lenght()方法?
java中数组有没有length()方法,求数组的长度可以使用数组的length属性. int[] arr={1,2,3,4,5}; int length=arr.length;//求数组的长度 -- ...
- 从虚拟机指令执行的角度分析JAVA中多态的实现原理
从虚拟机指令执行的角度分析JAVA中多态的实现原理 前几天突然被一个"家伙"问了几个问题,其中一个是:JAVA中的多态的实现原理是什么? 我一想,这肯定不是从语法的角度来阐释多态吧 ...
- 详细分析 Java 中实现多线程的方法有几种?(从本质上出发)
详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 实现多线程的官方正确方法: 2 种. Oracle 官网的文档说明 方法小结 方法一: 实现 Runnabl ...
- 详细分析 Java 中启动线程的正确和错误方式
目录 启动线程的正确和错误方式 前文回顾 start 方法和 run 方法的比较 start 方法分析 start 方法的含义以及注意事项 start 方法源码分析 源码 源码中的流程 run 方法分 ...
- 【Java面试题】18 java中数组有没有length()方法?string没有lenght()方法?下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
数组没有length()这个方法,有length的属性.String有有length()这个方法. int a[]; a.length;//返回a的长度 String s; s.length();// ...
- Java中获取大小:length、length()、size()
1. java 中的 length 属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了 length 这个属性. 2. java 中的 length() 方法是针对字符串说的,如 ...
- 分析java中clone()方法 (转载+修改)
Java中的clone() 方法 java所有的类都是从java.lang.Object类继承而来的,而Object类提供下面的方法对对象进行复制. protected native Object c ...
- 通过字节码分析java中的switch语句
在一次做题中遇到了switch的问题,由于对switch执行顺序的不了解,在这里简单的通过字节码的方式理解一下switch执行顺序(题目如下): public class Ag{ static pub ...
- 简单分析Java中审批业务流程业务原理
随机推荐
- Java8必知必会
Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包. 流(stream)就如同迭代器(iterator),但附 ...
- 关于RL78 系列的bootloader
1.充分了解芯片FLASH结构分布,对FLASH进行分区 2.熟练使用FSL库 3.调试中断映射功能 4.调试一种通信方式,UART,CAN等 5.对FLASH进行编程,执行跳转APP程序,调试一个多 ...
- LeetCode——15. 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. ...
- 吴裕雄--天生自然TensorFlow高层封装:Keras-返回值
# 1. 数据预处理. import keras from keras.models import Model from keras.datasets import mnist from keras. ...
- UML-词汇表
样例:
- Android 自定义dialog类
首先定制style样式 styles.xml 加入自定义样式 <style name="CustomLoadingDialog"> <item name=&quo ...
- CodeForces 91B Queue (线段树,区间最值)
http://codeforces.com/problemset/problem/91/B B. Queue time limit per test: 2 seconds memory limit p ...
- HEX 文件格式
例 FDFFF885C3 :每行开头 第一个字节:表示本行的数据长度, 第二个,第三个字节表示本行数据的起始地址. 第四字节表示数据类型,数据类型有:0x00.0x01.0x02.0x03.0x04. ...
- LeetCode No.100,101,102
No.100 IsSameTree 相同的树 题目 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 输入: 1 1 / \ ...
- VBA引用管理加载宏
下载文件: VBA引用管理加载宏.rar 下载后,解压缩. Excel的 开发工具/加载项 在对话框中浏览 VBA引用管理.xlam VBA界面中,在工程右键菜单中出现: