【剑指offer知识点】Java中数组、字符串的长度获取区别 length、length()、size()

简介: 【剑指offer知识点】Java中数组、字符串的长度获取区别 length、length()、size()

[1] 结论


  Collections家族类使用:size()

  字符串类型使用:length()

  普通数组类型使用:length

[2] 整体理解


  ·数组的length字段用于表示数组的最大容量。最大容量是指可以存储在其中的最大元素数。此字段不考虑数组中存在的元素数量并保持不变。

  ·字符串的length()方法用于表示字符串中出现的字符数。

  ·Collections Frameworksize()方法用于查看该集合中当前存在的元素数量。Collections具有动态大小,因此size()的返回值可能会有所不同。

[3] 细致理解


[3.1] 数组的length


  在Java中,数组以有序的方式存储固定数量的相同类型的数据。Java 中的所有数组都有一个长度字段,用于存储为该数组的元素分配的空间。它是一个常数值,用于找出数组的最大容量。

  该字段不会为我们提供数组中存在的元素数,而是可以存储的最大元素数(无论元素是否存在)。

[3.2] String类的length()


  String类是封装的char[]数组,String源码简化如下:

public final class String implements Serializable, Comparable<String>, CharSequence {
  private final char[] value;
  public int length() {
        return this.value.length;
    }
}

  由于String类是封装的char[]数组,length() 方法返回的正是字符数组 value 的长度(length),value 本身是 private 的,因此很有必要为 String 类提供一个 public 级别的方法来供外部访问字符的长度。

[3.3] Collections家族类的size()


  size()java.util.Collections类的一个方法。Collections类被许多不同的集合(或数据结构)使用,例如ArrayListLinkedListHashSetHashMap

  size()方法返回集合中当前存在的元素数。与数组的length属性不同,size()方法返回的值不是常数,而是根据元素的数量而变化。

  Java 中Collection Framework的所有集合都是动态分配的,因此元素的数量可能会有所不同。size() 方法用于跟踪元素的数量。

  Collections家族类如下:

image.png

相关文章
|
15天前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
17天前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
5天前
|
存储 Java 程序员
Java 数组
4月更文挑战第16天
|
1天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
6 3
|
8天前
|
设计模式 SQL Java
java基础知识点(初级二)
java基础知识点(初级二)
|
8天前
|
存储 Java 容器
java基础知识点(初级)
java基础知识点(初级)
|
18天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0
|
19天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2
|
20天前
|
Java
java线程知识点总结
Java线程核心概念:线程是程序执行流,一个进程可有多个线程。创建线程通过继承Thread或实现Runnable接口。线程状态包括新建、就绪、运行、阻塞、等待、超时等待和终止。同步用synchronized或Lock防止数据不一致,避免死锁。线程间通过共享变量、wait/notify通信。线程池(如ThreadPoolExecutor、ScheduledThreadPoolExecutor)优化性能和资源管理。
17 6
|
20天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
18 3