JavaString题目练习

     * 通过new创建的字符串对象,没一次new都会申请一个内存空间,虽然内容相同,但是地址值不同 char[] ch = {'a','b','c'};
     * String s1 = new String(ch); String s2 = new String(ch);
     * 上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容相同的
     * 
     * 以""方式给出的字符串,只要字符串序列相同(顺序和大小写),无论在程序代码中出现几次, JVM都会值建立一个String对象,并在字符串池中维护
     * String s3 = "abc"; String s4 = "abc";
     * 上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;
     * 第二行则让s4直接参考字符串池中的String对象,也就是说他们本质上是同一个对象

1.倒序输出字符串

2.给一个字符串换,判断该字符串中是否包含某个子串。如果包含,求子串的所有出现位置。

(如:"abcd23abcd34bcd"中,"bc"子串的出现位置)

3.判断字符串是否是回文数

4.将驼峰字符串转化为下划线字符串

5.给定一个字符串数组,按照字典顺序[abcdefg……],进行大小写排序

题目1: 倒序输出字符串

输出结果:

public static void main(String[] args) {
		//创建一个字符串
		String s = "abcdefg";
		//接收倒叙字符串
		String x = "";
		//用toCharArray()方法将此字符串转换为新的字符数组
		char[] charArray = s.toCharArray();
		//倒序循环便利出新数组的每一个索引值上的值
		for (int i = charArray.length - 1; i >= 0; i--) {
			x = x + charArray[i];
		}
		//输出
		System.out.println(x);
	}

题目2:给一个字符串换,判断该字符串中是否包含某个子串。如果包含,求子串的所有出现位置。

(如:"abcd23abcd34bcd"中,"bc"子串的出现位置)

输出结果: 

public class Opp1 {
	static // 初始定义的字符串
	String arr = "abcd23abcd34bcd";

	public static int Opp1(String str, String key) {
		// 定义计时器
		int count = 0;
		// 定义变量,保存indexOf查找后的索引结果
		int index = 0;
		// 开始循环找,条件,indexOf==-1 字符串没了
		// 盘判定所找的字符是否在字符串中
		int indexNum = 0;

		while ((index = str.indexOf(key)) != -1) {
			count++;
			// 获取到的索引,再和字符串长度求和,截取字符串
			str = str.substring(index + key.length());
			// 获取截取的字符串中的字符最后一个字母所在的下标
			indexNum += (index + key.length());
			// 截取的字符串中包含bc字符串,所以需要减去bc字符串的长度
			System.out.println("第" + count + "查找“bc”出现的位置是:" + (indexNum - key.length()));
		}
		return count;
	}

	public static void main(String[] args) {
		System.out.println("bc在字符串:" + arr + "中出现的次数是:" + Opp1(arr, "bc"));
	}
}

题目3:判断字符串是否是回文数

输出结果: 

package com.dodoke.stringObj.string;

import java.util.Scanner;

public class Opp2 {
	public boolean sPalindrome(String x) {
		//将输入的字符串使用toCharArray()用数组arr接收
		char[] arr = x.toCharArray();
		//设置数组开头
		int top = 0;
		//设置数组结尾长度减一
		int end = arr.length-1;
		//非法输入判定
        if(x.equals("") || x.equals(null))    
            return false;
        //判定数组开头和数组结尾是否不相同
        while(top < end){
            if(arr[top++] != arr[end--])
                return false;
        }
        return true;
	}
	public static void main(String[] args){
        Opp2 opp = new Opp2();
        //用Scanner接收键盘输入字符
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        //nextLine()方法将回车视为结束字符,当遇见回车时,会读取回车键之前这一行所有的字符
        String A = in.nextLine();
            if(opp.sPalindrome(A))
                System.out.println("输入字符串是回文字符串");
            else
                System.out.println("输入字符串不是回文字符串");
    }

}

题目4: 将驼峰字符串转化为下划线字符串

输出结果:

package com.dodoke.stringObj.string;

public class Opp3 {
	public static void main(String[] args) {
		//创建驼峰命名字符串
		String arr = new String("getElementById");
		//使用replaceAll()方法将正则表达式判定的大写字母转化为下标符号
		String opp = arr.replaceAll("[A-Z]", "_");
		//输出
		System.out.println(opp);
	}
}

 

题目5:给定一个字符串数组,按照字典顺序[abcdefg……],进行大小写排序

输出结果: 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值