鸟哥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;
}
}


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

相关文章推荐

黑马程序员 常用对象API-- String类、Stringbuffer、StringBuilder总结

-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------   String类: 字符串是一个特殊的对象。 字符串一旦初始...

(23)Java学习笔记——常用对象API / StringBuffer类

StringBuffer类 线程安全的可变字符序列 StringBuffer和String的区别 前者长度和内容可变,后者不可变 如果使用前者做字符串的拼接,不会浪费太多的资源 StringB...

(22)Java学习笔记——常用对象API / String类

String 类 字符串:就是由多个字符组成的一串数据。也可以堪称是一个字符数组。 字符串的特点: 字符串字面值“abc”也可以看成是一个字符串对象。 字符串是常量,一旦赋值不能被改变。 构造方法: ...

黑马程序员——IDE&Object类、常用API-String类、常用API-Arrays、System、StringBuffer&Integer类和Date类、对象数组

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、IDE&Object类 Eclipse 1:Eclipse的概述 (1)eclipse的...

黑马程序员_Java学习日记_JAVA中API中对象String和StringBuffer/StringBuilder

黑马程序员-学习日记   黑马程序员_JAVA中API中对象String和StringBuffer/StringBuilder   ------- android培训、java培训、期待与您交...

黑马程序员_常用API_String、Stringbuffer、StringBuilder、其它类

String类 String是一个特殊的对象,一旦被初始化,就不会被改变。()指的是abc 不是变量 s1. String s1="abc"; s1是一个类类型变量,“abc”是一...

常用API(一)——String、StringBuffer与基本类型包装类

String关于String这个特殊类,我到现在都还没搞明白,我觉得可能主要是由于没有搞懂JVM的内存结构引起的,但还是对其进行以下记录。 字符串是一个特殊的对象。 字符串一旦初始化就不可以被改变。S...

String、Integer、StringBuffer和API类中的常用方法

String类:String是final类型的(最终类),String类不可以有子类     字符串是一个特殊的对象     字符串一旦被初始化,就不可以改变     String str1=”abc...

鸟哥Java学习之基本数据类型包装类--常用对象API

1.为了方便操作基本数据类型,将其封装成对象。     byte               Byte     short         &...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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