【第22期】观点:IT 行业加班,到底有没有价值?

鸟哥Java学习之String类 and StringBuffer类-常用对象API

原创 2016年06月01日 21:00:57
1.java.lang包是Java核心类,会自动导入程序中,String类就是在其中。
    创建:两种方式,一个在常量池中,一个在堆内存中(new)。String对象一旦创建其内容就不会改变。

2.String类方法:常见功能
获取:
    int indexOf(int ch) 返回指定字符第一次出现的位置索引
    int indexOf(int ch,int fromIndex)
    int indexOf(string str) 获取字符串第一次出现的位置
    获取子串 substring
转换:
    String[] split(String regex) 字符串切割,参数是规则,涉及到正则表达式。
    char[] toCharArray() 字符串转成字符数组
    byte[] getBytes() 字符串转成字节数组
    String toUpperCase() 字符串字母转成大小写
    String replace(char oldch,char newch)字符串内容进行替换
    String replace(String s1,String s2)
    trim() 去除字符串两端空格,实际开发中有用,用户在输入信息后习惯输入空            
    String concat(String)字符串连接  同+
判断:
    字符串内容是否相等 boolean equalsIgnoreCase()忽略字母大小写
    字符串中是否包含某一字符串boolean contains(CharSequence s)
    字符串是否以指定字符串开头,是否以指定字符串结尾boolean startsWith(String prefix)
比较:
    int compareTo(String anotherString) 按照字符ASCII码顺序

3.StringBuffer:字符串缓冲区, 容器对象。特点:长度可变,可以存储不同类型数据,最终转成字符串进行处理,可以对字符串进行修改。
    方法:
    添加 append(data)
    插入 insert(index,data)
    删除 delete(start,end)包含头不包含尾,注意清空缓冲区
都是返回缓冲区
   
    修改 replace,void setCharAt
    查找 根据内容查角标 indexOf 和根据角标查内容 charAt

4.StringBuilder:此类提供一个与StringBuffer兼容的 API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。

package string.p1.demo;
 
/*
* 给定一个字符串数组,按照字典顺序从小到大排序
* {"nba","abc","cba","zz","qq","haha"}
* 思路:
* 1.数组排序,选择或冒泡
* 2.for嵌套,字符串比较compareTo(),换位
*
*/
public class test1 {
 
public static void main(String[] args) {
String[] arr = {"nba","abc","cba","zz","qq","haha"};
printArray(arr);
sortArray(arr);
printArray(arr);
}
 
public static void sortArray(String[] arr) {
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++)
if(arr[i].compareTo(arr[j])>0)
swap(arr,i,j);
}
}
 
public static void swap(String[] string,int i,int j) {
String temp=string[i];
string[i]=string[j];
string[j]=temp;
}
 
public static void printArray(String[] arr) {
System.out.print("[");
for(int i=0;i<arr.length;i++){
if(i!=arr.length-1)
System.out.print(arr[i]+',');
else
System.out.println(arr[i]+']');
}
}
 
}
package string.p1.demo;
/*
* 子串的在整串中出现的次数getkeystringcount(str,key)
* 思路:
* 1.子串是否存在,不存在 -1,若存在,获取子串第一次出现的位置 int indexOf(string str)
* 2.取剩余子串,剩余子串 的初始位置即是出现的位置+剩余子串长度
* 3.以此类推,即循环1,2。并对每次找到用计数器count
*
* 改进:getkeystringcount_1(str,key)
* int indexOf(string str,index)从某个位置开始找
*/
public class test2 {
 
public static void main(String[] args) {
String str = "nbajhioheoihnbajnba";
String key = "nba";
int count = getkeystringcount_1(str,key);
System.out.println("count="+count);
}
 
public static int getkeystringcount_1(String str, String key) {
int count = 0;
int index = 0;
while((index = str.indexOf(key,index)) != -1){
//str = str.substring(index + key.length());
index = index + key.length();
count++;
}
return count;
}
 
}
package string.p1.demo;
/*
* 两个字符串中最大相同子串
* 思路:
* 1.选择更短的字符串,先一整串比,看长串是否包含,若包含,则返回,若不包含,则2
* 2.选取短串长度-1的子串再看是否包含
* 3.循环直至找出,外循环一共需要短串长度str2.length()趟,内循环则是对应子串选取
*/
public class test3 {
public static void main(String[] args) {
String str1 = "ahirewonproieop";
String str2 = "ngdlsirewo";
String str = getMaxSubString(str1,str2);
System.out.println(str);
}
/**
* 获取最大子串
* @param str1
* @param str2
* @return String
*/
public static String getMaxSubString(String str1, String str2) {
for(int i = 0;i<str2.length();i++){
for(int x = 0,y=str2.length()-i;y!=str2.length()+1;x++,y++){
String sub = str2.substring(x,y);
if(str1.contains(sub)) return sub;
}
}
return null;
}
}


    
    
    
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

一个程序员多年的收藏

2010 - 01 - 15 缩略显示 [置顶] 一个程序员的多年珍藏(1月23日最新更新) 文章分类:Java编程 程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不...

java语言中string and stringbuffer的区别和用法

String类用来表示那些创建后就不会再改变的字符串,它是immutable的。而StringBuffer类用来表示内容可变的字符串,并提供了修改底层字符串的方法。 当我们进行字符拼接时,请使用StringBuffer类而非String类,因为前者将比后者快上百倍。 ...
  • yheye
  • yheye
  • 2011-03-25 21:10
  • 659

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

一个程序员多年的收藏

文章分类:Java编程 程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看不厌的电子书了。  昨天很郁闷,我用了5年的移动硬盘,莫名奇妙的坏掉了。里面40G的资料全部报销了。  ...

java 学习 String类 和 StringBuffer类的用法 暑假第九天

/* java.lang.String String 类所在的包String str=new String("abc"); java的对象是通过引用来实现的 str引用的是 存放内容为 abc的内存地址 所以即使内容相等但是对象实不相等的对象是不能用==比较的即使内容相等 但是 ...

FifthDay--Java基础(四)抽象类与接口、String与StringBuffer

修饰符abstract:抽象的,定义框架不去实现,可以修饰类和方法 abstract修饰类:  会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型  抽象类就相当于一个类的半成品,需要子类继承并覆盖其中...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)