c语言里面变量初始化问题与Java区别

在这里插入图片描述
C语言中,定义局部变量时如果未初始化,则值是随机的,为什么?
定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的(脏的,上次用完没清零的),所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是脏的。
错了,刚刚第四题,没仔细看,原来是c语言的,记混了,不好意思,C语言里面定义变量,没有初始化,这个值是脏值,随机的,java里面是主函数里必须变量初始化,在堆空间里面变量确实是默认初始化,int类型默认是0,string默认是null,Boolean默认false

package text;

public class Text1 {

	public static void main(String[] args) {
		int a;
		System.out.println(a);
	}

}

在这里插入图片描述
在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果是数字会自动初始化成0,字符会初始化成’o’,对象引用会初始化成null.
当然如果你定义的是局部变量就必须初始化了,否则编译会报错
这正是java的特点,极大的提高了代码安全性
在这里插入图片描述
java中的局部变量一定要赋初始值

猜你喜欢

转载自blog.csdn.net/weixin_40807247/article/details/83419875