Java String 类

系统类 String

注意:字符串是个常量,又叫常量字符串,是不可改变的
所以你一旦创建了,那它的值就无法改变了
只要是对字符串进行操作,都返回的是一个新的字符串(原字符串不能更改)
字符串存在于常量池中
字符串本身没有发生变化,而是引用地址发生变化
相当于指针重新指向
String string = "Y";
string = "X";
System.out.println(string);
String string1 = "abc";
String string2 = new String("abc");
String string3 = "abc";
// == 相当于 判断两个地址是否一样
System.out.println(string1 == string2);// false
System.out.println(string1 == string3);// true
// 字符串中 equals 方法比较的是两个字符串的每一个字符
System.out.println(string1.equals(string2));// true
string1和 string2有什么不同?分别代表几个对象
string1是一个对象
string2是两个对象:"abc"new
String string1 = "abc";
String string2 = new String("abc");

String 的方法

1.获取
根据索引获取字符串中字符
char charAt(int index);
根据字符获取在字符串中的位置
int indexOf(int ch);
int indexOf(int ch, int fromIndex);

public static void fun1() {
    // 传入索引返回对应字符
    String string = "shuaisu";
    char charAt = string.charAt(1);
    System.out.println(charAt);
    // 传入字符返回对应索引
    int indexOf = string.indexOf('a');
    System.out.println(indexOf);
    // 传入查找索引是从当前位置开始查找
    int indexOf2 = string.indexOf('s', 2);
    System.out.println(indexOf2);
    // 传入字符串查找对应位置
    int indexOf3 = string.indexOf("su");
    System.out.println(indexOf3);
}
2.判断
是否包含这个字符串
是否以这个前缀开头
是否以这个后缀结尾

public static void fun2() {
    // 包含
    String string1 = "shuaisu";
    String string2 = "ai";
    boolean b1 = string1.contains(string2);
    System.out.println(b1);
    // 拼接
    String string3 = string1 + string2;
    System.out.println(string3);
    // concat 方法返回的是一个新的字符串
    String newString = string1.concat(string2);
    System.out.println(newString);
}
public static void fun3() {
    String string = "www.baidu.com";
    // 包含
    boolean b1 = string.contains("baidu");
    System.out.println(b1);
    // 前缀
    boolean b2 = string.startsWith("www");
    System.out.println(b2);
    // 后缀
    boolean b3 = string.endsWith("com");
    System.out.println(b3);
}
3.替换
public static void fun1() {
    String string = "南宫";
    String string2 = string.replace("南宫", "端木");
    System.out.println(string2);

}
4.切割
public static void fun2() {
    String string = "nan,gong,wen,tian,z,l,h";
    // 按逗号切割
    String[] strings = string.split(",");
    // 遍历
    for (int i = 0; i < strings.length; i++) {
        System.out.println(strings[i]);
    }
    // 增强 for 循环(用于快速打印)(因此又叫快速遍历)
    //   容器中每一个元素 : 遍历的容器
    for (String string2 : strings) {
        // 遍历时直接打印每一个元素
        System.out.println(string2);
    }
}
5.获取子字符串
public static void fun3() {
    String string = "nangong";
    // 从索引处开始截取,返回的是从索引往后的字符串
    String string2 = string.substring(4);
    System.out.println(string2);
    // [0,1) 截取时,留头不留尾
    String string3 = string.substring(0, 4);
    System.out.println(string3);
}
6.转换大小写
public static void fun4() {
    String string = "nangong";
    // 转大写
    String string2 = string.toUpperCase();
    System.out.println(string2);
    // 转小写
    String string3 = string2.toLowerCase();
    System.out.println(string3);
}
7.去空格
public static void fun5() {
    String string = "    na ng on  g   ";
    String string2 = string.trim();
    System.out.println(string2);
}
8.字符串比较
字符串相等时返回 0
两个字符串长度相同时:
一位一位进行 ASCII 码的比较
长度不相等返回的是长度的差值

public static void fun6() {
    String string1 = "nangong";
    String string2 = "nangong";
    // 进行比较
    int num = string1.compareTo(string2);
    System.out.println(num);
}
9.判断两个字符串相等(忽略大小写)
public static void fun7() {
    String string1 = "wanglong";
    String string2 = "wanGLong";
    boolean b = string1.equalsIgnoreCase(string2);
    System.out.println(b);

}
10.把字符数组转化为字符串
public static void fun8() {
    char[] array = {'w','a','n','g'};
    // 转字符串
    String string = new String(array);
    System.out.println(string);
    // int 转字符串
    int num = 5;
    String string2 = String.valueOf(num);
    System.out.println(string2);
    // 字符串转字符数组
    String string3 = "wanglong";
    char[] cs = string3.toCharArray();
    for (char c : cs) {
        System.out.println(c);
    }
}
11.判断字符串是否为空
public static void fun9() {
    String string1 = "wanglong";
    boolean b = string1.isEmpty();
    System.out.println(b);
}
1:将字符串 "   abc def  " 反转
private static void fun1() {
    String string = "   abc def  ";
    // 转化成字符数组
    char[] charArray = string.toCharArray();
    // 遍历交换
    for (int i = 0; i < charArray.length / 2; i++) {
        char temp = charArray[i];
        charArray[i] = charArray[charArray.length - 1 - i];
        charArray[charArray.length - 1 - i] = temp;
    }
    string = new String(charArray);
    System.out.println(string);
}
2:
将字符串 "   abc def   "中的前后空格去掉
转化成 "abc def" 用代码实现(不使用系统方法)
1.声明字符串
2.将字符串转成字符数组
3.声明开始和结束角标
4.找第一个不是空格的索引
5.找最后一个不是空格的索引
6.根据开始和结束的索引,截取字符串,注意留头问题

public static void fun2() {
    String string = "   abc def   ";
    char[] charArray = string.toCharArray();
    // 声明开始角标/结束角标
    int start = 0;
    int end = string.length() - 1;
    // 寻找从开始第一个不是空格的索引
    while (string.charAt(start) == ' ' && start < end) {
        start++;
    }
    // 寻找结束坐标
    while (charArray[end] == ' ' && start < end) {
        end--;
    }
    // 截取新字符串(+1 是留头不留尾)
    String substring = string.substring(start, end + 1);
    System.out.println(substring);
}
3:
计算字符串中 "wwwdasdwwwaswwwghwwwkl"  www出现的次数
public static void fun3() {
    String string = "wwwdasdwwwaswwwghwwwkl";
    // 记录出现的次数
    int count = 0;
    // 截取字符串角标
    int index = 0;
    // 声明要比对的字符串
    String key = "www";
    // 循环判断 key 是否存在于原字符串中
    // 每存在一次 字符串截取计数
    while(string.contains(key)) {
        // 寻找到的是字符串的起始坐标
        index = string.indexOf(key);
        // 截取字符串
        string = string.substring(index + key.length());
        // 计数器++
        count++;
    }
    System.out.println(count);
}
4:
查找下面出现相同的最大子串
public static String fun4() {
    // 定义两个字符串
    String string = "wheahelloweakweedas";
    String string2 = "asdhelloaasdsqas";
    String substring = "";
    for (int i = 0; i < string2.length(); i++) {
        for (int start = 0,end = string2.length() - i; end < string2.length(); start++,end++ ) {
            substring = string2.substring(start, end + 1);
            if (string.contains(substring) && start < end) {
                return substring;
            }
        }
    }
    return substring;
}

http://blog.csdn.net/huzongnan/article/list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值