 Java 应用与开发 - Java 数组和字符串大纲 数组的概念 一维数组 二维数组 字符串 Java 应用与开发 Java 数组和字符串 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 16, 2020 大纲 数组的概念 一维数组 二维数组 字符串 参考书目 1. 陈国君等编著, Java 程序设计基础(第 5 版), 清华大学出 版社 2. Bruce Eckel, Thinking in 数组的概念 一维数组 二维数组 字符串 学习目标 1. 掌握 Java 数组的概念 2. 学会一维数组和二维数组的使用;认识 Arrays 类,掌握操 作数组相关方法 3. 掌握 Java 字符串的概念,字符串与数组的关系;学会 String 类常用字符串操作方法 大纲 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 一维数组 二维数组 字符串 接下来… 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 二维数组 字符串 数组的基本概念 数组是相同数据类型的元素按一定顺序排列的集合。Java 中, 数组元素既可以为基本数据类型,也可以为对象。 O Java 的内存分配(基础) 栈内存 存放定义的基本类型的变量和对象的引用变量,超 出作用域将自动释放。 堆内存 存放由 new 运算符创建的对象和数组,由0 码力 | 33 页 | 620.46 KB | 1 年前3 Java 应用与开发 - Java 数组和字符串大纲 数组的概念 一维数组 二维数组 字符串 Java 应用与开发 Java 数组和字符串 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 October 16, 2020 大纲 数组的概念 一维数组 二维数组 字符串 参考书目 1. 陈国君等编著, Java 程序设计基础(第 5 版), 清华大学出 版社 2. Bruce Eckel, Thinking in 数组的概念 一维数组 二维数组 字符串 学习目标 1. 掌握 Java 数组的概念 2. 学会一维数组和二维数组的使用;认识 Arrays 类,掌握操 作数组相关方法 3. 掌握 Java 字符串的概念,字符串与数组的关系;学会 String 类常用字符串操作方法 大纲 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 一维数组 二维数组 字符串 接下来… 数组的概念 一维数组 二维数组 字符串 大纲 数组的概念 一维数组 二维数组 字符串 数组的基本概念 数组是相同数据类型的元素按一定顺序排列的集合。Java 中, 数组元素既可以为基本数据类型,也可以为对象。 O Java 的内存分配(基础) 栈内存 存放定义的基本类型的变量和对象的引用变量,超 出作用域将自动释放。 堆内存 存放由 new 运算符创建的对象和数组,由0 码力 | 33 页 | 620.46 KB | 1 年前3
 Apache Shiro参考手册中文版Nameable.setName 方法将会在拥有该名字(在 本例中是 myRealm)的对象上调用。 Setting object properties Primitive Values 简单的原始属性,可以通过使用等号来指定: 配置中的这些行转化为方法调用: 这怎么可能呢? 它假定所有的对象都是兼容 Java Bean 的 POJO。 在后台,当设置这些属性时,Shiro Commons BeanUtils 来完成所有繁重的任务。所以,尽管 INI 值 是文本的,BeanUtils 知道如何去转换字符串值到正确的原始类型,然后调用相应的 JavaBean 的 setter 方法。 Reference Values 如果你需要设置的值不是一个原始的,而是另一个对象呢?那么,你可以使用美元符号($)来引用之前定义的实 例。例如: 这简单地定位通过名称 Commons BeanUtils Website 及文档获取更多信息。 Byte Array Values 因为原始的字节数组本身不能使用文本格式,所以我们必须使用文本编码的字节数组。能够指定的值是一个 Base64 编码的字符串(默认),后一个 16 进制编码的字符串。默认是 Base64 是因为 Base64 编码只需较少的文本来表示 值——它拥有一个较大的编码表,意味着你的 token0 码力 | 92 页 | 1.16 MB | 1 年前3 Apache Shiro参考手册中文版Nameable.setName 方法将会在拥有该名字(在 本例中是 myRealm)的对象上调用。 Setting object properties Primitive Values 简单的原始属性,可以通过使用等号来指定: 配置中的这些行转化为方法调用: 这怎么可能呢? 它假定所有的对象都是兼容 Java Bean 的 POJO。 在后台,当设置这些属性时,Shiro Commons BeanUtils 来完成所有繁重的任务。所以,尽管 INI 值 是文本的,BeanUtils 知道如何去转换字符串值到正确的原始类型,然后调用相应的 JavaBean 的 setter 方法。 Reference Values 如果你需要设置的值不是一个原始的,而是另一个对象呢?那么,你可以使用美元符号($)来引用之前定义的实 例。例如: 这简单地定位通过名称 Commons BeanUtils Website 及文档获取更多信息。 Byte Array Values 因为原始的字节数组本身不能使用文本格式,所以我们必须使用文本编码的字节数组。能够指定的值是一个 Base64 编码的字符串(默认),后一个 16 进制编码的字符串。默认是 Base64 是因为 Base64 编码只需较少的文本来表示 值——它拥有一个较大的编码表,意味着你的 token0 码力 | 92 页 | 1.16 MB | 1 年前3
 Apache Shiro 1.2.x Reference Manual 中文翻译接口,Nameable.setName方法将 被以该名(在此例中为myRealm)命名的对象调用。 Setting object properties 设置对象属性 Primitive Values 原始值 简单的原始值属性可以使用下面的等于符号进行设置: ... myRealm.connectionTimeout = 30000 myRealm.username = jsmith ... 这些配置行转换为方法调用就是: Apache 通用的 BeanUtils 来完成这项复杂的工作,所以虽然 INI 值是文本,BeanUtils 知道如何将这些字符串值转换为适合的原始值类型并调用合适的 JavaBeans 的 setter 方法。 Reference Values 引用值 如果你想设置的值并不是一个原始值,而是另一个对象怎么办呢?你可以使用一个 $ 符来引 用一个之前定义的实例,如: ... sha256Matcher 更多的信息。 Byte Array Values 字节数组值 Apache Shiro 1.2.x Reference Manual 中文翻译 29 4. Configuration 配置 因为原始的字节数组不能直接在文本中定义,我们必须使用字节数组的文本编码。可以使用 64位编码(默认)或者16位编码,默认为64位编码因为使用64位编码实际文字会少一些--它 拥有很大的编码表,这意味着你0 码力 | 196 页 | 2.34 MB | 1 年前3 Apache Shiro 1.2.x Reference Manual 中文翻译接口,Nameable.setName方法将 被以该名(在此例中为myRealm)命名的对象调用。 Setting object properties 设置对象属性 Primitive Values 原始值 简单的原始值属性可以使用下面的等于符号进行设置: ... myRealm.connectionTimeout = 30000 myRealm.username = jsmith ... 这些配置行转换为方法调用就是: Apache 通用的 BeanUtils 来完成这项复杂的工作,所以虽然 INI 值是文本,BeanUtils 知道如何将这些字符串值转换为适合的原始值类型并调用合适的 JavaBeans 的 setter 方法。 Reference Values 引用值 如果你想设置的值并不是一个原始值,而是另一个对象怎么办呢?你可以使用一个 $ 符来引 用一个之前定义的实例,如: ... sha256Matcher 更多的信息。 Byte Array Values 字节数组值 Apache Shiro 1.2.x Reference Manual 中文翻译 29 4. Configuration 配置 因为原始的字节数组不能直接在文本中定义,我们必须使用字节数组的文本编码。可以使用 64位编码(默认)或者16位编码,默认为64位编码因为使用64位编码实际文字会少一些--它 拥有很大的编码表,这意味着你0 码力 | 196 页 | 2.34 MB | 1 年前3
 《Java 应用与开发》课程讲义 - 王晓东3 课后习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 i 3 Java 数组和字符串 21 3.1 数组的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 一维数组 . . . . . . . . . . . . . . . . . . . . . . 25 3.5 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5.1 字符串变量的创建 . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.2 String 类的常用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.3 理解 Java 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.6 课后习题 . . . . . . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3 《Java 应用与开发》课程讲义 - 王晓东3 课后习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 i 3 Java 数组和字符串 21 3.1 数组的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2 一维数组 . . . . . . . . . . . . . . . . . . . . . . 25 3.5 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.5.1 字符串变量的创建 . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.2 String 类的常用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5.3 理解 Java 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.6 课后习题 . . . . . . . . . . . . . . .0 码力 | 330 页 | 6.54 MB | 1 年前3
 跟我学Shiro - 张开涛小。但是实现 起来可能稍微复杂点,需要维护“用户——角色,角色——权限(资源:操作)”之间的 关系。 Permission 字符串通配符权限 规则:“资源标识符:操作:对象实例 ID” 即对哪个资源的哪个实例可以进行什么操作。 其默认支持通配符权限字符串,“:”表示资源/操作/实例的分割;“,”表示操作的分割; “*”表示任意资源/操作/实例。 1、单个资源单个权限 ilongnian.iteye.com/ 27 ini 配置 对资源 user 的 1 实例拥有所有权限。 然后通过如下代码判断 6、Shiro 对权限字符串缺失部分的处理 如“user:view”等价于“user:view:*”;而“organization”等价于“organization:*”或者 “organization:*:*”。可以这么理解,这种方式实现了前缀匹配。 因此没什么必要的话使用字符串更方便。 8、性能问题 通配符匹配方式比字符串相等匹配来说是更复杂的,因此需要花费更长时间,但是一般系 统的权限不会太多,且可以配合缓存来提供其性能,如果这样性能还达不到要求我们可以 实现位操作算法实现性能更好的权限匹配。另外实例级别的权限验证如果数据量太大也不 建议使用,可能造成查询权限及匹配变慢。可以考虑比如在 sql 查询时加上权限字符串之 类的方式在查询时就完成了权限匹配。0 码力 | 219 页 | 4.16 MB | 10 月前3 跟我学Shiro - 张开涛小。但是实现 起来可能稍微复杂点,需要维护“用户——角色,角色——权限(资源:操作)”之间的 关系。 Permission 字符串通配符权限 规则:“资源标识符:操作:对象实例 ID” 即对哪个资源的哪个实例可以进行什么操作。 其默认支持通配符权限字符串,“:”表示资源/操作/实例的分割;“,”表示操作的分割; “*”表示任意资源/操作/实例。 1、单个资源单个权限 ilongnian.iteye.com/ 27 ini 配置 对资源 user 的 1 实例拥有所有权限。 然后通过如下代码判断 6、Shiro 对权限字符串缺失部分的处理 如“user:view”等价于“user:view:*”;而“organization”等价于“organization:*”或者 “organization:*:*”。可以这么理解,这种方式实现了前缀匹配。 因此没什么必要的话使用字符串更方便。 8、性能问题 通配符匹配方式比字符串相等匹配来说是更复杂的,因此需要花费更长时间,但是一般系 统的权限不会太多,且可以配合缓存来提供其性能,如果这样性能还达不到要求我们可以 实现位操作算法实现性能更好的权限匹配。另外实例级别的权限验证如果数据量太大也不 建议使用,可能造成查询权限及匹配变慢。可以考虑比如在 sql 查询时加上权限字符串之 类的方式在查询时就完成了权限匹配。0 码力 | 219 页 | 4.16 MB | 10 月前3
 Hello 算法 1.0.0b4 Java版例如“归并排序”算法,输入长度为 ? 的数组,每轮递归将数组从中点划分为两半,形成高度为 log ? 的递 归树,使用 ?(log ?) 栈帧空间。 再例如“数字转化为字符串”,输入任意正整数 ? ,它的位数为 log10 ? ,即对应字符串长度为 log10 ? ,因 此空间复杂度为 ?(log10 ?) = ?(log ?) 。 2.3.4. 权衡时间与空间 理想情况下,我们希望算法的时间复杂 5. 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长的编码。这是因为在 等长编码下,我们可以将字符串看作数组来处理,具体来说: ‧ 随机访问: UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要找到第 ? 个 字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数: 字符计数: 与随机访问类似,计算 UTF‑16 字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的 字符串的长度需要遍历整个字符串。 ‧ 字符串操作: 在 UTF‑16 编码的字符串中,很多字符串操作(如分割、连接、插入、删除等)都更容易进 行。在 UTF‑8 编码的字符串上进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 编程语言的字符编码方案设计是一个很有趣的话题,涉及到许多因素:0 码力 | 342 页 | 27.39 MB | 1 年前3 Hello 算法 1.0.0b4 Java版例如“归并排序”算法,输入长度为 ? 的数组,每轮递归将数组从中点划分为两半,形成高度为 log ? 的递 归树,使用 ?(log ?) 栈帧空间。 再例如“数字转化为字符串”,输入任意正整数 ? ,它的位数为 log10 ? ,即对应字符串长度为 log10 ? ,因 此空间复杂度为 ?(log10 ?) = ?(log ?) 。 2.3.4. 权衡时间与空间 理想情况下,我们希望算法的时间复杂 5. 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长的编码。这是因为在 等长编码下,我们可以将字符串看作数组来处理,具体来说: ‧ 随机访问: UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要找到第 ? 个 字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数: 字符计数: 与随机访问类似,计算 UTF‑16 字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的 字符串的长度需要遍历整个字符串。 ‧ 字符串操作: 在 UTF‑16 编码的字符串中,很多字符串操作(如分割、连接、插入、删除等)都更容易进 行。在 UTF‑8 编码的字符串上进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 编程语言的字符编码方案设计是一个很有趣的话题,涉及到许多因素:0 码力 | 342 页 | 27.39 MB | 1 年前3
 Hello 算法 1.0.0b5 Java版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点划分为两半,形成高 度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 log10 ?+1 ,即对应字符串长度为 log10 ?+1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我们希望算法 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长的编码。在等长编码 下,我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问: UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要找到第 ? 个 字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ ‧ 字符计数: 与随机访问类似,计算 UTF‑16 字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的 字符串的长度需要遍历整个字符串。 ‧ 字符串操作: 在 UTF‑16 编码的字符串中,很多字符串操作(如分割、连接、插入、删除等)都更容易进 行。在 UTF‑8 编码的字符串上进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 实际上,编程语言的字符编0 码力 | 376 页 | 30.69 MB | 1 年前3 Hello 算法 1.0.0b5 Java版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点划分为两半,形成高 度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 log10 ?+1 ,即对应字符串长度为 log10 ?+1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我们希望算法 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长的编码。在等长编码 下,我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问: UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要找到第 ? 个 字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ ‧ 字符计数: 与随机访问类似,计算 UTF‑16 字符串的长度也是 ?(1) 的操作。但是,计算 UTF‑8 编码的 字符串的长度需要遍历整个字符串。 ‧ 字符串操作: 在 UTF‑16 编码的字符串中,很多字符串操作(如分割、连接、插入、删除等)都更容易进 行。在 UTF‑8 编码的字符串上进行这些操作通常需要额外的计算,以确保不会产生无效的 UTF‑8 编码。 实际上,编程语言的字符编0 码力 | 376 页 | 30.69 MB | 1 年前3
 Hello 算法 1.1.0 Java版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 378 页 | 18.47 MB | 1 年前3 Hello 算法 1.1.0 Java版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 378 页 | 18.47 MB | 1 年前3
 Hello 算法 1.0.0 Java版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 376 页 | 17.59 MB | 1 年前3 Hello 算法 1.0.0 Java版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 376 页 | 17.59 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Java 版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 379 页 | 18.48 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Java 版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 379 页 | 18.48 MB | 10 月前3
共 27 条
- 1
- 2
- 3













