黑马程序员技术交流社区

标题: String类的详细使用 [打印本页]

作者: lixiaojing    时间: 2015-5-21 21:55
标题: String类的详细使用
java常用API:
Scanner 扫描器 (理解)
创建:
  Scanner scanner = new Scanner(System.in);
方法:
  nextInt() -- 将输入信息的下一个标记扫描为一个 int。
   如果输入非int类型的值,就会报:输入匹配异常 -- java.util.InputMismatchException
  next() -- 查找并返回来自此扫描器的下一个完整标记。
  nextLine() -- 此扫描器执行当前行,并返回跳过的输入信息。
  next() 和 nextLine() 区别:
   next()会将空格键、Tab键或Enter键等视为分隔符或结束符,不能得到带空格的字符串。
   nextLine()仅将Enter键作为结束符,返回Enter键前的所有字符,可以得到带空格。
String类 (掌握)
1、定义
由字符组成的序列。
2、构造方法
A: String s = new String();
  -- 空字符序列
B: String s = new String(byte[] bys);
  -- 使用平台的默认字符集解码指定的 byte 数组,构造一个 String。
C: String s = new String(byte[] bys, int index, int length);  
  -- 使用平台的默认字符集解码指定的 byte 数组,构造一个 String。从索引为 index 处开始,截取长度为 length。
  如果参数 index 或者 length 超出数组范围,报出:java.lang.StringIndexOutOfBoundsException
D: String s = new String(char[] chs);
  -- 使用字符数组中包含的字符序列,构造一个 String。
E: String s = new String(char[] chs, int index, int length);
  -- 使用字符数组中包含的字符序列,构造一个 String。从索引为 index 处开始,截取长度为 length。
  如果参数 index 或者 length 超出数组范围,报出:java.lang.StringIndexOutOfBoundsException
F: String s = new String(String str);
G: String s = "hello";
3、特点
A:字符串一旦初始化就不可以改变。(注意:是指字符串在常量池中的值不可以改变,不是指引用。)
B:面试题:
   a:String s = new String("hello")和String s = "hello"的区别。
    第一种方式在内存中有两个对象。
    第二种方式只有一个对象。
   b:请写出结果:
    String s1 = new String("hello");
    String s2 = new String("hello");
    System.out.println(s1==s2); // false
    System.out.println(s1.equals(s2)); // true
    String s3 = new String("hello");
    String s4 = "hello";
    System.out.println(s3==s4); // false
    System.out.println(s3.equals(s4)); // true
    String s5 = "hello";
    String s6 = "hello";
    System.out.println(s5==s6); // true
    System.out.println(s5.equals(s6)); // true
注:看懂刘意老师画的内存图。

4、成员方法
A:判断功能
  boolean equals(Object obj)
   -- 判断字符串的内容是否相同,区分大小写。
  boolean equalsIgnoreCase(String str)
   -- 将此字符串与另一个字符串比较,忽略大小写。
  boolean contains(String str)
   -- 判断字符串中是否包含指定的字符串
  boolean startsWith(String str)
   -- 判断字符串是否是以指定的字符串开头
  boolean endsWith(String str)
   -- 判断字符串是否是以指定的字符串结尾
  boolean isEmpty()
   -- 判断字符串是不是空字符串。注意区分空字符串和null的区别:null是在堆内存中没有对象。
练习:模拟用户登录。

B:获取功能
  int length()
   -- 获取字符串的长度。
  char charAt(int index)
   -- 获取字符串中给定索引处的字符。(练习遍历字符串)
  int indexOf(int ch)
   -- 返回指定字符在此字符串中第一次出现的索引。(不存在,返回-1)
  int indexOf(String str)
   -- 返回指定字符串在此字符串中第一次出现的索引。(不存在,返回-1)
  int indexOf(int ch,int fromIndex)
   -- 返回指定字符在此字符串中第一次出现的索引,从指定的索引处开始查找。
  int indexOf(String str,int fromIndex)
   -- 返回指定字符串在此字符串中第一次出现的索引,从指定的索引处开始查找。
  String substring(int start)
   -- 截取字符串。返回从指定索引截取后的字符串。
  String substring(int start,int end)
   -- 截取字符串。返回从指定索引开始start到指定索引结束end截取后的字符串。(包括开始索引但不包括结束索引,左闭右开)
   
  注:字符串的截取功能不会对原字符串产生影响。

C:转换功能
  byte[] getBytes()
   -- 把字符串转换成字节数组。
  char[] toCharArray()
   -- 把字符串转换成字符数组。
  static String copyValueOf(char[] chs)
   -- 把字符数组转换成字符串。
  static String valueOf(char[] chs)
   -- 把字符数组转换成字符串。
  static String valueOf(int i)
   -- 把int(基本类型)转换成字符串。
  String toLowerCase():
   -- 把字符串变成小写。
  String toUpperCase():
   -- 把字符串变成大写。
  String concat(String str):
   -- 拼接字符串。

D: 其他功能
  替换功能
   String replace(char oldChar,char newChar):用新的字符去替换指定的旧字符
   String replace(String oldString,String newString):用新的字符串去替换指定的旧字符串
   
   补充:
    replaceFirst(String regex, String replacement)
   
  切割功能
   String[] split(String regex):将字符串按指定的正则表达式拆分,返回切割后的字符串数组。
   
   补充:关于切割功能。
    1、如果字符串中不包含与给定正则匹配的字符(串),那么返回的数组长度为1,数组中的这1个元素值与原字符串相同。
    2、如果给定的正则表达式在字符串的开始处匹配成功,那么返回数组的第一个元素为一个空字符串(""),也就是在匹配表达式的前面截取出一个空串。
       但是,如果给定的正则表达式在字符串的结尾处匹配成功,返回的数组最后一个元素并不会取空字符串,而是最后的匹配表达式前面的部分。
   
  去除字符串两端空格
   String trim()
  按字典顺序比较两个字符串  
   int compareTo(String str)
  按字典顺序比较两个字符串,不考虑大小写。
   compareToIgnoreCase(String str)
     
(5)案例:
  A:模拟用户登录
  B:字符串遍历
  C:统计字符串中大写,小写,数字字符出现的次数
  D:把字符串的首字母大写,其他小写
  E:大串中截取小串

4、其他功能

作者: 姜秋艺    时间: 2015-5-21 22:11
你这不是问题 怎么往问题论坛帖啊
作者: 柒仴、看雲佉    时间: 2015-5-21 22:15
虽然我很想帮你,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2