• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
12, string
 

12, string

on

  • 238 views

Java tutorials - String

Java tutorials - String

Statistics

Views

Total Views
238
Views on SlideShare
224
Embed Views
14

Actions

Likes
0
Downloads
0
Comments
0

4 Embeds 14

http://ebshome.blogspot.com 8
http://ebshome.blogspot.jp 3
http://translate.googleusercontent.com 2
http://ebshome.blogspot.sg 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    12, string 12, string Presentation Transcript

    • String
    • Agenda
    • 概述• 字符串可以说是任何编程语言中最长见到的数 据类型了, 在前面的很多章节中也涉及到了一 些字符串的操作;• Java的字符串由java.lang.String类来实现, 该类 提供了很多实用的方法对字符串进行操作;• 关于字符串最重要的一点是java字符串对象的 内容是不可变的, 在进行字符串操作的过程中 总是有新的字符串对象被创建, 而不是原有的 对象被修改.
    • 不可变的字符串 immutable string• 对字符串对象的任何操作: 合并, 大小写转 换, 截取等都不会改变原有的对象, 每次都会 创建一个新的字符串对象并且返回; 示例: String s1 = “good”, s2 = “bye”; String s = s1 + s2; // 返回goodbye, s1/s2不变; s1.upperCase(); // 返回GOOD, s1不变; s1.substring(0, 2); // 返回go, s1不变;• 示例: demo/Demo1.java
    • 字符串操作• 构造器 String() 创建一个空字符串 String(StringBuilder) 拷贝StringBuilder的内容 String(StringBuffer) 拷贝StringBuffer的内容• length() 长度• chatAt(int)返回指定位置的字符, 从0开始• getChars(), getBytes() 返回字符/字节数组• equals/equalsIgnoreCase 字符串的内容是否相等, 后者不区分大小写• compareTo比较字符串大小, 返回负数/0/整数• contains是否包含某个子字符串
    • 字符串操作• startsWith/endsWith是否以某个字符串开头或者结尾• indexOf/lastIndexOf返回某个子字符串的起始位置或者最后出现的位置• substring返回指定位置的一个子字符串• concat字符串合并, 通常使用加号• replace替换字符串的某些部分• toLowerCase/toUpperCase转换字符串大小写• trim去掉字符串开始和结尾的空格字符• valueOfstatic方法, 将其他的对象转换为字符串, 比如String s = String.valueOf(newInteger(4))
    • 格式化输出• JDK5引入了System.out.format或者printf用于格 式化输出, 示例: int i = 5; double d = 5.3; System.out.format(“Row 1: *%d %f+n”, x, y); // 或者 System.out.printf(“Row 1: *%d %f+n”, x, y);• 示例: demo/Demo2.java• java.util.Formatter用于格式化字符串, 输出到标 准输出或者附加到某个对象, 比如: Formatter fmt = new Formatter(System.out); fmt.format(“Now is %d o’clock”, 5); // 输出到标准输出 StringBuffer buf = new StringBuffer(); Formatter fmt = new Formatter(buf); fmt.format(“Now is %d o’clock”, 5); // 添加到StringBuffer System.out.println(buf.toString());• 示例: demo/Demo3.java
    • 格式化输出 常用的占位符• 以上一节的” Now is %d o’clock” 为例, 这里的 %d就是一个占位符, 表示相应位置的参数格 式化为一个整数; 常用的占位符有: d Integral (as decimal) x Hex c Unicode character b Boolean value s String• 示例: demo/Demo4.java
    • 格式化输出 String.format• JDK5同样为String类引入了静态方法实现字 符串的格式化, 其功能与前述的两种方式相 同, 示例: String s= fmt.format(“Now is %d o’clock”, 5);• 示例: demo/Demo5.java
    • CharSequence• 字符串本身就是一串字符的集合, java中所 有的字符串类型包含String, StringBuffer和 StringBuilder都实现了这个接口, 接口的规范 如下: interface CharSequence { charAt(int i); length(); subSequence(int start,| int end); toString(); }
    • 读取标准输入 Scanner• 应用程序往往需要扫描相关的输入来并进行相应的 处理, JDK5提供了工具类java.util.Scanner用于实现该 功能; 通过以下构造器创建Scanner对象: Scanner(File) 指定某个文件作为输入 Scanner(InputStream) 指定某个输入流作为输入 Scanner(String) 使用字符串最为扫描的对象Scanner提供了如下工具方法: nextLine() 读取下一行; nextInt() 读取下一个token(默认使用空格分隔), 并 返回一个整数; 如果该token不能被解析 为一个整数或者超出范围则抛出异常. hasNext() 是否还有下一个token next() 返回下一个token, String类型• 示例: demo/Demo6.java
    • Scanner vs. StringTokenizer• 在JDK5之前可以使用StringTokenizer实现类 似Scanner的功能, 但是易用性不如后者; 示 例: String input = "But I’m not dead yet! I feel happy!"; StringTokenizer stoke = new StringTokenizer(input); while(stoke.hasMoreElements()) System.out.print(stoke.nextToken() + " ");• 示例: demo/Demo7.java
    • StringBuffer• 与String相同, StringBuffer也表示一个字符串对 象, 示例: StringBuffer buf = new StringBuffer(“Hello”); System.out.println(buf.toString()); // Hello• 不同之处在于StringBuffer的内容是可以更改的, 它提供了如下接口用于修改字符串的内容: append 追加字符串 delete 删除指定位置的字符串 insert 在指定的位置插入字符串 replace 替换指定位置的字符串• 示例: demo/Demo8.java
    • StringBuffer vs. String vs.StringBuilder• 当需要频繁的进行字符串修改时, 使用string 是不太合适的, 因为这样会导致大量的对象 被创建和回收, 造成一定的性能因素; 在这 种情况下可以使用StringBuffer;• StringBuilder与StringBuffer的类似, 也表示可 以修改的字符串; 两者的区别在于前者是线 程安全的(thread-safe), 而后者是线程不安全 的; 这意味这前者在具体的使用中性能会稍 弱于后者.
    • END