黑马程序员--String类
2015-11-06 15:16
393 查看
黑马程序员--String类
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
String类
2、一旦初始化就不可以被改变,相同字符串不会被重复创建;
3、String类复写了Object中equals方法,用于比较字符串内容是否相同,不比较地址;
4、String s1 = "abc";(s1是一个类类型变量,"abc"是一个对象)和String s2 = new String("abc");区别:
s1在内存中有一个对象;s2在内存中有两个对象new、"abc"。
1、获取
1.1 int length():获取字符串的长度(个数)。
1.2 char charAt(int index):根据位置获取字符。
1.3根据字符获取该字符在字符串中的位置
int indexOf(int ch):返回指定字符在字符串中第一次出现的索引(位置)。
int indexOf(int ch,int fromIndex):从指定的索引处开始,获取指定字符在字符串中出现的索引。
int indexOf(String str):返回第一次出现的指定子字符串在此字符串中的索引。
int indexOf(String str,int fromIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
int lastIndexOf(int ch):返回最后一次出现的指定字符在此字符串中的索引。
1.4获取字符串中一部分字符串(子串)。
String substring(int beginIndex):从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常。
String substring(int beginIndex,int endIndex):含头不含尾。
2、判断
boolean contains(String str):字符中是否包含某一个字符串。
indexOf()用if(str.indexOf("aa")!=-1)语句,既可以判断,又可以获取出现的位置。
boolean isEmpty():字符中是否有内容。原理就是判断长度是否为0。
boolean startsWith(str):字符串是否以指定内容开头。
boolean endsWith(str):字符串是否以指定内容结尾。
boolean equals(str):判断字符串内容是否相同。
boolean equalsIgnoreCase():判断内容是否相同,并忽略大小写。
3、转换
3.1将字符数数组转成字符串
构造函数 String(char[]){}
String(char[],offset,count) 将字符数组中的一部分转成字符串。
静态方法
static String copyValueOf(char[] date):返回指定数组中表示该字符序列的字符串。
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[] date):返回指定数组参数的字符串表示形式。
3.2将字符串转成字符数组
char[] toCharArray();
3.3将字节数组转成字符串
String(byte[]);
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4将字符串转成字节数组
byte[] getBytes();
3.5将基本数据类型转成字符串(此处都是String的方法,首单词要小写)
static String valueOf(int)
static String valueOf(double)
3+""==String.valueOf(3)
特殊:字符串和字节数组在转换过程中是可以指定编码表的。
3.6将字符串转成大写或小写
String toUpperCase();
String toLowerCase();
3.7将字符串两端的多个空格去除
String trim();
4、其他功能
4.1替换
String replace(char oldCh,char newCh):建立一个新字符串。
String replace(String s1,String s2);
若未找到替换内容,则返回原字符串。
4.2切割
String[] split(regex);涉及都正则表达式(正则表达式就是字符串的使用的快捷方式)。
4.3对两个字符串进行自然顺序的比较
int compareTo(string):按字典顺序比较两个字符串。
2、可以存储不同类型数据;
3、最终要转成字符串才能使用。
PS:
StringBuffer的字符串缓冲区初始容量为16个字符,其实质还是数组。
StringBuffer append(date):将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,date):可以将数据插入到指定index位置。
2、删除
StringBuffer delete(int start,int end):删除缓冲区中的数据,含头不含尾。
StringBuffer deleteCharAt(int index):删除指定位置的字符。
3、获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
4、修改
StringBuffer replace(int start,int end,String str);
void setCharAt(int index,char ch);
5、反转
StringBuffer reverse();
6、其他方法
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):将缓冲区中指定数据存储到指定字符数组中。
src:源 dst:目的
void setLength(int newLength):设置字符序列的长度
PS:
1、使用setLength设置StringBuffer中字符序列的长度。
如果小于已有字符序列的长度,多余部分将被清除;如果大于,多余部分用空字符填充。
2、当创建的StringBuffer内容长度大于16,将会创建一个较长的新数组。
也可以通过StringBuffer(int capacity);构造函数自己设置StringBuffer缓冲区长度。
区别:
StringBuffer是线程同步的,通常用于多线程。在添加时,不能做其他操作。但单线程时效率低。
StringBuilder是线程不同步。开发中建议使用StringBuilder。因为不用同步,效率高,但是多线程时不安全。
PS:
一、升级三个要素:提高安全性、提高效率、简化书写;
二、基本数据类型对象包装类:把基本数据类型封装成对象,便于操作。
2、常见操作:基本数据类型和字符串类型之间的转换。
2.1将基本数据类型转成字符串。
a.基本数据类型+"";
b.基本数据类型.toString(基本数据类型值);
例:Integer.toString(34); //将34整数转换成"34"。
2.2将字符串转成基本数据类型
a.静态转换方法:xxx a = Xxx.parseXxx(String);
例:int a = Integer.parseInt("a123");//NumberFormatException。必须传入数字格式的字符串
b.非静态:
Integer i = new Integer("123");
int num = i.intaValue();
3、常见方法
3.1十进制转成其他进制:
toBinaryString();
toHexString();
toOctalString();
3.2其他进制转成十进制:
parseInt(string,radix);radix:要转的进制数,string:标的字符串。
例:int x = Integer.parseInt("3c",16);///~60
三、JDK1.5版本后的2个新特性:
1、Integer x = 4;//自动装箱
2、当数值在byte范围内时,如果该数值已经存在,则不会再开辟新的空间。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
String类
一、定义
String类:用于描述字符串事物的类。二、特点
1、字符串是一个特殊的对象;2、一旦初始化就不可以被改变,相同字符串不会被重复创建;
3、String类复写了Object中equals方法,用于比较字符串内容是否相同,不比较地址;
4、String s1 = "abc";(s1是一个类类型变量,"abc"是一个对象)和String s2 = new String("abc");区别:
s1在内存中有一个对象;s2在内存中有两个对象new、"abc"。
三、常见功能
一个对象的功能一般有四部分:增、读、改、删(C create R read U update D delete)。1、获取
1.1 int length():获取字符串的长度(个数)。
1.2 char charAt(int index):根据位置获取字符。
1.3根据字符获取该字符在字符串中的位置
int indexOf(int ch):返回指定字符在字符串中第一次出现的索引(位置)。
int indexOf(int ch,int fromIndex):从指定的索引处开始,获取指定字符在字符串中出现的索引。
int indexOf(String str):返回第一次出现的指定子字符串在此字符串中的索引。
int indexOf(String str,int fromIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
int lastIndexOf(int ch):返回最后一次出现的指定字符在此字符串中的索引。
1.4获取字符串中一部分字符串(子串)。
String substring(int beginIndex):从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常。
String substring(int beginIndex,int endIndex):含头不含尾。
//字符串中,返回-1代表被访问字符串中没有标的字符(串)。 class StringGet { public static void get() { String str = "abcdafg"; //获取长度(个数) sop(str.length()); //根据索引获取字符。当访问到字符串中不存在的角标时会发生:StringIndexOutOfBoundsException。 sop(str.charAt(4)); //返回字符第一个出现索引(位置)。 sop(str.indexOf('d')); //根据字符从指定索引开始,获取目标索引。 sop(str.indexOf('t',3)); //返回自字符串索引。 sop(str.indexOf("fg")); //从指定索引开始,返回首次出现的字符串索引。 sop(str.indexOf("da",3)); //索引一个字符最后出现的索引。 sop(str.lastIndexOf('a')); //获取字符串中的一部分字符串(子串)。 sop(str.substring(3)); sop(str.substring(3,5)); } public static void main(String[] args) { get(); } public static void sop(Object obj) { System.out.println(obj); } }运行结果:
2、判断
boolean contains(String str):字符中是否包含某一个字符串。
indexOf()用if(str.indexOf("aa")!=-1)语句,既可以判断,又可以获取出现的位置。
boolean isEmpty():字符中是否有内容。原理就是判断长度是否为0。
boolean startsWith(str):字符串是否以指定内容开头。
boolean endsWith(str):字符串是否以指定内容结尾。
boolean equals(str):判断字符串内容是否相同。
boolean equalsIgnoreCase():判断内容是否相同,并忽略大小写。
class StringJudge { public static void judge() { String str = "ArrayDemo.java"; //判断文件名称是否包含Demo。 sop(str.contains("Demo")); //用indexOf()判断 sop(str.indexOf("rra")!=-1); //是否为空字符 sop(str.isEmpty()); //判断文件名称是否以Array单词开头。 sop(str.startsWith("Array")); //判断文件名称是否是.java的文件。 sop(str.endsWith(".java")); String str1 = "ARRAYDEMO.JAVA"; //判读是否有相同内容 sop(str1.equals(str)); //忽略大小写 sop(str1.equalsIgnoreCase(str)); } public static void main(String[] args) { judge(); } public static void sop(Object obj) { System.out.println(obj); } }运行结果:
3、转换
3.1将字符数数组转成字符串
构造函数 String(char[]){}
String(char[],offset,count) 将字符数组中的一部分转成字符串。
静态方法
static String copyValueOf(char[] date):返回指定数组中表示该字符序列的字符串。
static String copyValueOf(char[] data,int offset,int count);
static String valueOf(char[] date):返回指定数组参数的字符串表示形式。
3.2将字符串转成字符数组
char[] toCharArray();
3.3将字节数组转成字符串
String(byte[]);
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4将字符串转成字节数组
byte[] getBytes();
3.5将基本数据类型转成字符串(此处都是String的方法,首单词要小写)
static String valueOf(int)
static String valueOf(double)
3+""==String.valueOf(3)
特殊:字符串和字节数组在转换过程中是可以指定编码表的。
3.6将字符串转成大写或小写
String toUpperCase();
String toLowerCase();
3.7将字符串两端的多个空格去除
String trim();
//因为调用了String类,所以要导入对应包。 import java.lang.String.*; class StringTransform { public static void transform() { char[] arr = {'a','b','c','d','e','f'}; //从角标1开始,获取三个字符。 String s = new String(arr,1,3); sop("s="+s); //返回指定数组中表示该字符序列的字符串 String str1 = String.copyValueOf(arr); sop("str1="+str1); //返回指定数组参数的字符串表示形式。 String str2 = String.valueOf(arr); sop("str2="+str2); String s1 = "afegvfee"; //字符串转字符数组 char[] chs = s1.toCharArray(); for(int x=0; x<chs.length;x++) { System.out.print(("ch="+chs[x]+" ")); } System.out.println(); byte[] bt1 = {1,2,3}; //将字节数组转成字符串 String str3 = new String(bt1); sop("str3="+str3); //字符串转字节数组 byte[] bt2 = s1.getBytes(); for(int x=0; x<bt2.length;x++) { System.out.print(("by="+bt2[x]+" ")); } System.out.println(); //将基本数据类型转成字符串 String str4 = String.valueOf(20); sop("str4"+str4+(3+""==String.valueOf(3))); String str5 = " Hello Java "; sop(str5.toLowerCase()); sop(str5.toUpperCase()); sop(str5.trim()); } public static void main(String[] args) { transform(); } public static void sop(Object obj) { System.out.println(obj); } }运行结果:
4、其他功能
4.1替换
String replace(char oldCh,char newCh):建立一个新字符串。
String replace(String s1,String s2);
若未找到替换内容,则返回原字符串。
4.2切割
String[] split(regex);涉及都正则表达式(正则表达式就是字符串的使用的快捷方式)。
4.3对两个字符串进行自然顺序的比较
int compareTo(string):按字典顺序比较两个字符串。
class StringOthers { //注意命名要防止和方法重名 public static void method_replace() { String s = "hello java"; //建立一个新字符串,旧字符串一旦建立不能被改变。 String s1 = s.replace('a','n'); //如果要替换的字符不存在,返回原串。 String s2 = s.replace('q','n'); //替换部分字符串。 String s3 = s.replace("java","world"); sop("s="+s); sop("s1="+s1); sop("s2="+s2); sop("s3="+s3); } public static void method_split() { String s = "zhangsan,lisi,wangwu"; //依据","进行切割 String[] arr = s.split(","); for(int x=0;x<arr.length;x++) { System.out.print((arr[x]+" ")); } //换行 System.out.println(); } public static void method_compare() { String s1 = "bcz"; String s2 = "bcd"; //按字典顺序比较两个字符串。 //若字符串相同,返回0;若s1>s2,返回正数;s1<s2,返回负数; sop(s1.compareTo(s2)); } public static void main(String[] args) { method_replace(); method_split(); method_compare(); } public static void sop(Object obj) { System.out.println(obj); } }运行结果:
StringBuffer
一、定义
StringBuffer:是字符串缓冲区,用于存储数据的容器。二、特点
1、长度可变化;2、可以存储不同类型数据;
3、最终要转成字符串才能使用。
三、优点
StringBuffer可对字符串修改;string类一旦建立无法修改。PS:
StringBuffer的字符串缓冲区初始容量为16个字符,其实质还是数组。
四、常见功能
1、添加:StringBuffer append(date):将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,date):可以将数据插入到指定index位置。
2、删除
StringBuffer delete(int start,int end):删除缓冲区中的数据,含头不含尾。
StringBuffer deleteCharAt(int index):删除指定位置的字符。
3、获取
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start,int end)
4、修改
StringBuffer replace(int start,int end,String str);
void setCharAt(int index,char ch);
5、反转
StringBuffer reverse();
6、其他方法
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):将缓冲区中指定数据存储到指定字符数组中。
src:源 dst:目的
void setLength(int newLength):设置字符序列的长度
class StringBufferDemo { public static void method_add() { StringBuffer sb = new StringBuffer(); //sb添加后并使sb1指向的是同一个对象,故sb==sb1。 StringBuffer sb1 = sb.append(34); sop("sb==sb1:"+(sb==sb1)); //方法调用链,返回字符串链。 sb.append("ass").append(true).append(34); sop("sb="+sb); //将数据插入到指定7上。 sb.insert(7,"qq"); sop(sb.toString()); } public static void method_del() { StringBuffer sb = new StringBuffer("abcdf"); sb.delete(1,3); //清空缓冲区 //sb.delete(0,sb.length()); //删除一个字符的用法。跟sb.delete(1,2);效果相同。sb.delete(1,1);无效。 //sb.deleteCharAt(2); sop(sb.toString()); } public static void method_update() { StringBuffer sb = new StringBuffer("abcdf"); //sb.replace(1,3); sb.setCharAt(2,'K');//void sop(sb.toString()); } public static void main(String[] args) { method_add(); method_del(); method_update(); } public static void sop(String str) { System.out.println(str); } }运行结果:
PS:
1、使用setLength设置StringBuffer中字符序列的长度。
如果小于已有字符序列的长度,多余部分将被清除;如果大于,多余部分用空字符填充。
2、当创建的StringBuffer内容长度大于16,将会创建一个较长的新数组。
也可以通过StringBuffer(int capacity);构造函数自己设置StringBuffer缓冲区长度。
五、StringBuilder
StringBuilder是JDK1.5版本后StringBuffer的替代品。StringBuilder用法和StringBuffer完全一样。区别:
StringBuffer是线程同步的,通常用于多线程。在添加时,不能做其他操作。但单线程时效率低。
StringBuilder是线程不同步。开发中建议使用StringBuilder。因为不用同步,效率高,但是多线程时不安全。
PS:
一、升级三个要素:提高安全性、提高效率、简化书写;
二、基本数据类型对象包装类:把基本数据类型封装成对象,便于操作。
2、常见操作:基本数据类型和字符串类型之间的转换。
2.1将基本数据类型转成字符串。
a.基本数据类型+"";
b.基本数据类型.toString(基本数据类型值);
例:Integer.toString(34); //将34整数转换成"34"。
2.2将字符串转成基本数据类型
a.静态转换方法:xxx a = Xxx.parseXxx(String);
例:int a = Integer.parseInt("a123");//NumberFormatException。必须传入数字格式的字符串
b.非静态:
Integer i = new Integer("123");
int num = i.intaValue();
3、常见方法
3.1十进制转成其他进制:
toBinaryString();
toHexString();
toOctalString();
3.2其他进制转成十进制:
parseInt(string,radix);radix:要转的进制数,string:标的字符串。
例:int x = Integer.parseInt("3c",16);///~60
class IntegerDemo { public static void sop(String str) { System.out.println(str); } public static void main(String[] args) { //基本数据类型转字符串 String s = 10 + ""; sop(s); sop(Integer.toString(34)); //将一个字符串转成整数(静态方法)。 //int num = Integer.parseInt("a23");//NumberFormatException。必须传入数字格式的字符串 double b = Double.parseDouble("12.23"); sop("double="+b); //非静态方法 Integer i = new Integer("123"); sop("i="+i); //常用方法: //整数类型的最大值 sop("int max :"+Integer.MAX_VALUE); //十进制转二进制: sop(Integer.toBinaryString(-6)); //十进制转十六进制 sop(Integer.toHexString(60)); //其他进制转成十进制: int x = Integer.parseInt("3c",16);//括号里是(原数据,要转变的原数据进制); sop("x="+x); } }运行结果:
三、JDK1.5版本后的2个新特性:
1、Integer x = 4;//自动装箱
2、当数值在byte范围内时,如果该数值已经存在,则不会再开辟新的空间。
相关文章推荐
- ——黑马程序员——OC中@property、@synthesize关键字
- 职业规划之方法论
- WinForm播放视频
- 前端面试常见问题。
- php程序员进阶篇 [十问PHP程序员]
- JVM程序员的阅读清单
- 黑马程序员------二维数组三种格式的内存图解
- 黑马程序员------50道JAVA基础编程练习题
- 程序员必须知道的几个Git代码托管平台
- 程序员们 你们是这样设置密码的吗?
- [LeetCode]:String to Integer (atoi)
- helloworld每一个程序员的开始!
- 黑马程序员——java基础——集合框架
- 黑马程序员------Throwable源码详解
- 黑马程序员------Throwable及常见异常
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
- 面试题1 落单的数
- 转换字符串到整数
- 黑马程序员------常用API-常见对象需要练习的方法列表
- 有效数字