(Java)int 、char、String数组 的println输出

本文探讨了Java中不同类型的数组在使用System.out.println()方法时的行为差异。特别关注了int、char和String类型数组的输出结果,并解释了为何char数组能够直接输出其内容,而其他类型数组则输出内存地址。
public class Test {
    public static void main(String[] args){
        int[] a={1,2,3,4};
        System.out.println(a);
        char[] c={'a','b','c','d','e',};
        System.out.println(c);
        String[] str={"a","b","c"};
        System.out.println(str);
    }
}

这里写图片描述

分别是int,char,String类型的数组的直接输出,发现,只有char类型的数组输出的是内容,然后查看了相关的代码,如下:

   public void println(Object x) {          //①
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }
 public void println(char x[]) {          //②
        synchronized (this) {
            print(x);
            newLine();
        }
    }

以上是调用的代码②,发现只有char类型的输出是相应值;
其他情况将调用①,先将相应的数组转化成String类型,在输出的为地址。

<think>我们正在讨论Java中如何获取char数组String数组的长度。 根据引用[1]中的Java代码,我们看到char数组的长度可以通过数组的length属性获得。 对于String数组(即String[]),同样使用length属性。 注意:字符串(String对象)的长度需要使用length()方法,而数组(无论是基本类型数组还是对象数组)都使用length属性。 因此: 1. 对于char数组:使用`数组变量.length` 2. 对于String数组:同样使用`数组变量.length` 3. 注意与String对象的长度方法区分:String对象是`字符串变量.length()` 同时,引用[4]提到了Java中的char是16位Unicode字符,因此当我们处理char数组时,每个元素是一个char数组长度就是元素个数。 下面我们分别给出示例代码。 </think>### Java中获取char数组String数组长度的方法 #### 📏 **1. char数组长度获取** char数组是**基本类型数组**,直接使用 `.length` **属性**获取: ```java char[] charArray = {'J', 'a', 'v', 'a'}; int length = charArray.length; // 返回4(数组元素个数) System.out.println("char数组长度:" + length); ``` **关键特性**: - **长度固定**:声明后长度不可变(区别于String)[^4] - **元素大小**:每个`char`占2字节(16位Unicode字符)[^4] - **空数组处理**:若数组未初始化(`char[] arr = null;`),调用`.length`会抛出`NullPointerException` --- #### 📐 **2. String数组长度获取** String数组是**对象数组**,同样使用 `.length` **属性**: ```java String[] strArray = {"Apple", "Banana", "Cherry"}; int length = strArray.length; // 返回3 System.out.println("String数组长度:" + length); ``` **注意**: - **元素可为null**:`{"A", null, "C"}` 的`.length`仍返回3 - **多维数组**:二维数组长度获取示例: ```java String[][] matrix = {{"A","B"}, {"C","D","E"}}; int outerLen = matrix.length; // 外层数组长度=2 int innerLen = matrix[1].length; // 内层第二数组长度=3 ``` --- #### ️ **3. 易混淆点:String对象的长度** String对象(≠String数组)需用 **`length()`方法**: ```java String s = "Java"; int len = s.length(); // 返回4(字符数量)✔️ // 错误写法:s.length ✖️ (String没有length属性) ``` **对比总结**: | 数据类型 | 长度获取方式 | 示例 | |------------------|---------------|----------------------| | `char[]` | `.length` | `charArray.length` | | `String[]` | `.length` | `strArray.length` | | `String`对象 | `.length()` | `s.length()` | --- ### 💡 完整示例代码 ```java public class ArrayLengthDemo { public static void main(String[] args) { // 1. char数组长度 char[] chars = {'中', '国'}; // Unicode字符 System.out.println("char数组长度: " + chars.length); // 输出2 // 2. String数组长度 String[] fruits = {"Apple", null, "Cherry"}; System.out.println("String数组长度: " + fruits.length); // 输出3 // 3. 二维String数组长度 String[][] data = {{"A1","A2"}, {"B1","B2","B3"}}; System.out.println("外层数组长度: " + data.length); // 输出2 System.out.println("内层第二数组长度: " + data[1].length); // 输出3 // 4. String对象长度(对比) String text = "Hello中国"; System.out.println("String对象长度: " + text.length()); // 输出7(5英文+2中文) } } ``` --- ### 🔍 相关问题 1. **内存占用**:Java中`char[1000]`和`String[1000]`的内存差异是什么?[^4] 2. **空值处理**:如何安全获取可能为`null`的数组长度? 3. **Unicode支持**:当`char`数组包含代理对(如emoji)时,`.length`返回的是字符数还是码点数量? 4. **性能影响**:循环中反复调用`array.length`会导致性能下降吗? 5. **集合类比**:`ArrayList<String>`的长度获取方式与数组有何不同? 6. **多维数组**:如何高效获取不规则二维数组的总元素数量? [^4]: Java中`char`类型为16位Unicode字符,与C/C++的8位`char`不同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值