java中,声明基础变量和数组后都有默认值。例如int i;//默认值是0;int []i=new int [10];//默认值都是0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,声明基础变量和数组后都有默认值。例如int i;//默认值是0;int []i=new int [10];//默认值都是0相关的知识,希望对你有一定的参考价值。

为什么同样无初始化~数组就可以直接使用在System.out.print(i[0]);///
而int i;不初始化话就不能!!!!
还有一个问题,基础变量是储存在栈中而new创建的就储存在堆中呢??

首先要看你初始化的int i是在哪里.如果是在static的话默认值是0是可以直接打印的.在类定义的默认值也是0,也可以.但是在方法中定义的要初始化.
起初所有的东西都是new在堆中的,只不过后来有了一个常量池的概念.所以很多常用的都放入常量池了,用的时候先去常量池查找,因此不用new了.这些在常量池中的东西也是在堆中,并不是在栈中.
关于初始化,你的数组在你new的时候就已经初始化了,你怎么能说没有初始化就打印呢?追问

哦~~我懂了。。。
关于你说的。初始化的int i是在哪里,如果是在static的话默认值是0是可以直接打印的在类定义的默认值也是0,也可以.但是在方法中定义的要初始化.
可以稍微解释一下么?
定义在main里的static int a;//会提示错误耶,说只允许使用终态。
你说得类定义是怎样的啊?就是static int a;写在main外面么?
=。=main也算是一个方法吧。。

追答

public class Test
static int i;//这是静态变量
int a;//这是成员变量
public static void main(String... args)
System.out.println(i);
System.out.println(new Test().a);

参考技术A 额 不知道你从哪本书上看来的int i;i会初始化。。。这明显是错的啊
new 出来的对象是放到堆中 但不是基础变量就都放到栈中的 要局部的才是
参考技术B 成员变量才会被自动初始化,局部变量不会。

而且数组是引用类型,只会被初始化成null。

JAVA基础之数组

JAVA基础之数组(一)

1.方法:

  1. 无参无返回

  2. 无参有返回

  3. 有参有返回

  4. 有参无返回

  5. 访问修饰符 返回值类型 方法名([参数]){
    }

2.数组概述:

数组类似于超市储物柜----每一个空间都有唯一编号

3.数组与变量的区别:

声明一个变量就是在内存空间中划出一块适合的空间
声明一个数组就是在内存空间中划出一连串的空间

4.数组分类:
1.按数据类型不同:

  1. 整数类型数组
  2. 字符型数组
  3. 字符串型数组
  4. 浮点型数组

2.按数组维度分类:

  1. 一维数组
  2. 多维数组
  3. 交错数组

3.一维数组:
数组基本要素:

  1. 标识符-----约等于变量名
  2. 数组元素-----向数组存放的数据
  3. 元素下标-----对所有数组元素进行编号
  4. 元素类型-----数据类型

以上是关于java中,声明基础变量和数组后都有默认值。例如int i;//默认值是0;int []i=new int [10];//默认值都是0的主要内容,如果未能解决你的问题,请参考以下文章

JAVA基础之数组

JAVA基础之数组

JAVA基础之数组

java 数组操作

java基础重点: 面向对象,

Java基础中Int类型变量值互换的几种方法