String类
1.String类就是一个不可变字符串类
2.字符串数据是程序中处理最频繁的数据。
介绍“jdk【java开发工具包】 api【应用程序接口】”
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
String类使用final修饰,没有子类,不可被继承。
String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的对象。
字符串不变; 它们的值在创建后不能被更改。
1.String 类如何创建对象
1.直接赋值-将字符串数据值直接赋值给String类型的变
字符串数据值需要双引号包围。
String str1="hello";
2.通过构造方法创建对象
String()初始化新创建的 String对象,使其表示空字符序列。
String(String original) 初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。
String(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的 String 。
String(char[] value) 分配一个新的 String ,以便它表示当前包含在字符数组参数中的字符序列。 String(StringBuffer buffer) 分配一个新的字符串,其中包含当前包含在字符串缓冲区参数中的字符序列。
String(StringBuilder builder) 分配一个新的字符串,其中包含当前包含在字符串构建器参数中的字符序列。
例如:
package com.wangxing.stringdemo1;
public class TestMain1 {
public static void main(String[] args) {
//String 类如何创建对象
//1.直接赋值-将字符串数据值直接赋值给String类型的变量
String str1="hello";
System.out.println("str1=="+str1);
//2.通过构造方法创建对象
//String()创建一个空的字符串对象
String str2=new String();
str2="world";
System.out.println("str2=="+str2);
//String(String original)创建一个有默认值的字符串对象,默认值就是参数值
String str3=new String("hello,world");
System.out.println("str3=="+str3);
String value="world,hello";
String str4=new String(value);
System.out.println("str4=="+str4);
//String(byte[] bytes)通过字节数组创建字符串对象;将字节数组转换成字符串
//注意:字节数组中的整数数字会被转换成对应字符,然后组成字符串
byte bytearray[]={97,98,99,100};
String str5=new String(bytearray);
System.out.println("str5=="+str5);
//String(char[] value)通过字符数组创建字符串对象;将字符数组转换成字符串
char chararray[]={'大','家','好'};
String str6=new String(chararray);
System.out.println("str6=="+str6);
}
}
2.String类中常用的方法
1.char charAt(int index)得到原始字符串中指定位置的字符【位置从0开始】
2.String concat(String str)将字符连接起来组成一个新的字符串
3.boolean contains(String str)判断指定的字符序列,是否在原始字符串中存在
4.boolean endsWith(String suffix)匹配后缀,查看字符串是否以指定后缀结尾
5.boolean startsWith(String prefix)匹配前缀,查看字符串是否以指定前缀开头
6.byte[] getBytes()将字符串转换成字节数组
7.int indexOf(String str)得到指定字符串数据在原始字符串中第一次出现的位置
8.int lastIndexOf(String str)得到指定字符串数据在原始字符串中最后一次出现的位置
9.boolean isEmpty()判断字符串是否为空,字符串长度为0
10.int length() 返回此字符串的长度。
**11.boolean matches(String regex)匹配正则表达式**
12.String replace(String old, String new)用指定的字符串替换就得字符串数据
13.String[] split(String regex)将原始字符串通过执行的符号拆分成一个字符串数组
14.String substring(int beginIndex)从指定的开始位置截取到字符串结尾,得到一个子字符串
String substring(int beginIndex, int endIndex)从指定的开始位置截取到指定的结束位置,得到 一个子字符串
15.char[] toCharArray()将字符串转换成字符数组
16.String toUpperCase() 将字符串中的字母转换成大写字母
17.String toLowerCase()将字符串中的字母转换成小写字母
18.String trim()去掉原始字符串中两头的空格
例如:
package com.wangxing.stringdemo1;
public class TestMain2 {
public static void main(String[] args) {
//创建一个字符串对象
String str1=new String("hello,world");
//1.char charAt(int index)得到原始字符串中指定位置的字符【位置从0开始】
System.out.println("charAt(0)=="+str1.charAt(1)); //e
//2.String concat(String str)将字符连接起来组成一个新的字符串[等价于 + 连接]
String str2=str1.concat("大家好");
System.out.println("str2=="+str2);
String str3=str1+"大家好";
System.out.println("str3=="+str3);
//3.boolean contains(String str)判断指定的字符序列,是否在原始字符串中存在
System.out.println("contains(\"hello\")=="+str1.contains("hello"));
//4.boolean endsWith(String suffix)匹配后缀,查看字符串是否以指定后缀结尾
String names[]={"张三","李四","王五","乔三"};
for(String name:names){
if(name.endsWith("三")){
System.out.println("name=="+name);
}
}
//5.boolean startsWith(String prefix)匹配前缀,查看字符串是否以指定前缀开头
for(String name:names){
if(name.startsWith("李")){
System.out.println("name=="+name);
}
}
//6.byte[] getBytes()将字符串转换成字节数组
byte bytearray[]=str1.getBytes();
for(byte bytevalue:bytearray){
System.out.print(bytevalue+",");
}
System.out.println("");
//7.int indexOf(String str)得到指定字符串数据在原始字符串中第一次出现的位置
System.out.println("indexOf(\"l\")=="+str1.indexOf("l"));
//8.int lastIndexOf(String str)得到指定字符串数据在原始字符串中最后一次出现的位置
System.out.println("lastIndexOf(\"l\")=="+str1.lastIndexOf("l"));
//9.boolean isEmpty()判断字符串是否为空,字符串长度为0
System.out.println("isEmpty()=="+str1.isEmpty());
//10.int length() 返回此字符串的长度。
System.out.println("length()=="+str1.length());
//12.String replace(String old, String new)用指定的字符串替换就得字符串数据
String str4=str1.replace("world", "大家好");
System.out.println("str4=="+str4);
//13.String[] split(String regex)将原始字符串通过执行的符号拆分成一个字符串数组
String info="name=zhangsan;age=23;address=西安";
String strarray[]=info.split(";");
//strarray[0]--name=zhangsan
//strarray[1]--age=23
//strarray[2]--address=西安
for(String msg:strarray){
System.out.println(msg);
}
//14.String substring(int beginIndex)从指定的开始位置截取到字符串结尾,得到一个子字符串
// String substring(int beginIndex, int endIndex)
//从指定的开始位置截取到指定的结束位置,得到一个子字符串
System.out.println("substring(6)=="+str1.substring(6));
System.out.println("substring(6,8)=="+str1.substring(6,8));
//15.char[] toCharArray()将字符串转换成字符数组
char chararray[]=str1.toCharArray();
for(char value:chararray){
System.out.print(value+"-");
}
System.out.println("");
//16.String toUpperCase() 将字符串中的字母转换成大写字母
String upper=str1.toUpperCase();
System.out.println("upper==="+upper);
//17.String toLowerCase()将字符串中的字母转换成小写字母
String lower=upper.toLowerCase();
System.out.println("lower==="+lower);
//18.String trim()去掉原始字符串中两头的空格
String str5=" zhang san ";
System.out.println("str5去掉空格之前的长度==="+str5.length());
String str6=str5.trim();
System.out.println("str5去掉空格之后的长度==="+str6.length());
}
3.String类的类型转换
1.String类型与字节数组的相互转换
String类型--》字节数组【String类的byte[] getBytes()方法】
字节数组--》String类型【String里的构造方法 String(byte[] bytes)】
2.String类型与字符数组的相互转换
String类型--》字符数组【String类的char[] toCharArray()方法】
字符数组--》String类型【String里的构造方法String(char[] value)】
3.String类型与基本数据类型的相互转换
基本数据类型---》String类型
1.String类提供的静态方法valueOf()
boolean flag=true;
String booleamstr=String.valueOf(flag);
double dou=12.5;
String doublestr=String.valueOf(dou);
2.封装类的toString()方法
boolean flag=false;
Boolean booObject=new Boolean(flag);
String booleanstr=booObject.toString();
String类型---》基本数据类型【基本数据类型的封装类】
封装类:基本数据类型对应的复合数据类型【java类】
只有基本数据类型才有封装类
基本数据类型 封装类
byte Byte[类名]
short Short[类名]
int Integer[类名]
long Long[类名]
float Float[类名]
double Double[类名]
char Character[类名]
boolean Boolean[类名]
基本数据类型转换成其对应的封装类类型--自动装箱
int num1=123;
Integer intObjct=num1;
Integer intObject2=new Integer(num1);
System.out.println("intObjct=="+intObjct);
封装类类型转换基本数据类型-----------自动拆箱
Double douObject=new Double(12.5);
double douvalue=douObject;
封装类有可供调用的变量和方法;
String intstr=intObject2.toString();
基本数据类型没有可供调用的变量和方法
String intstr1=num1.toString();//错误
String类型转换成基本类型数据--通过对应基本类型的封装类静态方法parseXXXX(String);
double dou11=Double.parseDouble("12.5");
int int11=Integer.parseInt("1234");
boolean boo11=Boolean.parseBoolean("false");