JavaTutorial

[TOC]

1. 字符串

必须使用双引号来定义Java字符串,否则会报错

常见的字符串操作

截取子串substring,左闭右开

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = str1.substring(0,3);
        System.out.println(str2);
  	}
}

和js中的substring()很像,不过这种情况js我们大部分用slice

拼接

直接写 + 号

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "World";
        System.out.println(str1 + str2);
    }
}

检查字符串是否相等equals

返回值时true或者false

一定不能用==来检查两个字符串是否相等

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "World";
        System.out.println(str1.equals(str2));
    }
}

获取某个位置的字符

charAt()函数和js类似:

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        System.out.println(str1.charAt(1));
    }
}

检查字符串的长度

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        System.out.println(str1.length());
    }
}

统计字符串的长度,就可得到某个文章的总长度。还可以过滤其中的某些字符,然后计算长度。由于字符编码,许多完成度不高的程序,对中文的字数统计往往不正确。 codePointAt()

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello 中国 💪";
        //输出H的Unicode码,在0-128区间内,Unicode码和ASCII码相同
        System.out.println(str1.codePointAt(0));
        //输出“中”的Unicode码
        System.out.println(str1.codePointAt(6));
        //输出emoji符号“💪”的Unicode码
        System.out.println(str1.codePointAt(9));
    }
}

字符串的API

char charAt(int index)

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        System.out.println(str1.charAt(0));
    }
}

//输出H

int codePointAt(int index)

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "Hello";
        System.out.println(str1.codePointAt(0));
    }
}

//输出H的ASCIIA码

int offsetByCodePoints(int startIndex, int cpCount)

//前三个和代码点预计代码单元有关系,之后再细看

int compareTo(String other)

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "banana";
        System.out.println(str1.compareTo("apple"));    //banana大于apple,返回一个正数
        System.out.println(str1.compareTo("car"));      //banana小于car,返回一个负数
        System.out.println(str1.compareTo("banana"));   //相同字符串,返回0
    }
}

有点类似于C语言的strcmp函数,C语言的strcmp(str1, str2),str1 > str2 返回正, str1 < str2 返回负,str1 = str2 返回0

可以把java中的str1.compareTo(str2)

boolean endWith(String suffix)

public class FirstSample {
    public static void main(String[] args) {
        String str1 = "banana";
        System.out.println(str1.endsWith("na"));    //以na结尾,返回true
        System.out.println(str1.endsWith("ba"));    //否则,返回false
    }
}

boolean equals(Object other)

如果字符串与other相等,返回true,否则返回false

boolean equalgnoreCase(String other)

忽略大小写,如果相等返回true,否咋返回false

int IndexOf(String str)

int IndexOf(String str, int fromIndex)

int IndexOf(int cp)

int IndexOf(int cp, int fromIndex)

返回与字符串str或代码点cp匹配的第一个字串开始的位置。这个位置从索引0或fromIndex开始计算。如果在原始串中不存在str,返回-1

int lastIndexOf(String str)

int lastIndexOf(String str, int fromIndex)

int lastIndexOf(int cp)

int lastIndexOf(int cp, int fromIndex)

返回与字符串str和代码点匹配的最后字串的开始位置。这个位置从原始字符串的末尾或fromIndex开始计算

int length()

返回与字符串的长度

int codePointCount(int startIndex, int endIndex)

String replace(CharSequence oldString, CharSequence newString)

返回一个新字符串,这个新字符串中所有的oldString都会被newString所代替,其中可以用String和StringBuilder作为CharSequence的参数

String toLowerCase()

返回一个新字符串,这个字符串将所有的大写字母变为小写字母

String toUpperCase()

返回一个新字符串,这个字符串将所有的小写字母变为大写字母

String trim()

返回一个新字符串,这个新字符串删除了原始字符串开头和结尾的空格

有些时候,需要由较短的字符串构建字符串。比如,按键或者来自文件的单词。采用+连接效率就比较低。这时候我们就需要用StringBuilder对象

如下所示:

public class FirstSample {
    public static void main(String[] args) {
        StringBuilder builder = new StringBuilder();
        builder.append("Hello");
        builder.append("Java");
        System.out.println(builder.toString());
     }
}

StringBuilder的常用API列举如下:

StringBuilder() 构建一个空的字符串构建器

int length() 返回构建器或缓冲器的代码单元数量

StringBuilder append(char c) 追加一个代码单元并返回this

StringBuilder appendCodePoint(int cp) 追加一个代码点,将其转换为一个或两个代码单元并返回this

void setCharAt(int i, char c) 将第i个代码单元设置为c

StringBuilder insert(int offset, char c) 在offset位置插入一个代码单元并返回this

StringBuilder delete(int startIndex, int endIndex) 删除偏移量从startIndex到endIndex-1的代码单元并返回this

String toString() 返回一个与构建器内容相同的字符串