Java中数组能作为成员变量吗?

如下的代码publicclassTest03{char[]ch={'a','b','c'};Stringstr="good";publicstaticvoidmain(S... 如下的代码
public class Test03 {
char[]ch={'a','b','c'};
String str="good";

public static void main(String[] args) {
Test03 test03=new Test03();

System.out.println(test03.ch);
}
}
为什么输出的是内容abc而不是地址值还有Java中数组能作为成员变量吗
展开
 我来答
zhouke1219
2020-10-11
知道答主
回答量:6
采纳率:100%
帮助的人:2万
展开全部

第一个问题:

数组是作为某个类的成员还是数组作为方法中的局部变量和控制台输出都没有关系。答主可以试一下,如果整型作为某个类的成员变量,字符数组作为方法中的局部变量,输出的结果还是一样的。

所以问题为:为什么字符数组和整型数组在控制台显示的一个是数组元素拼接一个是地址值?

打印字符数组和整型数组在printIn的重载方法是不一样的,System.out.println()方法,打印不同类型的对象,控制台输出的数据是一不一样的,点击打印char数组的out.println方法进入源码:

最后一直进入write()方法:

解释一下:

textOut是BufferedWriter对象,代表着向控制台输出信息的输出流对象.

charOut是OutputStreamWriter对象,是用来将字节转换成字符的转换流对象.

textOut包装了charOut.

textOut.write(buf);调用到以下方法:

该方法就是将char数组的每个字符挨个输出到控制台中。

而进入整型数组打印的方法:

则是直接输出整型数组的地址值。


第二个问题:

数组可以作为成员变量。

题主代码上已经有体现。

java中变量有三种类型:

  • 类变量:独立于方法之外的变量,用static修饰

  • 实例变量:独立于方法之外的变量,不过没有static修饰

    • 类的每个对象特定的变量也是实例对象

    • 局部变量:类的方法中的变量

      示例:

    public class variable{    

    // 类变量     

    static int a = 0;  

    // 实例变量 实例变量声明在类内而不是方法中  

    String str = "Java is easy to learn.";          

    public void method{      

    // 局部变量 局部变量是声明在方法中的 ,局部变量在使用前必须初始化  

    int b = 1;       

    int x;
           

    int z = x + 1; 

    (这就是错误的代码,无法编译)     

    }

    }

资料参考链接:网页链接

网页链接

重庆新华电脑学校
2020-10-06 · 学动漫、设计、电竞、电商、短视频、软件等
重庆新华电脑学校
重庆新华电脑学校隶属于新华教育集团,经重庆市人力资源和社会保障局审批成立的重庆地区大规模IT人才教育基地。是国家信息化教育全国示范基地,中国IT教育十大影响力品牌学校。
向TA提问
展开全部
1、数组在Java系统内存中是作为对象存放在堆内存。系统在打印输出数组对象是自动输出对象的所有值{a,b,c}.方便用户查询。
2、数组可以作为类成员变量。
追问

为什么我这样输出的是地址值

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
软件开发领路人
2020-10-08 · 解答软件开发新人的问题烦恼
软件开发领路人
采纳数:711 获赞数:408

向TA提问 私信TA
展开全部
你好,很高兴回答你的问题。
在java中数组是可以做成员变量的。
比如经常会用到的String类,内部就是用字符数组作为成员变量的。
如果有帮助到你,请点击采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanghaoyu409
2020-10-08 · TA获得超过1947个赞
知道小有建树答主
回答量:1242
采纳率:62%
帮助的人:406万
展开全部
因为对于char数组 System.out.print();有关于 char数组 重载的方法,可以直接打印里面的值。这个比较好理解,在其它语言中没有String 会使用char数组代替String,所以Java有对于char数组的打印方法。如果想打印内存地址,在数组名后面加toString()即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mimiba212
2020-10-11 · TA获得超过413个赞
知道小有建树答主
回答量:1504
采纳率:64%
帮助的人:84.6万
展开全部
数组是引用类型,所以直接打印数组名,打印的是数组的首地址。
你要想打印数组的每一个元素,需要用for循环处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式