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


    
    
    
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/paomojj1/article/details/51559005

String类

介绍String类的初始化 String类的各种方法 String类的各种应用实例
  • 2017年03月27日 10:26

StringBuffer类常用方法(Java)

StringBuffer类和String 类最大的区别在于他的内容和长度都是可以改变的。。 常用方法演示:(课本上源代码) package example1.cpm; public clas...
  • hdd871532887
  • hdd871532887
  • 2015-12-15 21:40:18
  • 475

Java String类和StringBuffer类的区别

关于java的字符串处理我们一般使用String类和StringBuffer类 那么String类和StringBuffer类的区别在什么地方呢?     1、Stri...
  • zhangchen124
  • zhangchen124
  • 2014-04-29 10:53:31
  • 1302

java基础--StringBuffer类常用方法以及案例

StringBuffer类概述我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 线程安全的可变字符序列Str...
  • u014726937
  • u014726937
  • 2016-10-19 12:20:02
  • 1925

JAVA常用类之格式化

日期格式化在之前的博客中我们使用到了操作日期的一些类,我们发现,如果我们想要获得指定格式的日期字符串可以做到但是很麻烦,下面为大家介绍几种日期的格式化方式。java.text.DateFormatDa...
  • jianggujin
  • jianggujin
  • 2015-12-27 10:08:32
  • 2704

JAVA的String、StringBuilder和StringBuffer类的区别

StringBuffer类(或者StringBuilder)和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字...
  • u010870518
  • u010870518
  • 2015-09-14 12:21:54
  • 3651

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

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

File类常用API学习

package practice.file01; import java.io.File; import java.io.IOException; public class FileDemo { ...
  • fafajava
  • fafajava
  • 2016-04-10 18:12:35
  • 2683

Java常用类(Object类和String、StringBuffer)

Object类    Object类是所有Java类的根父类       如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类        public cl...
  • AsiaGuo
  • AsiaGuo
  • 2017-03-08 17:27:16
  • 346

常见对象_StringBuffer和String的相互转换

package cn.itcast_07; /* * 为什么我们要类之间的转换: * A -- B的转换 * 我们把A转换为B,其实是为了使用B的功能。 * B -- A的转换 ...
  • L1585931143
  • L1585931143
  • 2016-11-15 21:13:06
  • 856
收藏助手
不良信息举报
您举报文章:鸟哥Java学习之String类 and StringBuffer类-常用对象API
举报原因:
原因补充:

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