A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 盛亚昆 中级黑马   /  2012-3-17 15:44  /  2387 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String 常见功能听得我有点晕 ,高手指点迷津啊,举例说明 谢谢

4 个回复

正序浏览
嘿嘿 谢谢啦 太详细了
回复 使用道具 举报
哪里晕了?我们砖头唤醒
回复 使用道具 举报
对象的初始化
由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下:
  String s = “abc”;
s = “Java语言”;
其实按照面向对象的标准语法,其格式应该为:
  String s = new String(“abc”);
  s = new String(“Java语言”);
只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如String s = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。
其它的构造方法的参数,可以参看String类的API文档。
2、字符串的常见操作
a、charAt方法
该方法的作用是按照索引值(规定字符串中第一个字符的索引值是0,第二个字符的索引值是1,依次类推),获得字符串中的指定字符。例如:
String s = “abc”;
char c = s.chatAt(1);
则变量c的值是’b’。
  b、compareTo方法
该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。
例如:
String s = “abc”;
String s1 = “abd”;
int value = s.compareTo(s1);
则value的值是小于0的值,即-1。
在String类中还存在一个类似的方法compareToIgnoreCase,这个方法是忽略字符的大小写进行比较,比较的规则和compareTo一样。例如:
String s = “aBc”;
String s1 = “ABC”;
int value = s. compareToIgnoreCase (s1);
则value的值是0,即两个字符串相等。
c、concat方法
该方法的作用是进行字符串的连接,将两个字符串连接以后形成一个新的字符串。例如:
String s = “abc”;
String s1 = “def”;
String s2 = s.concat(s1);
则连接以后生成的新字符串s2的值是”abcdef”,而字符串s和s1的值不发生改变。如果需要连接多个字符串,可以使用如下方法:
String s = “abc”;
String s1 = “def”;
   String s2 = “1234”;
  String s3 = s.concat(s1).concat(s2);
则生成的新字符串s3的值为”abcdef1234”。
其实在实际使用时,语法上提供了一种更简单的形式,就是使用“+”进行字符串的连接。例如:
     String s = “abc” + “1234”;
则字符串s的值是”abc1234”,这样书写更加简单直观。
而且使用“+”进行连接,不仅可以连接字符串,也可以连接其他类型。但是要求进行连接时至少有一个参与连接的内容是字符串类型。而且“+”匹配的顺序是从左向右,如果两边连接的内容都是基本数字类型则按照加法运算,如果参与连接的内容有一个是字符串才按照字符串进行连接。
例如:
  int a = 10;
String s = “123” + a + 5;
则连接以后字符串s的值是“123105”,计算的过程为首先连接字符串”123”和变量a的值,生成字符串”12310”,然后使用该字符串再和数字5进行连接生成最终的结果。
而如下代码:
  int a = 10;
  String s = a + 5 + “123”;
则连接以后字符串s的值是”15123”,计算的过程为首先计算a和数字5,由于都是数字型则进行加法运算或者数字值15,然后再使用数字值15和字符串”123”进行连接获得最终的结果。
而下面的连接代码是错误的:
  int a = 12;
  String s = a + 5 + ‘s’;
因为参与连接的没有一个字符串,则计算出来的结果是数字值,在赋值时无法将一个数字值赋值给字符串s。
d、endsWith方法
该方法的作用是判断字符串是否以某个字符串结尾,如果以对应的字符串结尾,则返回true。
例如:
  String s = “student.doc”;
boolean b = s.endsWith(“doc”);
则变量b的值是true。
       e、equals方法
该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回true,否则返回false。例如:
    String s = “abc”;
  String s1 = new String(“abc”);
  boolean b = s.equals(s1);
而使用“==”比较的是两个对象在内存中存储的地址是否一样。例如上面的代码中,如果判断:
  boolean b = (s == s1);
则变量b的值是false,因为s对象对应的地址是”abc”的地址,而s1使用new关键字申请新的内存,所以内存地址和s的”abc”的地址不一样,所以获得的值是false。
在String类中存在一个类似的方法equalsIgnoreCase,该方法的作用是忽略大小写比较两个字符串的内容是否相同。例如:
  String s = “abc”;
String s1 =”ABC”;
boolean b = s. equalsIgnoreCase (s1);
则变量b的值是true。
   f、getBytes方法
该方法的作用是将字符串转换为对应的byte数组,从而便于数据的存储和传输。例如:
  String s = “计算机”;
byte[] b = s.getBytes();   //使用本机默认的字符串转换为byte数组
byte[] b = s.getBytes(“gb2312”); //使用gb2312字符集转换为byte数组
    在实际转换时,一定要注意字符集的问题,否则中文在转换时将会出现问题。
g、indexOf方法
该方法的作用是查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1。例如:
String s = “abcded”;
int index = s.indexOf(‘d’);
   int index1 = s.indexOf(‘h’);
则返回字符d在字符串s中第一次出现的位置,数值为3。由于字符h在字符串s中不存在,则index1的值是-1。
当然,也可以从特定位置以后查找对应的字符,例如:
int index = s.indexOf(‘d’,4);
则查找字符串s中从索引值4(包括4)以后的字符中第一个出现的字符d,则index的值是5。
由于indexOf是重载的,也可以查找特定字符串在当前字符串中出现的起始位置,使用方式和查找字符的方式一样。
另外一个类似的方法是lastIndexOf方法,其作用是从字符串的末尾开始向前查找第一次出现的规定的字符或字符串,例如:
String s = “abcded”;
int index = s. lastIndexOf(‘d’);
则index的值是5。
h、length方法
该方法的作用是返回字符串的长度,也就是返回字符串中字符的个数。中文字符也是一个字符。例如:
String s = “abc”;
String s1 = “Java语言”;
int len = s.length();
int len1 = s1.length();
则变量len的值是3,变量len1的值是6。
  i、replace方法
该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如:
  String s = “abcat”;
String s1 = s.replace(‘a’,’1’);
该代码的作用是将字符串s中所有的字符a替换成字符1,生成的新字符串s1的值是”1bc1t”,而字符串s的内容不发生改变。
如果需要将字符串中某个指定的字符串替换为其它字符串,则可以使用replaceAll方法,例如:
  String s = “abatbac”;
String s1 = s.replaceAll(“ba”,”12”);
该代码的作用是将字符串s中所有的字符串”ab”替换为”12”,生成新的字符串”a12t12c”,而字符串s的内容也不发生改变。
如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:
String s = “abatbac”;
  String s1 = s. replaceFirst (“ba”,”12”);
该代码的作用是只将字符串s中第一次出现的字符串”ab”替换为字符串”12”,则字符串s1的值是”a12tbac”,字符串s的内容也不发生改变。
     j、split方法
该方法的作用是以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分以后会获得一个字符串数组。例如:
String s = “ab,12,df”;
String s1[] = s.split(“,”);
该代码的作用是以字符串”,”作为间隔,拆分字符串s,从而得到拆分以后的字符串数字s1,其内容为:{“ab”,”12”,”df”}。
该方法是解析字符串的基础方法。
如果字符串中在内部存在和间隔字符串相同的内容时将拆除空字符串,尾部的空字符串会被忽略掉。例如:
   String s = “abbcbtbb”;
  String s1[] = s.split(“b”);
则拆分出的结果字符串数组s1的内容为:{“a”,””,”c”,”t”}。拆分出的中间的空字符串的数量等于中间间隔字符串的数量减一个。例如:
String s = “abbbcbtbbb”;
String s1[] = s.split(“b”);
则拆分出的结果是:{“a”,””,””,”c”,”t”}。最后的空字符串不论有多少个,都会被忽略。
如果需要限定拆分以后的字符串数量,则可以使用另外一个split方法,例如:
  String s = “abcbtb1”;
String s1[] = s.split(“b”,2);
该代码的作用是将字符串s最多拆分成包含2个字符串数组。则结果为:{“a”,”cbtb1”}。
如果第二个参数为负数,则拆分出尽可能多的字符串,包括尾部的空字符串也将被保留。

  

评分

参与人数 2技术分 +2 黑马币 +5 收起 理由
职业规划-刘倩老师 + 2
盛亚昆 + 5

查看全部评分

回复 使用道具 举报
1 获取:
1.1 字符串中包含的字符数,也就是字符的长度
      int  length();
1.2 根据位置获取位置上某个字符
char charAt(int index);
1.3 根据字符获取该字符在字符串上的位置
int indexOf(int ch);返回的是ch在字符串上第一次出现的位置
2 判断
2.1 字符串中是否包含某一个子串
boolean contains(str);
特殊之处:indexOf(str) 可以索引str第一次出现的位置,如果返回-1,表示该str不存在字符串中。
所以,也可以用于对制定判断是否包含。
if(str.indexOf(str)!=-1); 而且该方法既可以判断,也可以获取出现的位置。
2.1字符串中是否有内容
boolean imEmpty();原理就是哦按段长度是否为零
2.3 字符串是否已制定的内容开头
boolean startsWith(str);
2.4 字符串是否已制定的内容结尾
boolean endsWith(str);
2.5 判断字符串是否相同,复写了Object中的equals方法
boolean equals(str);
2.6 判断内容是否相同,忽略大小写
boolean eualsIgnoreCase();
3 转换
3.1 将字符数组转换成字符串
构造函数: string (char[]);
String (char[],offset,count);将字符数组中的一部分转换成字符串

静态方法:
static String copyValueof(char[]);
static String copyValueof(char[],int offset,int count);

static String valueof(char[]);
3.2 将字符串转换成字符数组
char[] toCharArray();
3.3 将字节数组转换成字符串
String (byte[]);
String ( byte[],int offset,int count);
3.4 将字符串转换成字节数组
byte getBytes();
3.5 将基本数据类型转换成字符串
static String valueof(int);
static String valueof(double);

3+"" = String valueof(3);

特殊: 字符串和字节数组在转换的过程中,是可以制定编码表的。
4 替换
String replace(oldchar,newchar);
5 切割
String split(regex);
6 子串
获取子串中的一部分
String substring(begin); 从指定位置begin开始获取到结尾,如果角标不存在,会出现角标越界异常。
String substring(begin,end);包含头不包含尾
7 转换 去除空格  比较
7.1 将字符串转换成大写或小写
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的空格去掉
String trim();
7.3 对两个字符串进行自然顺序的比较
int compareTo(string);

评分

参与人数 2技术分 +2 黑马币 +4 收起 理由
职业规划-刘倩老师 + 2
盛亚昆 + 4

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马