字符串是java中的类,它不是基本的数据类型。使用方法像一般的基本数据类型。
字符串处理的类库种类
java中使用最多的字符串处理的类 分别是 String 和 StringBuffer
处理一些小的文本,建议使用String,它比较方便。
如果使用String类来处理大型文本,会很消耗资源,所以java引进了 StringBuffer
下面分别记录 两种类型的使用
String() 这个构造器是最简单的构造器 也是系统默认的构造器,是不带参数的。
用法
String str= new String(); System.out.println(str);
这里输出了一个空字符串。因为只初始化,没赋值。
String(byte[] byte) 将字节数组中的元素作为字符串对象。
用法
byte[] b={97,98,99} //通过构造器,将字节数组中的元素连接成一个字符串 String str=new String(b); System.out.println(str);结果:
abc
因为字节 97 98 99分别对应字母 abc
String(byte[] bytes,int offset,int length) 将字节数组中,从offset指定的位置开始,到 length长度结束。中间的字符构成字符串对象。
用法
byte[] b={97,98,99,100,101,102}; //通过构造器,将字节数组中的元素连接成一个字符串,并且从第4个位置开始,取2个元素 String str=new String(b,3,2); System.out.println(str);结果:
de
因为字节 100 101 分别对应字母d e
String(byte[] bytes,int offset,int length,String charsetName)
这个构造器的含义就是将一个字节数组中从第offset个位置的字符开始,length长度的字符结束,中间的字符形成字符串对象,然后将这个字符串按照某种字符集样式输出。
字符集一般有 us-ascii iso-8859-I utf-8 utf-16be utf-16le utf-16等样式
用法
byte[] b ={97,98,99,100,101,102}; String str =new String(b,3,2,"utf-8"); //将此字符串以utf-8的形式输出 System.out.println(str);
de
String(char[] value)构造一个字符数组
用法
char[] c={'w','e','l','c','o','m','e'}; //通过构造器,将字符数组中的元素链接成一个字符串 Sring str=new String(c); Syetem.out.println(str);
结果:
welcome
String(char[] value,int offset,int count) 这个构造器的含义是 将字符数组中从offset指定的位置开始 count指定的数目结束,中间的字符连成字符串。
用法
char[] c={'w','e','l','c','o','m','e'}; //通过构造器,将字符数组中的元素链接成一个字符串,并且从第4个位置开始,取4个元素 Sring str=new String(c,3,4); Syetem.out.println(str)
结果:
come
两种方法
一个是用+ 号
另一个是 用 contact(String str)方法
String str1="welcome"; String str2="you"; System.out.println(str1+str2);
结果:
welcome you
用法
String str1="welcome"; String str2="you"; System.out.println(str1.contact(str2))
结果:
welcome you
有时一个很长的字符串,其中只有一小部分是需要的,于是Java语言类库中就提供了相
应的获取局部字符串的方法。方法是:"substring(int beginIndex, int endlndex)"或
substring(int index)"。下面将详细地讲述这两个方法的意义和使用方法。
"substring(int index)”是指提取从index指定的位置开始,一直到字符串的最后。
用法
//初始化一个字符串str String str="we are students and he is worker”; //提取从字符串的第3个元素开始到第1。个元素位置的字符串, //并且将其输出 System.out.println(str.substring(2,10));结果:
are stu
用法
//初始化一个字符串str String str="we are students and he is worker”; //提取从字符串的第3个元素开始到第1。个元素位置的字符串, //并且将其输出 System.out.println(str.substring(3));
结果:
are students and he is worker
用法
//从字符串中的第2个位置将字符提取出来 String str="we are students and he is a worker"; Spstem.out.println(str.charAt(1));//获取第2个位置的字件
结果
e
在学习数组时,学到过数组长度,而在这里也要讲到字符串的长度。字符串长度使用方法"length()”获取。
用法
String str="we are students and he is a worker”; System.out.println(str.length()); //输出字符串的长度结果:
34
用法
//声明两个字符串对象str和strl String str="administrator"; String strl="administrator"; if (str.equals(strl)) {//如果相同则输出’‘密码正确,请登录系统” System.out.println('’密码正确,请登录系统”); }else{//否则输出‘’密码不正确,请重新输入密码” System.ou七.println(”密码不正确请重新输入密码”》; )结果:
密码正确,请登录系统
在现实程序开发中,有的登录系统对十输入密码的大小写忽略。此时在Java语言中也有一
个方法就是“equalsIgnoreCase(String str)",这个方法忽略字符串大小写。
用法
//声明两个字符串对象str和strl String str="Administrator"; String strl="administrator"; if (str.<span style="font-size: 18px;">equalsIgnoreCase</span>(strl)) {//如果相同则输出’‘密码正确,请登录系统” System.out.println('’密码正确,请登录系统”); }else{//否则输出‘’密码不正确,请重新输入密码” System.ou七.println(”密码不正确请重新输入密码”》; )结果:
密码正确,请登录系统
查找字符串子串有三个方法:
"indexOf(子串内容)”方法是帮助查找子串,如果返回的是负数,就表示在当前字符串中没有找到所查找的子串。
"startsWith(子串内容)”方法测试当前宇符串是否以子串开始。
"endsWith(子串内容)”方法测试当前字符串是否以子串内容为结尾。
用法
//定义字符串对象Str String str=”是一个很优秀的程序员”; //通过indexOf方法来查找字符串中的元素位置 System.out.println(str.iadezOf("个")); //通过endswith来查找当前元素是否是字符串的结尾 System.out.printla(str.endsWith("员")); //通过startsWith来查找当前元素是否是字符串的开头 System.out.println(str.startsWith(”明”));结果:
2
true
false
当创建StringBuffer类对象时,系统为对象分配的内存会自动扩展,以容纳新增的内容。针对“StringBuffer”类创建对象时的构造器有两个,下面将详细地讲述。
用法
StringHuffer sb=new StringBuffer();
StringBuffer sb=new StringBuffer(int x)
用法
System.out.println(sb.capacity()); System.out.println(sb. easureCapacity(100)) System.out.println(sb.capacity()); //输出字符串的容量capacity //扩充容量 //输出宇符串的容量capacity
用法
//构造一个缓冲字符串类的对象sb StringBuffer sb=new StriagBuffer('’小明是一个优秀”); //通过append方法,在这个对象后面添加一个新字符串 sb.append(”的程序员”) System.out.println(sb);//输出字符串对象结果:
小明是一个优秀的程序员
charAt()方法返回字符串中的单个字符。
用法
//构造一个缓冲字符串类对象sb StringBuffer sb=new StringBuffer("小明是一个优秀"); //返回指定位置的字符 System.out.println(sb.charAt(3));
结果:
一
用法
//构造一个缓冲字符串类对象sb StringBuffer sb=new StringBuffer('‘小明是一个优秀程序员") //将指定位置的元素替换成新的字符 sb.setCharAt(0,'张'); System.out.println(sb);//输出字符串结果:
张明是一个优秀程序员
用法
//构造一个缓冲字符串类对象sb StringBuffer sb=new StringBuffer("我是一个优秀"); //使用insert方法将新字符串插入到指定的位置 sb.insert(6,'的程序员'); System.out.println(sb); //输出字符串结果:
我是一个优秀的程序员
用法
//构造一个缓冲字符串类对象 StringBuffer sb=new StringBuffer(”我是一个程序员”) //使用substring方法返回指定位置开始到结束位置的子串 System.out.println(sb.substring(2));结果:
一个程序员
用法
//构造一个缓冲字符串类对象 StringBUffer sb=new StringBuffer(”我是一个程序员”); System.out.println(sb.reverse()); //将字符串倒置后输出结果:
员序程个一是我
1.
==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.
==是指对内存地址进行比较
equals()是对字符串的内容进行比较
3.
==指引用是否相同
equals()指的是值是否相同