java变量的初始化和属性的默认值

java变量的初始化和属性的默认值问题。
为什么local variables 使用时要赋初值,而global variables 系统默认初值?(我这样理解对吗?本人小白,求各路大神指点!)

4个回答

尝试着为楼主解释一下这是为什么。
首先要知道,局部变量一般分配在栈上面(值不一定分配在栈上面,比如引用类型的可能是分配在堆上面,也可能分配在常量区),而对象是分配在堆上面的。
java是面向对象的语言,对象一般分配在堆上面,成员变量是对象的一个属性,是随着对象的创建而分配空间,并经过JVM初始化,那么为什么jvm会为堆上的对象的属性初始化呢,试想一下,现实世界中,一般一个人有胳膊有腿,到了JVM里面,你new出一个人来,结果缺胳膊少腿的,肯定不行。所以JVM会为成员变量进行初始化,完了在运行时,你还可以去改变。
那么局部变量为什么不会初始化呢?声明一个局部变量 Person person变量,为什么一定要初始化才能用呢?JVM为什么不先帮我初始化一下呢?我估摸着JVM是考虑资源的问题,因为大家在使用局部变量的时候,一般想这个局部变量来存储我们想要储存的值,一般不会拿null之类的来做业务逻辑处理吧。所以JVM认为你应该自己指定一个值,然后来使用它。所以他就不帮我们初始化局部变量了,如果他初始化了局部变量,但通常又不是我们想要的,在局部变量为引用类型的时候,值是分配在堆上面或常量区里面,初始化了就占了内存,你又不用,JVM一时半会儿也不回收,不是浪费资源么?

个人的理解,不一定完全正确。大牛也来说说吧。

对于类成员,会自动附初值,对于方法内部变量,不会,你最好给一下值

这个你用时手动给一下值就是了,也没有那么麻烦吧。

对于成员变量,都有对应的默认值,而对于局部变量,在使用前必须先赋值,你可以自己写代码验证下。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
变量的初始化及默认值
关于初始化 -------------------------------------------------------------------------------------------------------------------------------- 1 成员变量初始化 1.1 自动初始化 boolean -----初...
Java基础——类成员变量不初始化默认值
package com.yonyou.review.base; public class ClassMember { static int i; static char c; static String s; static float f; static double d; static byte b; static short sh; static long l; stat...
java 初始化默认值
在mybatis中,如果初始化值,会导致updateSelective时,把原来的值替换掉。因此不建议使用初始化值。 但在freemark前端时,如果没有值初始化值,需要额外增加判断语句。这就是需要初始化值的原因。这个方法不会对已经存在的值进 行更改。对其它未初始化值不会进行更改。 public static <T> T IntialValue(T clazz) throws E...
java变量默认值
-
Java类成员变量的默认值
1、布尔型(boolean)变量默认值为false,byte、short、int、long为0,字符型为’\u0000’(空字符),浮点型(float double)为0.0,引用类型(String)为null。 package cn.nxl2018; public class Test { private boolean bool; private byte bt; ...
java 8个基本类型的初始化默认值
boolean false char \u0000(null) byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0d
java中基本数据类型的初始化默认值
JAVA基本数据类型初始化默认值  int —— 0   long —— 0L   float —— 0L   double —— 0D   char ’—— \u0000’代表空格   boolean —— false
Java类的初始化、变量的初始化
本文简单演示Java类的初始化、变量的初始化顺序,扎实Java 基础,编写高效的code哦知识点 Java常量,final 修饰,值被设定后不能再被修改 静态变量里,static 修饰,顾名思义,无须创建对象,便可在内存中申请一个存储空间进行存储 成员变量,也称实例变量,它随着当前对象的建立而建立,随着对象的销毁而销毁,存在于对象所在的堆内存中 构造器,创建class对象时执行 静态初始化块,执行优
Java未赋值变量的默认值
变量类型 默认初值 Boolean false int 0 short 0 float 0.0 double 0.0 char \u0000 byte 0 long 0 Object0\ null boolean初始值:false int初始值:0 short初始值:0 float...
知识点:Java变量和数组的默认值
类的成员变量是基本数据类型,即使没有初始化,Java也会确保它获得一个默认值; 但是基本类型的局部变量不会自动初始化,且java编译器会报错-变量没初始化。 在默认情况下 ,整型数组中系统会为每一个元素赋值为0。 Java不会自动把int转换成bool值所以样whille(1),if(1)都会报编译错误 String[] s = new String
Java初始化变量顺序
Java初始化变量顺序 作者:RednaxelaFX 链接:https://www.zhihu.com/question/36643366/answer/68519999 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 从Java SE 6开始是这样的: public class MyClass { private int a = 1; // field de...
java变量的初始化问题
类成员变量: 如果没有初始化,java会自动帮我们初始化 数字变量会自动初始化为0 字符变量会自动初始化为’o’ 对象引用自动初始化为null 局部变量: 如果没有初始化,编译器报错 ...
Java变量的默认初始化
变量的默认初始化Java是会为类的成员变量提供默认初始化的,但是又听说局部变量不会提供默认的初始化,是这样吗?
Java变量的初始化
1.类成员变量的初始化 1.1 类成员变量在创建类的对象时,java会根据类成员变量的数据类型按变量定义的顺序自动初始化。 1.1.1 基本数据类型会有各自对应的默认值     boolean false     char '\uoooo(null)'     int 0     float 0.0f     doubule 0.0d     long 0L     ...
Java 变量的初始化问题
如果某个类的数据成员的类型是基本数据类型,即使没有进行初始化,java也会赋值一个默认值,防止程序产生错误。如下表所示: 基本类型 默认值 boolean false char ‘\u0000’(值为0,显示为空白) byte (byte)0 short (short)0 int 0 long 0L
java变量的初始化
一、变量初始化规则 规则1(无继承情况下): 对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是 (静态变量、静态初始化块)>(变量、初始化块)>构造器 规则2(有继承情况下): 子类的静态变量和静态初始化块的初始化是在父类的变量、初始化块和构造器初始化之前就完成 总之:先静后动,先父后子,从上到下,先变量后构造 二、变量初始化应该注意的几点 1.
[java]变量的初始化
1,默认初始化 2,显示初始化 3,构造初始化 package com.ma.demo5; public class Demo { String name = "紫霞仙子"; int age = 18; public Demo(String name, int age) { this.name = name; this.age = age; } public void
Java 变量的初始化
Java:初始化类、变量、程序块加载探讨 -------------------------------------------------------------------------------- 2007-03-19 19:40:12 标签:初始化 加载 java   [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...
变量的属性(生命周期、作用域、默认值、内存区域、链接属性)
一.全局变量:定义在函数外部生命周期:从程序运行开始创建,程序退出销毁作用域:从定义该变量开始一直到文件的结束默认值:0内存区域:全局(静态)变量区链接属性:外部(可以在其他文件中引用)例:在max.cpp中定义全局变量int a=10;       若在min.cpp中调用a,使用extern int a就能声明全局变量a,然后就可以使用a二.静态全局变量:定义在函数外部 与全局变量区别:定义时...
Java自学-类和对象 属性初始化
Java的属性初始化 步骤 1 : 对象属性初始化 对象属性初始化有3种 1. 声明该属性的时候初始化 2. 构造方法中初始化 3. 初始化块 package charactor; public class Hero { public String name = "some hero"; //声明该属性的时候初始化 protected...
Java属性的初始化
在Java中,可以在三个地方对属性进行初始化:一、在定义属性的时候直接进行初始化;二、在代码块中进行初始化;三、在构造方法中进行初始化。这三种初始化方式存在一种执行顺序:直接初始化——代码块初始化——构造方法初始化。...
属性默认值
为什么 Byte,Int64,类型的属性设置默认值后不起作用,显示出来还是加粗。Int32,Double类型是正常的?rnrnThanks.
数组不初始化的默认值
#include using namespace std; int a[10]; int main() { cout << a[5] << a[6] << endl; //全局变量不初始化默认为0 int arr[10]; cout << arr[5] << endl; //不初始化,是随机值 int b[10] = { 0 };
8类的默认值初始化
尹成老师带你步入C++语言基础的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以C++语言为核心,完整精彩的演练了C++语言操作流程以及各种精彩的小项目等,提高竞赛能力,非常适合同学们学习!
08.类的默认值初始化
尹成老师带你步入 C 语言的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以 C 语言为核心,完整精彩的演练了数据结构、算法、设计模式、数据库、大数据高并发检索、文件重定向、多线程同步、进程通讯、黑客劫持技术、网络安全、加密解密,以及各种精彩的小项目等,非常适合大家学习!
默认值:日期的初始化数值
适用人群n所有研发人员,无论是Java,还是Jsp,Asp,Php,Android,Ios等各种平台的研发人员n让你在繁杂的日期组件等操作中迅速的找到解决方案,3行代码搞定你自己想要的日期组件的效果。n日期组件的特点:n返璞归真:身处在前端社区的繁荣之下,我们都在有意或无意地追逐。偏偏回望当初,奔赴在返璞归真的漫漫征途,自信并勇敢着,追寻于原生态的书写指令,试图以简单的方式诠释高效。
java数组的声明、初始化、遍历和默认值
java中数组的声明、初始化、遍历和数组中元素的默认值。
关于JAVA中初始化及默认值的细节问题
在JAVA中,初始化问题得到了很好的解决,我们需要了解一些初始化的知识来使我们少犯错误。
Java中引用类型和基本数据类型初始化后的默认值
Java中 引用类型初始化后未赋值之前的值为null 基本数据类型 byte short int long boolean char float double import java.util.Arrays; public class Test { public static byte byte1; public static short s; public static int i; ...
变量的初始化、类的初始化
------------------------------------------------------------------ 变量的初始化 初始化就是给变量一个初始值,如你声明一个变量: String aa = "abc"; 其中 abc 就是初始化的值 ,最后值不一定是 abc ,比如你覆盖了 aa的值,aa = "def"
Java类成员变量 的初始化问题
class Arnrn int a=1;rnrnclass Brnrn int a;rn a=1;rnrn在上面的两种类中,类A是合法的,类B编译不能通过,望高手说明下原因
java变量存储、初始化、回收
1、保存到什么地方①寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配的。我们对此没有直接的控制权限,也不可能在自己的程序里找到寄存器存在的任何踪迹。② 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放哪些内存。这...
关于Java中变量的初始化
Java中变量分为成员变量和局部变量,其中,局部变量必须要显式初始化,否则,编译无法通过。   对于成员变量,我们可以分为以下几种情况:   1、普通成员变量:在生成对象实例的时候进行初始化,如没有显式赋值,则由系统默认初始化;   2、static成员变量:类加载的时候初始化,如没有显式赋值,则由系统默认初始化;   3、final常量:生成实例对象的时候初始化,而且必须显式初始化;
Java 变量什么时候需要初始化?
1 .类里定义的数据成员称为属性,属性可不赋初值,若不赋初值则JAVA会按上表为其添加默认值;方法里定义的数据成员称为变量,变量在参与运算之前必须赋初值。有了这个模板,就可以用它来创建对象:Vehicle veh1 = new Vehicle(); 通常把这条语句的动作称之为创建一个对象,它包含了四个动作。 1)右边的“new Vehicle”,是以Vehicle类为模板,在堆空间里创建一个Ve
Java final 初始化变量的情况
一、只有final无static public class FinalTest1 { //第一种方式:定义时直接赋值 private final int a = 1; private final int b; private final int c; //第二种方式:构造方法中赋值,注意所有的重载的构造方法都要为其赋值 public FinalT...
关于java变量的初始化问题
变量初始化会在类加载阶段完成,这个时候主要执行方法,这个方法是类构造器,只负责静态变量赋值和静态代码块执行,而方法是实例构造器,主要负责实例变量初始化和构造方法的执行。 看下面代码: public class TestDemo3 { public static void main(String[] args) { Base base=new sssu(); } } c
JAVA之变量默认初始化值
JAVA的变量默认初始化大概可以分为3种:1,数组的默认初始化。2,实例变量的默认初始化。3,局部变量的默认初始化。4,常量的默认初始化。 数组的默认初始化 1,数字数组所有元素初始化为0 2,boolean数组初始化为false 3,对象数组初始化为null 实例变量的默认初始化 1,数值初始化为0 2,boolean初始化为false 3,对象初始化为null 局部变量的默认初始化
Java变量的初始化问题探究
对于Java的变量,我们知道有成员变量和局部变量。 关于他们的初始化,基本上所有书上都会写。成员变量,java会帮助你初始化,局部变量,则需要程序员自己初始化。 对于类的成员变量。不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。 规则为: 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。 2、单精度
Java变量的命名、定义和初始化
变量的命名   1.首字母是英文字母、$或下划线,由字母、数字、下划线组成。   2.变量的命名遵循见名知义的原则。   3.Java变量名建议不用中文。   4.变量名首字母建议不用大写字母。   5.用驼峰命名法命名多个单词组成的变量名。    例如:sumScore   6.变量名不要使用Java关键字。 定义变量   每个变量必须属于一种数据类型。   类型 变
Java变量的初始化顺续
我们从下面一段代码来看/** * 测试变量初始化顺序 * @author Administrator * */ public class VariateInitialize { public static void main(String[] args) { new Test(4);//实例化一个Test类 } } class Test{ private static int ...
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件