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参考手册中文版在后台,当设置这些属性时,Shiro 默认使用 Apache Commons BeanUtils 来完成所有繁重的任务。所以,尽管 INI 值 是文本的,BeanUtils 知道如何去转换字符串值到正确的原始类型,然后调用相应的 JavaBean 的 setter 方法。 Reference Values 如果你需要设置的值不是一个原始的,而是另一个对象呢?那么,你可以使用美元符号($)来引用之前定义的实 本编码的字节数组。能够指定的值是一个 Base64 编码的字符串(默认),后一个 16 进制编码的字符串。默认是 Base64 是因为 Base64 编码只需较少的文本来表示 值——它拥有一个较大的编码表,意味着你的 token 都是较短的(几个较好的文本配置)。 然而,如果你喜欢使用 16 进制编码,你必须在字符串 token 前加上 0x("zero" "x")前缀: 对于 Map,你指定一系列由逗号分隔的键-值对,每个键-值对通过冒号":"被限定: 在上面的例子中,被$object1 引用的对象将属于在 map 中的字符串键值 key1,也就是,map.get("key1")返回 object1。 你还可以依照键来使用其他对象: Considerations Order Matters 上面的0 码力 | 92 页 | 1.16 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
Apache Shiro 1.2.x Reference Manual 中文翻译JavaBean 的 POJO。在设置这些属性时,Shiro 默 认使用 Apache 通用的 BeanUtils 来完成这项复杂的工作,所以虽然 INI 值是文本,BeanUtils 知道如何将这些字符串值转换为适合的原始值类型并调用合适的 JavaBeans 的 setter 方法。 Reference Values 引用值 如果你想设置的值并不是一个原始值,而是另一个对象怎么办呢?你可以使用一个 Encrypting Passwords 密码加密 如果你不希望[users]区域下的密码以明文显示,你可以用你喜欢的哈希算法(MD5, Sha1, Sha256, 等)来加密它们,将加密后的字符串作为密码值,默认的,密码建议用16位编码算 法,但也可以用64位编码算法替代(如下) 简单的安全密码 为了节约时间获得最佳实践,你可以使用 Shiro 的 Command Line Hasher,它可以加密密码 Reference Manual 中文翻译 33 4. Configuration 配置 权限定义可以是非常随意的字符串,但大部分用户还是希望使用易用而灵活的和 org.apache.shiro.authz.permission.WildcardPermission形式一致的字符串格式。查看 Permissions 文档获取更多关于权限的信息和你可以如何利用它为你服务。 内部用法 注意如果0 码力 | 196 页 | 2.34 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
基于 Java EE 的企业应用系统设计 - Spring MVC 02ing 会期待用户输入的 日期样式与当前语言区域的日期样式相同。例如,对于美国的用 户而言,就是月/日/年格式。 如果希望 Spring 在将输入的日期字符串绑定到 Date 时使用不同 的日期样式,则需要编写一个 Converter,才能将字符串转换成 日期。 大纲 转换器和格式化(Converter and Formatter) 验证器 表达式语言(EL) JSTL Converter 为了创建 页面。saveEmployee 方法取出一个在提交 Employee 表单时创建的 Employee 对象。有了 StringToDateConverter,就不 需要在 controller 类中将字符串转换成日期了。 saveEmployee 方法的 BindingResult 参数中放置了 Spring 的所有 绑定错误。该方法利用 BindingResult 记录所有绑定错误。绑定错 误也可以利用 object, java.util.Locale locale); T 表示输入字符串要转换的目标类型,该接口有 parse 和 print 两 个方法,所有实现都必须覆盖。 ▶ parse 方法利用指定的 Locale 将一个 String 解析成目标类型。 ▶ print 方法与之相反,它是返回目标对象的字符串表示法。 大纲 转换器和格式化(Converter and Formatter)0 码力 | 56 页 | 866.07 KB | 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.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
共 21 条
- 1
- 2
- 3













