精华内容
下载资源
问答
  • 局部变量定义后,必须初始化,即赋值,才能使用(它没有默认值)。 而类变量定义后可以不初始化,因为它有默认值。 类变量(实例变量):定义在类中,方法体之外。成员变量前面加 static 修饰符。 局部变量:定义在...
    • 成员变量:定义在类中,方法体之外。
    • 局部变量:定义在方法体,构造方法,语句块中的变量。

    局部变量定义后,必须初始化,即赋值,才能使用(它没有默认值)

    public class Demo{                                              
    	public static void main(String[] args){
    		int i;  //没有赋值
    		System.out.println("i is" + i);
    	}
    } 
    

    编译结果:
    在这里插入图片描述

    成员变量定义后可以不初始化,因为它有默认值

    变量类型默认值
    int,byte,short,long0
    char一个空格
    float,double0.0
    引用值(比如String)null
    public class Demo{    
    	//成员变量(更准确说是:静态变量)不初始化
    	static int x1;             
    	static byte x2;
    	static short x3;
    	static long x4;
    	static String x5;//String是用引用值,引用值都是null
    	static char x6;
    	static float x7;
    	static double x8;                             
    	public static void main(String[] args){
    		System.out.println("x1 is " + x1);//int:0
    		System.out.println("x2 is " + x2);//byte:0
    		System.out.println("x3 is " + x3);//short:0
    		System.out.println("x4 is " + x4);//long:0
    		System.out.println("x5 is " + x5);//String(引用值):null
    		System.out.println("x6 is " + x6);//char:空格
    		System.out.println("x7 is " + x7);//float:0.0
    		System.out.println("x8 is " + x8);//double:0.0
    	}
    } 
    //但是它编译成功,运行结果可以看出 成员变量有默认值,并且是各个类型类变量的默认值
    

    实例提示: 演示代码是为了方便,直接在main中调用该类的静态变量(成员变量前加statis)

    在这里插入图片描述
    不过还有一个问题,char型类变量的默认值到底是啥,上图看不出来啊

    做个代码实验:

    public class Demo{    
    	static String x5;
    	static char x6;          
    	public static void main(String[] args){
    		System.out.println("x5 is " + x5 + "haha");
    		System.out.println("x6 is " + x6 + "haha");
    	}
    } 
    

    看下图,可以看出char型类变量的默认值是' ',确定是个空格
    在这里插入图片描述

    展开全文
  • 1.成员变量自动初始化对于类的成员变量。不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值public class Copy { static String s; public static void main(String[] args)...局部变量必须手动初

    1.成员变量自动初始化

    对于类的成员变量。不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值

    public class Copy {
        static String s;
        public static void main(String[] args){
            System.out.println("s="+s);
    
        }
    }
    s=null

    2.局部变量必须手动初始化

    局部变量声明以后,Java 虚拟机不会自动的为它初始化为默认值。因此对于局部变量,必须先经过显示的初始化,才能使用它。

    public class Copy {
        public static void main(String[] args){
            String s;
            System.out.println("s="+s);
    
        }
    }
    **Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The local variable s may not have been initialized**
    public class Copy {
        public static void main(String[] args){
            String s = null;
            System.out.println("s="+s);
    
        }
    }
    s=null
    展开全文
  • Java成员变量: Java类在生成实例时, jvm会在Java堆中分配一块内存空间, 分配到的地址空间存储所有的成员变量, ...Java局部变量(个人理解) The local variable i may not have been initialized Jav...

    Java成员变量:

    Java类在生成实例时,
    jvm会在Java堆中分配一块内存空间,
    分配到的地址空间存储所有的成员变量,
    根据成员变量数据类型的不同,拥有不同的默认值,
    实例如果有赋值则会覆盖掉默认值,否则不做更改
    ——即,无论如何,属性都会拥有初始值

    Java局部变量(个人理解)

    The local variable i may not have been initialized

    The local variable i may not have been initialized
    

    Java局部变量在方法被调用,程序执行到局部变量声明位置时,
    会将变量类型、变量名称、变量值(若是有值的话,默认不做填充)包装成一个对象压入栈中,
    若是变量为基础类型,直接在val位置存储变量值,
    若为引用类型,则先将对象存入Java堆中,再将堆中地址引用填进栈中val位置

    这里可以看到一个明显区别:

    成员变量,是伴随着对象的实例化,存储在Java堆中,而在Java堆中地址空间是会根据存储类型初始化的
    局部变量,主体是在栈中,无论是何种类型数据,都要首先定位到栈中然后才能获得Java堆的位置(如果是引用类型的话)
    故而,造成两者差别的原因在于,栈中数据不会执行初始化,而堆中数据会有初始化

    总结:

    成员变量依托于Java对象,生命周期相同,一起创建回收,生命周期相对较长
    局部变量依托于方法调用,生命周期与方法的一次调用相同,生命周期短暂

    成员变量存在很大程度的重用特性,
    局部变量一次调用结束便可以判定死亡

    展开全文
  • 2.局部变量数组未初始化,则其默认值为-858993460(垃圾值); 全局变量、静态变量处于数据区,未初始化,默认值为0 。 局部变量处于堆栈区,其数值是随机的,即当时内存中的值。 // test.cpp: 定义控制台应用程序的...

    1.全局变量数组未初始化,则其默认值全为0

    2.局部变量数组未初始化,则其默认值为-858993460(垃圾值)

    全局变量、静态变量处于数据区,未初始化,默认值为0 。
    局部变量处于堆栈区,其数值是随机的,即当时内存中的值。

    // test.cpp: 定义控制台应用程序的入口点。
    #include "stdafx.h"
    #include<iostream>
    using namespace std;
    int n[10];//全局变量数组n
    
    int main()
    {
     int a[10];//局部变量数组a
     cout <<"n[2]="<< n[2] << endl;
     cout << "" << endl;
     cout <<"a[2]="<< a[2] << endl;
     cout << "" << endl;
     return 0;
    }

    结果:
    霸道总裁爱上网

    展开全文
  • 局部变量需要初始化

    千次阅读 2018-03-20 09:26:24
    提示:没有初始化值 java中成员变量和局部变量初始化 为什么全局变量无须初始化局部变量必须初始化
  • java中局部变量必须要初始化的原理

    千次阅读 2018-02-28 19:22:56
    问题可能很多java开发人员也没有注意到,java语言中的局部变量是必须要初始化的,但是这是为什么呢?...其实正是因为成员变量属于对象,而对象是保存在 堆中的,所以jvm就在初始化类的时候把成员变量初始化呢,而
  • 定义一个函数如下: test() { char a; char b[10]; } 编译后test的入口地址假设为0x5000; 改写后 test() { char a=0; char b[10];...为什么会有这样的区别,数据和char变量初始化不一样吗?
  • Java 局部变量初始化问题

    千次阅读 2018-06-08 09:05:49
    Java 中类的成员变量会被自动初始化,但是方法里头的局部变量不会被自动初始化   上图中 i 是成员变量,默认会自动初始化,所以直接使用没有报错。但是 j 是方法中的局部变量,没有初始化直接使用会出现编译...
  • 关于局部变量初始化

    千次阅读 2018-10-26 15:22:35
    我们经常被告知:在Java语言规定,局部变量必须要先初始化,然后才能使用。为什么呢? 首先 Java 语言就是这么规定的。其实无论成员变量还是局部变量都要初始化。只是JVM帮我们初始化了成员变量。 第一种解释: ...
  • 全局变量和局部变量初始化问题

    千次阅读 2019-08-23 16:08:42
    这里需要分清一个事实,是变量系统都会默认给初始化,只不过全局变量默认初始化为0,而局部变量被初始化为随机数,这个随机数用了,后面会验证。现在,我们要讨论的是程序猿或者程序媛需需要给全局变量和局部...
  • 只有全局变量初始化时的默认值为0,而局部变量默认值是确定的。所以,局部变量在使用之前一定要先赋值,如果基于一个确定的值做后续运算必然会引入bug。 下面看一个错误的例子: #include int add_range(int...
  • 如上图所示, 1、全局int变量(包括有static前缀的)未初始化,默认值是0。 2、局部int变量未初始化,默认值未知。...解释:局部变量是存在栈中,数据量大,且生命周期短,局部变量进行初始化,开销很大。 ...
  • Java中局部变量必须初始化

    千次阅读 2020-12-24 22:37:30
    Java中有两种变量,局部变量和成员变量。 成员变量可以进行初始化,虚拟机也会确保它有一个默认的值。 局部变量不能这样做,我们必须对它进行赋值,才能使用它。
  • Java 成员变量有初始值,而局部变量没有初始值。 如下所示,代码能编译通过 publicstaticvoidmain(String[] args){ String s; System.out.println("s="+s); } 转载于:...
  • 在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下: 编
  • Java中有两种变量,局部变量和成员...成员变量可以进行初始化,虚拟机也会确保它有一个默认的值。 局部变量不能这样做,我们必须对它进行赋值,才能使用它。 int i;//为初始化 System.out.println(i);//编译器报错
  • 局部变量和全局变量的初始化

    千次阅读 2018-05-15 09:09:41
    因为这段内存空间在栈上,而栈内存是反复使用的(脏的,上次用完没清零的),所以说使用栈来实现的局部变量定义时如果显式初始化,值就是脏的。在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间...
  • (1)C语言从语法上规定全局变量只能用常量表达式来初始化,因此下面这种全局变量初始化合法的: int minute = 360; int hour = minute / 60; (2)如果全局变量在定义时初始化则初始值是0,如果局部...
  • JAVA局部变量初始化

    千次阅读 2013-05-24 21:56:45
    JAVA局部变量初始化 (2011-05-29 12:02:37) 转载▼ 标签: 杂谈 分类: JAVA 在一个函数或代码块中定义的变量成为局部变量,java中的局部变量相当于C++中的局部动态变量,java没有C++中...
  • 基本数据类型数值6类 (long/int/short/byte)(double/float) 非数值2类(char,boolean)下面是默认值:0/0/0/0/0.0/0.0/ /false首先 Java 语言就是这么规定的。然后为什么 Java 语言要这么规定...而成员变量就是类的数...
  • java中成员变量和局部变量初始化

    千次阅读 多人点赞 2016-07-02 09:40:18
    java中成员变量和局部变量初始化 成员变量的初始化 在java中,成员变量存在于类之内,方法和代码块之外。 class A{ 修饰符 数据类型 成员变量名; 方法(){} }这类变量在创建时如果初始化值,创建之后java...
  • java:局部变量初始化

    千次阅读 2018-07-15 00:51:42
    类变量有两次赋初始值的过程,一次在准备阶段,赋予系统初始值(如果被final修饰,初始值可能不是0或者null,false),另外一次在初始化阶段,赋予程序员定义的初始值,但是局部变量不一样,系统不会赋予初始值,除非...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 349,917
精华内容 139,966
关键字:

局部变量若不初始化