Java怎么给char数组赋值

在Java中,我们可以使用多种方法来给char数组赋值。本文将介绍几种常见的方法,并通过代码示例来展示如何解决一个具体的问题。

问题描述

假设我们要解决的问题是:给定一个字符串,将其转换为一个char数组,并将数组中的字符按照一定规则进行处理。具体来说,我们希望将所有小写字母转换为大写字母,并将所有数字替换为特定的符号"#"。

方法一:使用toCharArray方法

Java中的String类提供了一个toCharArray方法,可以将字符串转换为一个char数组。我们可以使用这个方法来解决上述问题。

public class CharArrayAssignment {
    public static void main(String[] args) {
        String str = "Hello World 2022";
        
        char[] charArray = str.toCharArray();
        
        for (int i = 0; i < charArray.length; i++) {
            // 处理小写字母
            if (charArray[i] >= 'a' && charArray[i] <= 'z') {
                charArray[i] = Character.toUpperCase(charArray[i]);
            }
            // 处理数字
            if (charArray[i] >= '0' && charArray[i] <= '9') {
                charArray[i] = '#';
            }
        }
        
        // 打印处理后的字符数组
        for (char c : charArray) {
            System.out.print(c);
        }
    }
}

上述代码中,我们首先将给定的字符串转换为一个char数组。然后,我们遍历数组中的每个字符,并根据字符的ASCII码值来判断是否为小写字母或数字。如果是小写字母,我们使用Character类的toUpperCase方法将其转换为大写字母;如果是数字,我们将其替换为"#"符号。最后,我们打印处理后的字符数组。

方法二:使用String的charAt方法

除了使用toCharArray方法外,我们还可以使用String类的charAt方法来逐个访问字符串中的字符,并将其赋值给char数组。

public class CharArrayAssignment {
    public static void main(String[] args) {
        String str = "Hello World 2022";
        
        char[] charArray = new char[str.length()];
        
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            
            // 处理小写字母
            if (c >= 'a' && c <= 'z') {
                charArray[i] = Character.toUpperCase(c);
            }
            // 处理数字
            if (c >= '0' && c <= '9') {
                charArray[i] = '#';
            }
        }
        
        // 打印处理后的字符数组
        for (char c : charArray) {
            System.out.print(c);
        }
    }
}

上述代码中,我们创建一个与给定字符串长度相同的char数组。然后,我们使用charAt方法逐个访问字符串中的字符,并将其赋值给char数组。之后的处理逻辑与方法一中的代码相同。

方法三:使用Arrays的setAll方法

Java 8引入的Arrays类提供了一个setAll方法,可以使用Lambda表达式来给数组赋值。我们可以利用这个方法来解决上述问题。

import java.util.Arrays;

public class CharArrayAssignment {
    public static void main(String[] args) {
        String str = "Hello World 2022";
        
        char[] charArray = new char[str.length()];
        
        Arrays.setAll(charArray, i -> {
            char c = str.charAt(i);
            
            // 处理小写字母
            if (c >= 'a' && c <= 'z') {
                c = Character.toUpperCase(c);
            }
            // 处理数字
            if (c >= '0' && c <= '9') {
                c = '#';
            }
            
            return c;
        });
        
        // 打印处理后的字符数组
        for (char c : charArray) {
            System.out.print(c);
        }
    }
}

上述代码中,我们使用Arrays类的setAll方法来给char数组赋值。setAll方法接受一个函数式接口IntUnaryOperator,我们使用Lambda表达式来定义这个函数。在Lambda表达式中,我们根据索引i来访问字符串中的字符,并进行相应的处理。最后,我们返回处理后的字符,并将其赋值给char数组。