JAVA字符串及数组中常见API

文章详细介绍了JAVA中的StringBuffer的insert方法和indexOf方法,以及字符串的split方法。同时,讲解了如何生成随机数,Date类的时间格式化,SimpleDateFormat的使用,包括format和parse方法,以及Calendar类对日期和时间的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA字符串及数组中常见API

StringBuffer insert(int index,String str)

insert()函数表示在字符串中插入字符串

必须使用StringBuffer 或者 StringBulider

1.indexOf(char ch)

在给定字符串中查找字符(ASCLL),找到返回字符数组所对应的下标 找不到返回-1

2.indexOf(String str)

在给定字符串中查找字符串,

3.indexOf(String str,int fromIndex)

从fromindex位置开始查找Str 返回下标

split()方法

作用:将一个字符串分割成多个字符串数组

 String str ="I love you too";
        String[] s=str.split(" ",2);
        for (int i=0;i<s.length;i++)
        {
            System.out.println(s[i]);
        }  
 //不传任何切割标志时,默认切割每一个字符  
 //返回["I", " ", "l", "o", "v", "e", "r", " ", "y", "o", "u", " ", "t", "o", "o"]

//以空格切割返回前两个数组元素
//返回["I", "lover"]



> - Randow randow = new Randow(); //先创建一个Randow对象
> - int m=randow.nextInt(); //生成一个随机数
//可以传递参数m 设置随机数的范围[0,m)

日期中常见API

Date类

  • Date:精确到毫秒,代表特定的瞬间
  • SimpleDateFormat类:格式和解析日期的类
  • Date类覆盖了toString 的方法 所以输出该对象时 以Fri Sep 23 15:18:57 CST 2022的形式输出

日期和时间模式

创建SimpleDateFormat类的对象可以指定相应的格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");

format():将日期转换成指定格式的字符串

String format = sdf.format(date);

parse():可以把一个格式化的String转成对应的Date

  • 在把String -> Date 时,使用的 sdf 格式需要和你给的String的格式一样,否则会抛出异常
public class Date01 {
    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");
        String s = "2001年06月27日 10:20:30 星期三";
        Date parse = sdf.parse(s);
        System.out.println(parse);
    }
}

Calendar类

        // 使用默认时区和语言环境获得一个日历
        Calendar cal = Calendar.getInstance();
        // 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
        System.out.println("年:" + cal.get(Calendar.YEAR));
        System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
        System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + cal.get(Calendar.MINUTE));
        System.out.println("秒:" + cal.get(Calendar.SECOND));
 
        //手动设置某个日期
        Calendar cal02 = Calendar.getInstance();
        //注意,设置时间的时候月份的下标是在0开始的
        //设置时间不一定要这6个参数3个参数也是可以的
        cal02.set(2018,9,1,12,0,0);//二零一八年十月一号十二点
        System.out.println(cal02.getTime());
 
<think>嗯,用户的问题是关于如何在Java中从字符串数组中移除指定的字符串元素,并且希望有一个示例。首先,我需要确定用户的需求。他们可能有一个字符串数组,想要删除其中某个特定的字符串,比如“apple”或者“banana”。但Java中的数组是固定长度的,所以直接删除元素可能不太容易。这时候需要考虑不同的方法来实现这个功能。 首先想到的是,数组的长度是不可变的,所以不能直接从原数组中删除元素,而是需要创建一个新数组。不过这样可能效率不高,特别是当数组很大时。或者,可以使用ArrayList,因为ArrayList是动态数组,支持添加删除操作,这样会更方便。用户可能更倾向于使用标准库提供的方法,所以用ArrayList来处理可能更合适。 然后,我需要考虑不同的方法。比如,使用传统的循环遍历原数组,跳过不需要的元素,然后复制到新数组中。或者使用Java 8的Stream API来过滤元素,这样代码会更简洁。另外,Apache Commons Lang库中的ArrayUtils可能也是一个选项,但用户可能需要纯Java的解决方案,而不依赖第三方库。 接下来,我需要检查用户提供的引用内容。引用[2][3]提到了去除重复项删除重复元素的方法,虽然用户的问题不是关于重复项,而是删除特定的元素,但可能有些方法可以借鉴。例如,使用循环遍历数组,检查每个元素是否符合条件,然后处理。 然后,我需要确保给出的示例代码正确无误。例如,使用ArrayList的话,需要先将数组转换为ArrayList,然后使用removeIf方法或者迭代器来删除元素,再转换回数组。同时要注意,删除元素后数组长度的变化。 还要考虑用户可能遇到的常见问题,比如如何处理多个相同的元素,是否区分大小写,或者如果数组中不存在目标元素时的情况。这些情况需要在示例中进行说明,或者给出相应的处理建议。 另外,用户可能希望看到多种实现方式,以便选择最适合他们情况的方法。比如,使用循环的方法适合所有Java版本,而Stream API则适用于Java 8及更高版本,代码更简洁但可能性能略有不同。 最后,要确保回答结构清晰,分步骤说明每种方法,并给出代码示例,同时提醒可能的注意事项,比如数组转换时的类型问题,或者性能方面的考虑。例如,使用ArrayList的removeIf方法可能在大量数据时效率更高,而Stream API则提供了函数式编程的优点。</think>### Java中从字符串数组移除指定元素的实现方法 在Java中,字符串数组是固定长度的,因此直接删除元素需要创建新数组或使用动态集合类。以下是几种常见方法及示例: --- #### **方法1:使用循环遍历并筛选** 通过遍历原始数组,跳过需要删除的元素,将符合条件的元素存入新数组。 ```java public class Main { public static void main(String[] args) { String[] original = {"apple", "banana", "orange", "apple"}; String target = "apple"; // 计算新数组长度 int newLength = 0; for (String s : original) { if (!s.equals(target)) newLength++; } // 创建新数组并填充 String[] result = new String[newLength]; int index = 0; for (String s : original) { if (!s.equals(target)) { result[index++] = s; } } // 输出结果:["banana", "orange"] System.out.println(Arrays.toString(result)); } } ``` --- #### **方法2:使用ArrayList动态操作** 将数组转换为`ArrayList`,利用其动态特性删除元素,再转回数组。 ```java import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { String[] original = {"apple", "banana", "orange", "apple"}; String target = "apple"; List<String> list = new ArrayList<>(Arrays.asList(original)); list.removeIf(s -> s.equals(target)); // 使用Lambda表达式删除元素 String[] result = list.toArray(new String[0]); // 输出结果:["banana", "orange"] System.out.println(Arrays.toString(result)); } } ``` --- #### **方法3:使用Java 8 Stream API** 通过`Stream`过滤元素,生成新数组。 ```java import java.util.Arrays; public class Main { public static void main(String[] args) { String[] original = {"apple", "banana", "orange", "apple"}; String target = "apple"; String[] result = Arrays.stream(original) .filter(s -> !s.equals(target)) .toArray(String[]::new); // 输出结果:["banana", "orange"] System.out.println(Arrays.toString(result)); } } ``` --- #### **注意事项** 1. **区分大小写**:`equals`方法区分大小写,若需忽略大小写,改用`equalsIgnoreCase`。 2. **空值处理**:如果数组可能包含`null`,需添加空值检查。 3. **性能考量**:大数组建议使用方法2或3,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值