Java-004 字符串处理
字符串是Java中的特殊的类,使用方法像一般的基本数据类型,被广泛引用在Java编程中。Java没有内置的字符串类型,而是在标准高Java类库中提供了一个String类来创建和操作字符串。
在Java中定义一个字符串最简单的方法是用双引号吧它保卫起来。这种双引号括起来的一串字符实际上都是String对象,如字符串‘Hello’在编译后即成为String对象。因此也可以通过创建Strgin类的实例类定义字符窜。
不论使用那总形式穿件字符串,字符串对象一旦被创建,其值是不能改变吗的但可以使用其他变量重新赋值的方式进行更改。
(注意:由于类和对象的内容在第八章才会讲解,所以只要遇到类和对象的概念,知道如何操作就可以了,不需要明白为什么么要这样使用。)
定义方法:
直接定义字符串:
直接定义字符串是值使用双引号表示字符串中的内容。
String str = "Hello Java";
或者
String str; str = "Hello Java";
(注意:字符串变量必须经过初试化才能使用。)
使用String类定义:
前面我们提到了Java中每个双引号定义的字符串都是一个String类的对象。因此,可以通过使用String类的构造方法来创建字符串,改类位于java.lang包中。
String类的构造方法有多种重载形式,每种形式都可以定义字符串。
(注意:具有类名相同的名称,而且没有返回类型的方法成为构造方法。重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型做参数的个数)
1.String()
初始化一个新创建的String对象,哎哦是一个空字符序列。
2.String(String original)
初始化一个新创建的String对象,是其表示一个参数相同的字符序列。换句话说,新创建的字符串是该参数字符串的副本。
String str1 = new String("Hello Java"); String str2 = new String(str1);
3.String(char[] value)
分配一个新的字符串,将参数中的字符数组元素全部变为字符串。该字符数组的内容已被复制,后续对字符数组的修改不会影响新创建的字符串。例如:
char a[] = {'H','e','l','l','0'}; String sChar = new String(a); a[1] = 's';
4.String(char[] value, int offset, int count)
分配一个新的String,它包含来自该字符数组参数一个子数组的字符。offset参数是子数组第一个字符的索引,count参数制定子数组的长度。该子数组的内容被赋值,后续对字符数组的修改不会影响新创建的字符串。例如:
char a[]={'H','e','l','l','o'}; String sChar=new String(a,1,4); a[1]='s';
String转换为int
String字符串转整型int有以下两种方式:
Integer.parseInt(str)
Integer.valueOf(str).intValue()
注意:Integer是一个类,是int基本数据类型的封装类。
String str = "123"; int n = 0; // 第一种转换方法:Integer.parseInt(str) n = Integer.parseInt(str); System.out.println("Integer.parseInt(str) : " + n); // 第二种转换方法:Integer.valueOf(str).intValue() n = 0; n = Integer.valueOf(str).intValue(); System.out.println("Integer.parseInt(str) : " + n);
(在String转换int时,String的值一定是整数,否则会包睡姿转换异常<java.lang.NumberFormatException>)。
int转换为String
整型int转String字符串类型有以下3中方法:
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;
int num = 10; // 第一种方法:String.valueOf(i); num = 10; String str = String.valueOf(num); System.out.println("str:" + str); // 第二种方法:Integer.toString(i); num = 10; String str2 = Integer.toString(num); System.out.println("str2:" + str2); // 第三种方法:"" + i; String str3 = num + ""; System.out.println("str3:" + str3);
使用第三种方法相对第一第二中好事比较大。在使用第一种valueOf()方法时,注意valueOf括号中的值不能为空,否则会报空指针异常
(NullPointerException)。
valueOf(),parse()和toString()
1)valueOf()
valueOf()方法将数据的内部格式转换为可读的形式。它是一种静态方法,对于所有Java内置的类型,在字符串内被重载,已变每一种类型都能被转黄程字符串。valueOf()方法还被类型Object重载,所以穿件的任何形式类的对象也可以被用作一个参数。这里是他的几种形式:
static String valueOf(double num)
static String valueOf(long num)
static String valueOf(Object ob)
static String valueOf(char chars[])
调用valueOf()方法可以得到其他类型数据的字符串形式例如在进行连接操作时。对各种数据类型,可以调用这种方法得到合理的字符串形式。所以的简单类型数据转换程相应于它们的普通字符串形式。任何传递给valueOf()方法的对象都将放回对象toString()方法调用的结果。事实上,也可以通过直接调用toString()方法而得到相同的结果。
对大多数数组,valueOf()方法返回一个相当灰色的字符串,这说明它是一个某种类型的数组。然而对于字符数组,它穿概念一个包含了字符数组种的字符的字符串对象。valueOf()方法有一种特定形式允许制定字符数组的一个子集。
它具有如下的一般形式:
static String valueOf(char chars[], int startIndex, int numChars)
2)parse()
parseXxx(String)这种形式,是指把字符串转换为数值型,其中Xxx对应不同数据类型,然后转换为Xxx制定的类型,如int型和float型。
3)toString()
toString()可以把一个引用类型转换为String字符串类型,是sun公司开发Java的时候为了方便所有类的字符串操作而特意加入的一个方法。
Java字符串大小写转换(toLowerCase()和toUpperCase())
String类的toLowerCase()方法可以将字符窜种的所有字符全部转换程小写,而非字母的字符不受影响。语法格式如下:
字符串名.toLowerCase() // 将字符串中的字母全部转换为小写,非字母不受影响
toUpperCase()则将字符串中国 的所有字符全部转换成大写,而非字母的字符不受影响。语法格式如下:
字符串名.toUpperCase() //将字符串种的字母全部转换为大写,非字母不受影响。
Java去除字符串种的空格(trim())
字符串种存在的首位空格一般情况下都没有任何意义,如字符串“Hello”,但是这些空格会印象倒字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串种的收尾空格,这需要使用String类提供的trim()方法。
trim()方法的语法形式如下:
字符串名.trim()
使用trim()方法的实例如下:
String str = " hello "; System.out.println(str.length()); // 输出 7 System.out.println(str.trim().length()); // 输出 5
使用replace()方法替换掉所有空格。
Java字符串替换的方法(replace(),replaceFirst(),replaceAll())
在Java种,String类提供了3种字符串,分别是replace(),replaceFirst()和replaceAll(),本文将详细介绍它们的使用方法。
replace()方法
replace()方法用于将目标字符串种的制定字符(串)替换成新的字符(串),其语法格式如下:
字符串.replace(String oleChar,String newChar)
其中,oldChar表示被替换的字符串;newChar表示用于替换的字符串。replace()方法会将字符串中所有oldChar替换成newChar。
String words = "hello java, hello php"; System.out.println("原始字符串是' " +words+ "'"); System.out.println("replace(\"1\",\"D\")结果: " + words.replace("1", "D")); System.out.println("replace(\"hello\",\"你好\")结果:"+words.replace("hello", "你好 ")); words = "hr's dog"; System.out.println("原始字符串是'"+words+"'"); System.out.println("replace(\"r's\",\"is\")结果:" + words.replace("r's","is"));
输出结果展示:
原始字符串是' hello java, hello php' replace("1","D")结果: hello java, hello php replace("hello","你好")结果:你好 java, 你好 php 原始字符串是'hr's dog' replace("r's","is")结果:his dog
replaceFirst()方法
replaceFirst()方法用于将目标字符串中匹配某正则表达是的第一个子字符串替换成新的字符串:
字符串.replaceFirst(String regex, String replacement)
其中,regex表示正则表达式;replacement表示用于替换的字符串。例如:
String words = "hello java,hello php"; String newStr = words.replaceFirst("hello", "你好 "); System.out.println(newStr); //输出:你好 java,hello php
replaceAll()方法
repalceALL()方法适用于将目标字符串中不匹配某正则表达式的所有子字符串替换成新的字符串,其语法形式如下:
字符串.repalceAll(String regex, String replacement)
其中,regex表示正则表达式,replacement表示用于替换的字符串。例如:
String words = "hello java, hello php"; String newStr = words.replaceAll("hello","你好 "); System.out.println(newStr); //输出:你好 java,你好 php