黑马程序员——java String
来源:互联网 发布:上海证券下载软件 编辑:程序博客网 时间:2024/05/08 07:38
------- android培训、java培训、期待与您交流! ----------
String
1、String类
(1)字符串是一个特许的对象。
(2)字符串一旦被初始化就不可以被改变。
(3)String s1 = "abc";//s1是一个类类型变量,"abc"是一个对象。
(4)String s2 = new String("abc");
思考:s1 和 s2 有什么区别?
s1在内存中有一个对象,s2在内存中有两个对象。
2、String类部分方法
2.1 获取:
(1)获取字符串中的包含的字符数,也就是字符串的长度。
int length():获取长度。
(2)根据位置获取位置上某个字符。
char charAt(int index)
(3)根据字符获取该字符在字符串中位置。
int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。
int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
int indexOf(String str):返回的是str在字符串中第一次出现的位置。
int indexOf(String str,int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。
int lastIndexOf(int ch) :由字符串后面开始往前获取ch在字符串中首次出现位置。
2.2 判断:
(1)字符串中是否包含某一个子串。
boolean contains(str);
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。故indexOf(str)也可以用于对指定判断是否包含。
(2)字符中是否有内容。
boolean isEmpty(): 原理就是判断长度是否为0。
(3)字符串是否是以指定内容开头。
boolean startsWith(str);
(4)字符串是否是以指定内容结尾。
boolean endsWith(str);
(5)判断字符串内容是否相同,复写了Object类中的equals方法。
boolean equals(str);
(6)判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
2.3 转换:
(1)将字符数组转成字符串。
构造函数:
String(char[]);
String(char[],offset,count):将字符数组中的一部分转成字符串,count代表转换个数。
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count);
static String valueOf(char[]);
(2)将字符串转成字符数组。
char[] toCharArray();
(3)将字节数组转成字符串。
String(byte[]);
String(byte[],offset,count):将字节数组中的一部分转成字符串。
(4)将字符串转成字节数组。
byte[] getBytes();
(5)将基本数据类型转成字符串。
static String valueOf(int);
static String valueOf(double);
2.4 替换:
String replace(oldchar,newchar);//如果替换的字符原串中没有,则返回原串。
2.5 切割:
String[] split(regex);
2.6 子串:
获取字符串中的一部分。
String substring(begin);//从指定位置(begin)开始到结尾。
String substring(begin,end);//获取的子串包含头(begin)不包含尾(end)。
2.7 大小写转换、去空格、比较:
(1)将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
(2)将字符串两端的多个空格去除。
String trim();
(3)对两个字符串进行自然顺序的比较。
int compareTo(string);
3、String类方法练习
(1)自己写一个trim函数,将字符串的两端的空格删除(字符串中间的空格不会被删除)。
class MyTrim{public static void main(String[] args){String s1 = " hello world ";String s2 = mytrim(s1);System.out.println(s1);System.out.println(s2);}public static String mytrim(String s){int start = 0;int end = s.length()-1;while(start<=end && s.charAt(start)==' ')//charAt()获取字符串所指位置上的字符。{start++;}while(start<=end && s.charAt(end)==' '){end--;}return s.substring(start,end+1);//获取子串}}
(2)获取两个字符串中最大相同子串。
class GetMaxSubstring{public static void main(String[] args){String s1 = "cakgjjhellobionl";String s2 = "oiohellovwen";String str=getMaxSubString(s1,s2);System.out.println(str);}public static String getMaxSubString(String s1,String s2){String max = "";String min = "";max = (s1.length()>s2.length())?s1:s2;//将长的字符串传给max;min = (max==s1)?s2:s1;//将短的字符串传给min;for(int x=0;x<min.length();x++){for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++){String temp = min.substring(y,z);//System.out.println(temp);if(max.contains(temp))//if(max.indexof(temp)!=-1)return temp;}}return "";}}
(3)获取一个字符串在另一个字符串中出现的次数。如:"gguunmiuurlwuufgyuu"。
class GetSubCount{public static void main(String[] args){String s = "gguunmiuurlwuufgyuu";int num = getSubCount("uu",s);System.out.println(num);}public static int getSubCount(String key,String str){int count = 0; int index;while((index=str.indexOf(key))!=-1){System.out.println("str: "+str);str = str.substring(index+key.length());//截取字串count++;}return count;//返回次数}}
4、StringBuffer
StringBuffer的特点:
(1)StringBuffer是字符缓冲区,是一个容器。
(2)StringBuffer长度是可变化的。(数组的长度不可变化)
(3)StringBuffer可以字节操作多个数据类型。(数组只能操作一种数据类型)
(4)StringBuffer最终会通过toString方法转换成字符串。
5、StringBuffer特有方法
5.1 存储:
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
5.2 删除:
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。
5.3 获取:
char charAt(int index):获取缓冲区中指定位置index处的字符。
int indexOf(String str) :获取指定字符串str在缓冲区中出现的位置。
int lastIndexOf(String str) :由后往前寻找指定字符串str在缓冲区中出现的位置。
String substring(int start, int end):获取子串。
5.4 修改:
StringBuffer replace(start,end,string):将缓冲区内由start位置开始end位置结束的字串替换为string。
void setCharAt(int index, char ch):将指定位置index处字符替换为ch。
5.5 反转:
StringBuffer reverse();
知识点:JDK1.5 出现了一个StringBuilder,它和StringBuffer有什么区别呢?
(1)StringBuilder的执行速度比StringBuffer的快。
(2)StringBuilder是非同步的,线程非安全。StringBuffer是同步的,线程安全。
6、基本数据类型对象包装类
八种基本数据类型的对象包装类
(1)将基本数据类型封装成对象包装类的好处:可以在对象中定义更多的方法操作该数据。
(2)常用的操作:用于基本数据类型和字符串类型之间做转换。
(3)基本数据类型转换成字符串:
基本数据类型+"";
基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);//将34整数变成"34";
(4)字符串转成基本数据类型:
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("123");
Integer i = new Integer("123");
int num = i.intValue();
(5)十进制转成其他进制
toBinaryString();//转二进制
toHexString();//转十六进制
toOctalString();//转八进制
(6)其他进制转十进制
parseInt(string,radix);//radix表示进制数(2,8,16)
7、基本数据类型对象包装类的新特性
JDK1.5 以后,简化了定义方式。
Integer x = new Integer(4);//可以直接写成下面方式
Integer x = 4;//自动装箱
x = x + 5;//x+5:x 进行自动拆箱,变成成了int类型再和5进行加法运算。最后将和装箱赋值给x。
需要注意:在使用时,Integer x = null;前面代码会出现NullPointerException报错。
- 黑马程序员——java String
- 黑马程序员——JAVA String总结
- 黑马程序员——【java】String类
- 黑马程序员笔记——Java-String
- 黑马程序员—— Java基础--String
- 黑马程序员——java---String
- 黑马程序员——JAVA String总结
- 黑马程序员——Java基础---String
- 黑马程序员——JAVA String类
- 黑马程序员——java String
- 黑马程序员——Java String类
- 黑马程序员——Java基础--String
- 黑马程序员java学习—String类
- 黑马程序员—Java API(String类)
- 黑马程序员---string【java】
- 黑马程序员-java-String
- 黑马程序员——String
- 黑马程序员——String
- ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件
- C# 继承
- Mybatis类型转换介绍
- maven修改项目JDK版本
- ExtJS xtype大全【精】
- 黑马程序员——java String
- 禁止Android 横屏竖屏切换 .
- (22)Java.util.concurrent包学习 线程池
- spring学习系列 -- 定时器一TimerTask
- 操作系统时间片轮转法进程CPU调度
- Oracle-BPM(一)
- 谁也不该供着谁
- 最短路径的Dijkstra算法
- Protobuf语言指南