Java中的.length与.length()

news2025/4/6 3:17:33

目录

  • 一. .length
    • 1. .length究竟有多长?
    • 2. 为什么会有.length呢?
    • 3. 二维数组的创建方法
    • 4. 数组是对象
  • 二. .length()
    • 1. .length()怎么用呢?
    • 2. char数组怎么转换为String
    • 3. String怎么转换为char数组
  • 三. 对比
    • 1. 为什么数组不像String,没有自己的类呢?
    • 2. 为什么String不能增加一个.length属性呢?

一. .length

1. .length究竟有多长?

先来回答两个问题,下面这两条

        int[][] a1 = new int[3][100];
        int[][] a2 = new int[3][6];

        System.out.println(a1.length);
        System.out.println(a2.length);

两个答案都是3。为什么会这样呢?我们看下面这张图:
在这里插入图片描述
这张图清晰的展示了二维数组在java语言中是如何存储的。二维数组其实在java语言中是按一维数组进行存储的(如果把二位数组比作一个矩阵的话,就是只存有几行),存储了各个连续存储单元的起始地址(eg:scores[0])。

2. 为什么会有.length呢?

那么为什么定义了一个数组之后,就可以使用.length属性呢?

因为数组本身是个容器,当数组创建好那一瞬间,申请的内存空间就是确定的,所以数组的长度自然也是确定的,它的类型是public final int,如下图:
在这里插入图片描述

3. 二维数组的创建方法

都说到这了,我们再回顾一下二维数组的创建方法:

  • 数据类型[ ][ ] 数组名=new 数据类型[数组长度][数组长度];
    • int[][] a = new int[3][4];
  • 数据类型[ ][ ] 数组名=new 数据类型[数组长度][ ];
    • int[][] a = new int[3][];
  • 数据类型[ ][ ] 数组名 = new 数据类型[ ][ ]{{数据1,数据2,…,数据n},{数据1,数据2,…,数据m},…,{数据1,数据2,…,数据q}};
    • n,m,q可以不相同,也就是每一列的数据个数可以不相同。
    • int[][] a = new int[][]{{1},{1,2},{1,2,3}};
  • 数据类型[ ][ ] 数组名=new 数据类型[数组长度][ ];
    • 这个方法可以看作是上一个方法的简化。
    • int[][] a = {{1},{1,2},{1,2,3}};

验证一下方法三和方法四是不是一样的:

    int[][] a3 = new int[][]{{1},{1},{1}};
    int[][] a4 = {{1}, {1}, {1}};

    System.out.println(Arrays.deepToString(a3));
    System.out.println(Arrays.deepToString(a4));

得出结果:
在这里插入图片描述
还真是一样的,以后还是简写吧!

4. 数组是对象

敲着敲着,发现这输入.length的时候,.之后,怎么有这么多选项,如下图:
在这里插入图片描述

clone()是第一个方法,就那这个开刀吧,我把鼠标放到方法上,发现了这个,如下图:
在这里插入图片描述
好家伙,你小子,数组是对象,继承自Object,那我试试下面这个报错不:
在这里插入图片描述
还真不报错,得出结论:数组是对象

二. .length()

1. .length()怎么用呢?

这玩意怎么用呢,看下面

        String s = "daf-asf";
        System.out.println(s.length());

2. char数组怎么转换为String

char[] r = {'a', 'b', 'c'};

//法一:
	String s1 = new String(r);
//法二:
	String s2 = String.valueOf(r);
//法三:
	String s3 = r.toString();

3. String怎么转换为char数组

String s = "daf-asf";
        
	char[] t = s.toCharArray();

三. 对比

1. 为什么数组不像String,没有自己的类呢?

没有必要。因为即使有了Array类,还需要额外的空间来存放数组。(这有点像先有鸡还是先有蛋的问题)String的底层是用char数组来实现的,不用考虑这个问题。

2. 为什么String不能增加一个.length属性呢?

没必要,因为String的底层是char数组,char数组已经有这个属性了。但是在java语言中,String与char数组又不是同一个东西,所以,就有了length()方法。

参考:
https://blog.csdn.net/weixin_52139713/article/details/126018792
https://blog.csdn.net/weixin_39959126/article/details/114153841

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【 uniapp - 黑马优购 | 商品详情 】详情页UI结构设计、商品导航区域实现

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

SVN使用教程

SVN使用教程 常见图标状态 1、常规:绿色圈带白色对勾,主要是表示自己电脑上的文件或者文件夹与SVN服务器上对应的文件一致,在自己电脑没有进行任何修改。 2、修改:红色圈带白色感叹号,当你开始编辑一个文件&#xff…

C语言实现笛卡尔树

先来回顾一下笛卡尔树的性质:笛卡尔树是这样一个二叉树,它能保持原序列的先后顺序,并且具备堆的性质。这里假设序列中无相等元素。假设有一个序列{9,3,7,1,8,12,10&#…

GitLab入门

极狐GitLab gitlab实现⾃动部署的原理1、部署机上,需要安装插件 gitlab-runner2、部署机安装 gitlab-runner之后,向gitlab服务器注册3、gitlab服务器收到commit事件之后,通知部署机拉取代码,执⾏部署。4、部署机执⾏什么操作&…

pytorch和numpy的互相转换、数学计算公式

格式转换 使用torch.from_numpy() 将numpy的array转化为torch的张量。 结果如下: 而把张量转为numpy的数组:tensor2array torch_data.numpy() 计算绝对值 torch.abs() data [-1,-2,1,2] tensor torch.FloatTensor(data) …

HoloLens2 Visible-Light Tracking Camera (VLC) 内参获取

HoloLens2 Visible-Light Tracking Camera(VLC)内参获取问题描述求解方法总结参考链接问题描述 OpenCV中的许多功能都需要输入相机内参(Camera Intrinsics)。然而,HoloLens2并没有提供直接获取相机内参的API,what is provided is …

初阶指针(详细版)

目录 一、指针是什么 1、内存 2、内存的管理与使用 3、指针变量的使用 二、指针和指针类型 1、指针类型的意义 2、指针 或 - 整数 3、指针解引用 三、野指针 1、野指针成因 2、如何规避野指针 四、指针运算 1、指针-整数 2、指针 - 指针 指针 - 指针的运用…

11_6、Java集合之Map接口(包括HashMap在内的子接口)的使用

一、引入Map与Collection并列存在。用于保存具有映射关系的数据:key-value (双列集合框架),Map 中的 key 和 value 都可以是任何引用类型的数据 。Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应 的类&…

Android Studio生成自己的so库

一、创建Native项目 1、新建 Native 项目 1)新建项目 选择最下面的 Native C 下一步即可 2)填写项目信息 3)选择C版本可以直接选择默认 2、下载并配置NDK及CMake 1)进入Studio 设置 SDK 设置界面 这里选择需要的 NDK 和 CMake…

c++之 OpenGL(1)-安装与概述

目录概述fedora下安装编写OpenGL应用程序测试hello,world概述 OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于…

Linux开发工具的使用(一)

文章目录Linux开发工具的使用(一)1. Linux软件包管理器yum1.1 查看软件1.2 下载软件1.3 卸载软件2.vim编辑器的介绍和使用2.1 vim的介绍2.2 vim的基本操作2.3 vim命令模式命令集(必须是命令模式下)2.3.1 移动光标2.3.2 删除文字2.3.3 复制文本内容2.3.4 …

C++ 不知树系列之二叉堆排序(递归和非递归实现上沉、下沉算法)

1. 前言 什么是二叉堆? 二叉堆是有序的 完全二叉树,在完全二叉树的基础上,二叉堆 提供了有序性特征: 二叉堆 的根结点上的值是整个堆中的最小值或最大值。 当根结点上的值是整个堆结构中的最小值时,此堆称为最小堆。…

xpath获取标签之间的文本内容

目前在学习xpath,需要取一个package信息,如图: 标题 "package"在span里面,比较方便取,用这个xpath就行: //div[idartikeltabelle]/table/tbody/tr[1]/td[2]/span[classinsertlabela and text()pa…

/mmcv/_ext.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN3c107Warning

报/mmcv/_ext.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN3c107Warning 就是mmcv或者mmcv-full编译有问题; 尝试了mmcv_full-1.7.1-cp36-cp36m-manylinux1_x86_64.whl pip 安装,都不是对应版本; 在安装mmcv或者mmcv-full都是无…

如何用PPT画出好看的科研图

前言 好看的科研图可以从前人的作品中进行借鉴,今天介绍2副精美的科研图以及他们在PPT中的绘制方法,话不多说,先摆上标准科研图 1. 黑色粗体边框以及淡填充颜色 黑色粗体边框和淡填充颜色真的让矩形一下子变得很有质感,在学习的…

VMware Fusion设置静态IP+端口转发(macOS)+内网穿透

很少有资料提到配置macOS上VMware Fusion的端口转发,因此我在这里进行了一些记录打开网络设置解锁并添加新的网络适配器只有新的网络适配器才允许配置转发,默认的不允许这样做。设置NAT转发虚拟机选择使用新创建的虚拟网络适配器Ubuntu配置静态IP/DNS服务…

linux xshell用户免密登录设置

最重要准备工作 ​编辑linux xshell用户免密登录设置步骤 1.在xshel进行密钥获取操作 2.创建mkdir ~/.ssh目录(检查有没有这个目录,没有自己添加) 3.在该目录创建authorized_keys目录。注意(目录权限为600) 4.将刚…

Android Studio arctic Fox(北极狐)导入openCV

Android studio arctic Fox在引入opencv的时候按照正常的File->New->Import Module操作时,出现无法点击“Next”和“Finish”的情况。如下图 所以我们使用另外的方法进行引入。 准备工作: 1,Android Studio 2,下载opencv…

纪念2022年11月软考高项(信息系统项目管理师)一次通过的经验随笔

一、备考背景2022年5月的浙江软考因为疫情防控原因临时取消,我离杭州买房又远了几分。众所周知,杭州是炒房投资客的香饽饽,即使主城区购房摇号制度不停打补丁,也难济于事。自住客为了与投资客抗衡,一靠社保&#xff0c…

新品做软文推广发布在哪些平台好?

新产品上市前后,会经历开发期、介绍期、成长期、成熟期、衰退期五个阶段,每个阶段都需要软文推广的助力! 当一款新品上市前后往往会面临着无法打开市场、产品卖不出去等问题,这个时候软文推广就要做到位,除了文章撰写…