字符串及字符串函数

String字符串:理解为使用一个签子将一个一个字符串起来的串儿,叫做字符串。 字符串一旦被创建,就不能被改变,可以被看作是一个字符数组。
Java程序中的所有字符串文字(例如"abc" )都被实现为此类的对象。

构造方法
public String()
String类内部重写了toString()方法,打印的是字符串内容本身
    
public String(byte[] bytes)
//可以将字节数组转成一个字符串对象
byte[] bytes = {97,98,99,100};
String s = new String(bytes);
System.out.println(s);//abcd

public String(byte[] bytes,int offset,int length)
//可以将字节数组的一部分转成字符串
 byte[] bytes = {97,98,99,100};
 String s = new String(bytes, 1, 2);
 System.out.println(s);//bc

public String(char[] value)
 //将字符数组转成字符串
char[] chars = {'a','吴','b','数'};
String s = new String(chars);
System.out.println(s);//a吴b数

public String(char[] value,int offset,int count)
//将字符数组的一部分转成字符串
char[] chars = {'a','吴','b','数'};
String s = new String(chars, 1, 3);
System.out.println(s);//吴b数

public String(String original)
 String s = new String("小虎");
System.out.println(s);//小虎
String s = new String(“hello”)和String s = “hello”;的区别?

Java 数组转为字符串输出 java数组转为字符串的函数_java

String s = “hello”; s += “world”; 问s的结果是多少?

Java 数组转为字符串输出 java数组转为字符串的函数_Java 数组转为字符串输出_02

字符串判断功能
boolean equals(Object obj)  比较两个字符串的内容是否相同,区分大小写的
boolean equalsIgnoreCase(String str) 比较两个字符串的内容是否相同,忽略大小写的
boolean contains(String str)  判断大字符串中是否包含小字符串
boolean startsWith(String str)  判断字符串以什么开头
boolean endsWith(String str)  判断字符串以什么结尾
boolean isEmpty()
字符串获取功能
String s = "shujia66a6吴涛";

int length()//获取字符串长度//12

char charAt(int index)//获取对应索引的字符值
System.out.println(s.charAt(9));//6

int indexOf(int ch)//根据Acsll值,来返回元素在字符串中的位置
System.out.println(s.indexOf(97));//5

int indexOf(String str)
 //从左往右去查找,找字符串的位置,返回的是小字符串第一个字符在大串的位置,如果字符串不存在,返回-1
System.out.println(s.indexOf("jia"));//3

int indexOf(int ch,int fromIndex)
  //从fromIndex位置开始寻找ch,如果找到返回在大串中整体位置
System.out.println(s.indexOf(97,3));//5

int indexOf(String str,int fromIndex)
String substring(int start)//字符串截取功能,从开始位置截取到末尾
String substring(int start,int end)//截取字符串指定的部分
字符串的转换功能
byte[] getBytes()
String s = "shujia666";
/字符串--->字节数组
byte[] bytes = s.getBytes();
for (int i = 0; i < bytes.length; i++) {
	System.out.println(bytes[i]);
        }
//
115
104
117
106
105
97
54
54
54
将字符串里的每个字符转为ASCll值,用byte数组保存起来
char[] toCharArray()
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
    System.out.println(chars[i]);
}
//s
h
u
j
i
a
6
6
6
static String valueOf(char[] chs)
char[] chars = {'a','b','c','d'};
System.out.println(String.valueOf(chars));
//abcd
将字符数组转为字符串
static String valueOf(int i)
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串

String.valueOf(char c) : 将 char 变量 c 转换成字符串

String.valueOf(char[] data) : 将 char 数组 data 转换成字符串

String.valueOf(char[] data, int offset, int count) :

将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串

String.valueOf(double d) : 将 double 变量 d 转换成字符串

String.valueOf(float f) : 将 float 变量 f 转换成字符串

String.valueOf(int i) : 将 int 变量 i 转换成字符串

String.valueOf(long l) : 将 long 变量 l 转换成字符串
String toLowerCase()
String toUpperCase()

String concat(String str)

String s2 = "HelloWoRLd";
//字符串拼接
System.out.println(s2.concat("你好").concat("世界").concat("真大"));
System.out.println(s2+"你好"+"你哈"+98+"真大");
//
HelloWoRLd你好世界真大
HelloWoRLd你好你哈98真大
字符串替换功能
/*
    替换功能
        String replace(char old,char new)
        String replace(String old,String new)
 */
public class StringDemo7 {
    public static void main(String[] args) {
        String s = "shujia666";

        //String replace(char old,char new)
        System.out.println(s.replace('6','&'));

        //String replace(String old,String new)
        System.out.println(s.replace("jia","hefei"));
    }
}
//运行结果
shujia&&&
shuhefei666
去除字符串空格
/*
    去除字符串两空格
    String trim() //只会去除两边的空格

 */
public class StringDemo8 {
    public static void main(String[] args) {
        String s = "  nihao world  shijie  ";
        System.out.println(s);
        System.out.println(s.trim());
    }
}
//
  nihao world  shijie  
nihao world  shijie

StringBuffer类:线程安全的可变字符序列

构造方法

public StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity) 指定容量的字符串缓冲区对象
public StringBuffer(String str) 指定字符串内容的字符串缓冲区对象

{
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
//        System.out.println(sb); //重写了toString()方法
        //获取默认创建的容量大小
        System.out.println(sb.capacity());

        //public StringBuffer(int capacity)
        //指定容量大小创建StringBuffer
        StringBuffer sb2 = new StringBuffer(10000);
        System.out.println(sb2.capacity());

        //public StringBuffer(String str)
        StringBuffer sb3 = new StringBuffer("hello");
        System.out.println(sb3);
        System.out.println(sb3.capacity()); //获取容量的大小
        System.out.println(sb3.length()); //获取真实存储的字符个数
    }
}
//
16 默认容量
10000
hello
21 默认容量+字符个数
5
添加功能

public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)

删除功能

public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)

StringBuffer sb = new StringBuffer();
        StringBuffer sb2 = sb.append(100);

        System.out.println(sb);
        System.out.println(sb2);
        System.out.println(sb==sb2);

        sb.append(100)
                .append(12.34)
                .append(true)
                .append(100L)
                .append(12.34F);

        //无论你append的是什么类型数据,只要进入到了StringBuffer中,就是一个一个的字符
        //StringBuffer中一律是字符
        System.out.println(sb);

        //public StringBuffer insert(int index,String str)
        sb.insert(8,"hello");
        System.out.println(sb);

        //public StringBuffer deleteCharAt(int index)
        sb.deleteCharAt(13);//.符号
        System.out.println(sb);

        //public StringBuffer delete(int start,int end) [start,end)
        //删除一部分
        sb.delete(8,16);
        System.out.println(sb);
//
100
100
true
10010012.34true10012.34
10010012hello.34true10012.34
10010012hello34true10012.34
10010012rue10012.34
替换功能

public StringBuffer replace(int start,int end,String str)

反转功能

public StringBuffer reverse()

public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("helloWorldJavaHadoop");

        sb.replace(5,10,"今天天气还好");
        System.out.println(sb);
        sb.reverse();
        System.out.println(sb);
    }
//
hello今天天气还好JavaHadoop
poodaHavaJ好还气天天今olleh
截取功能

public String substring(int start)
public String substring(int start,int end)

public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("hello").append(12345).append(12.34).append(true);
        System.out.println(sb);
		//hello1234512.34true
     
        String s1 = sb.substring(5);
        System.out.println(sb);
        System.out.println(s1);
        //hello1234512.34true
        //1234512.34true
     
        //public String substring(int start,int end)
        String s2 = sb.substring(5, 15);
        System.out.println(s2);
        System.out.println(sb);
        //1234512.34
        //hello1234512.34true
    }
String和StringBuffer的相互转换
String类有一些StringBuffer类没有的方法,比如:valueOf()、getBytes()等,可以将StringBuffer转换成String,就可以使用String类的方法。
反之依然,如果要使用StringBuffer的功能,比如:拼接append、插入insert、删除delete、反转reverse等,就可以转换成StringBuffer对象。

String >>> StringBuffer
1、通过构造方法 StringBuffer sb = new StringBuffer(String s)
2、通过append()方法 String str = new String(buffer)
    
StringBuffer >>> String
1、通过构造方法 String str = new String(StringBuffer buffer)
2、通过toString()方法
public class StringBufferDemo {
    public static void main(String[] args) {
        // String -- StringBuffer
        String s = "hello";
        // 注意:不能把字符串的值直接赋值给StringBuffer
        // 方式1: 通过构造方法
        StringBuffer sb = new StringBuffer(s);
        // 方式2:通过append()方法
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);
        System.out.println("sb:" + sb);
        System.out.println("sb2:" + sb2);
        System.out.println("---------------");

        // StringBuffer -- String
        StringBuffer buffer = new StringBuffer("java");
        // String(StringBuffer buffer)
        // 方式1: 通过构造方法
        String str = new String(buffer);
        // 方式2:通过toString()方法
        String str2 = buffer.toString();
        System.out.println("str:" + str);
        System.out.println("str2:" + str2);
    }
}

输出:
sb:hello
sb2:hello
---------------
str:java
str2:java