ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java:成员变量、局部变量、局部变量数组的初始值

2022-04-22 14:01:21  阅读:137  来源: 互联网

标签:初始值 Java String int 局部变量 System 数组 默认值


看到一个题解,发现int[] a = new int[10];没有赋初值就直接用了,因为印象中局部变量没有默认值的。。。。

成员变量

  • 成员变量如果未初始化,会有默认的初始值的:

boolean:false
byte:0
short:0
char:
int:0
long:0
float:0.0
double:0.0
String:null
String[]:null

  • 有一点奇怪,char类型变量后面什么也没有输出。不过,这并不是char类型变量没有默认值,而是默认值为“空字符”,也就是‘\u0000’,数值为0,我们可以证明一下。
package deep;
 
public class CharDefaultValue {
    static char c;
 
    public static void main(String[] args) {
        System.out.println((int) c);
        System.out.println(c == '\u0000');
    }
}
//---------------------测试结果
0 
true

局部变量

  • 相对于成员变量,局部变量没有默认值(不管是什么类型),如果试图使用一个局部变量的值,而这个局部变量尚未初始化,就会产生编译错误,例如:
    public static void main(String[] args) {
        int value;
        System.out.println(value);
    }

错误提示: The local variable value may not have been initialized


局部变量\(\color{red}{数组}\)

  • 对于数组而言,如果数组使用new在堆上分配了空间,则数组的元素就会获得默认值,即使数组变量为局部变量也是如此。
    public static void main(String[] args) {
        int[] value = new int[10];
        System.out.println(value[0]);
    }

//结果:0 0 0 0 0 0 0 0 0 0

可以把数组的元素看作是数组的成员变量(实际上不是),当数组分配空间时,数组的元素(行为类似于成员变量)就可以获得默认的初始值。不过,对于局部变量数组本身(即value),如果没有初始化,同样没有默认值。(如下)

String[] a = new String[10];//有
     int[] b;//不new的话还是没有!!!!会直接报错
      for( String i : a ) System.out.print( i + " " );
      for( int i : b ) System.out.println(i + " " );
  • 错误:

参考

标签:初始值,Java,String,int,局部变量,System,数组,默认值
来源: https://www.cnblogs.com/CodeWater404/p/16178555.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有