Java中的成员变量分为两种:第一种是成员变量,第二种是局部变量。成员变量的作用范围是整个类,局部变量的作用范围是该变量所在的大括号内。

变量可以被static修饰,也可以放在不同的地方被初始化,而这些因素都会影响到变量的初始化值和被初始化的顺序。

1.没有被修饰符修饰的成员变量和局部变量的初始化

在java中所有的成员变量都会被系统赋予默认是初始值,这个初始值根据不同的数据类型有着不同的定义:

Boolean - false;char - [ ];byte - 0;short - 0; int - 0; long - 0;float - 0.0; double - 0.0;引用数据类型-null;

而局部变量则要求必须被初始化,否则会出现编译时错误,丽日下面的代码段:

void f(){

int x;

X ++ ;

}

除了局部变量被要求必须得到初始化外,成员变量也可以在创建时为其指定相应的值,这个初始化的值可以是数据,也可以是一个函数或另一个变量,例如

I

nt x = 8;

Int y;

Int f(){

Return 6;

Y = f();

}

或者

Int x = 8;

Int y;

Int f(int n){

Return 6 * n;

Y = f(7);

}

2.用构造函数初始化

成员变量也可以用构造函数初始化,可以在构造函数内赋值或者定义一个有参的构造函数,吧传进来的值赋值给成员变量。

当一个类中即有在构造函数外定义的已经被初始化的成员变量,也有在构造函数中被初始化的成员变量时,构造函数外部的变量优先于在构造函数内部初始化的变量进行初始化,只有当创建该类的对象时,构造函数内的变量才会得到相应的初始化,在此之前它的值的该类型的默认值。

3.静态初始化块和非静态初始化块

静态初始化块是用static加上一个大括号的形式,静态初始化块不一定会执行,因为当中的变量只有当该类对象被创建或者静态块中的变量被调用时才会执行,并且只执行一次,下次创建对象或者调用静态块中的方法就不会在执行初始化动作。

非静态块是用大括号扩起来的一个代码块,只有当创建该类对象时才会执行 并且优先于构造器执行。

4.被static修饰的成员变量的初始化

当一个成员变量被static修饰后它就不依赖于对象的存在而存在,而是根据类的消亡而消亡,静态变量被存储在方法区,当类首次被加载到内存时就会执行static变量的初始化动作,并且以后就不会在执行初始化动作。

总结

当类中有静态成员变量,普通成员变量,静态初始化块,非静态初始化块,局部变量和构造函数初始化动作时,首先执行静态成员变量的初始化,其次是普通成员变量的初始化,然后当静态初始化块中的变量被类名访问或创建该类对象时时执行静态初始化块,创建该类对象也会执行非静态初始化块,最后执行构造函数当中的初始化动作,最后当类中的函数被调用时执行局部变量的初始化动作。

java 成员变量什么时候初始化_Java中成员变量的初始化过程相关推荐

  1. java为什么要初始化_JAVA中到底要怎么样初始化

    Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...

  2. python三引号 内部变量_python在三引号中使用变量

    1.定义和运算: 变量名 = 值 定义变量举例: # 定义一个变量 myCar = "比亚迪F0" # 输出一个变量 print(myCar) 变量之间的简单运算举例: price ...

  3. java中的成员变量和局部变量的区别_java中成员变量与局部变量区别分析

    本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 public class Person { ...

  4. java静态局部变量_java中成员变量,局部变量,静态变量的辨析

    转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...

  5. java用一个方法对变量初始化_java中怎么给变量初始化?

    展开全部 不同的变量初始化32313133353236313431303231363533e4b893e5b19e31333337613764方法不同. 变量包括:类的属性,或者叫值域 方法里的局部变 ...

  6. java实例成员和类成员变量_Java 中成员变量又分为 和类成员变量。_学小易找答案...

    [简答题]I'm not quite so poetic, but I do know that the subway is as essential to the character of New ...

  7. java 实例变量是类的成员变量吗_JAVA中成员变量,局部变量,实例变量,类变量,有什么关系,,?...

    展开全部 java易混淆概念之类变量32313133353236313431303231363533e4b893e5b19e31333365643662.实例变量.局部变量 类变量.实例变量.局部变量 ...

  8. java中为什么需要常量和变量的区别_Java中的变量和常量

    1.变量(variable) 变量,顾名思义,就是变化的量. 我们可以通过变量来操作存储空间中的数据,变量就是指代这个存储空间,一旦你定义了一个一个变量,那么空间的位置就确定了,虽然空间位置是确定的, ...

  9. java 接口中的成员只有静态常量和_Java中抽象类和接口的具体区别是什么?

    谢邀,直接回答. 接口在面向对象编程中占着很重要的地位,它是对于一种事物行为的抽象提取,内部只需要持有接口的引用,外部可以根据具体事物做不同的扩展,而不修改内部的引用逻辑,它的主要作用是在框架中实现不 ...

  10. java中静态变量的作用_Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

最新文章

  1. Facebook的GBDT+LR模型python代码实现
  2. 用计算机桁架各杆内力,运用AUTO CAD求解桁架内力?
  3. 区块链浏览器_如何用区块链浏览器实现链上数据追踪?
  4. 微软宣布以 262 亿美元现金收购 LinkedIn
  5. 【Python】处理FutureWarning: Pass threshold=18 as keyword args.
  6. C++学习笔记—srand()和rand()
  7. 解决Python中sum函数出现的TypeError: unsupported operand type(s) for +: 'int' and 'list'错误问题
  8. linux下定时重启tomcat
  9. Scala初步学习(二)
  10. [转载]提升进程权限-OpenProcessToken等函数的用法
  11. PyCharm 配置 Git 教程
  12. Ubuntu查看crontab运行日志
  13. python之OrderedDict类
  14. 关于高速光耦6N137的使用总结
  15. 实验一计算机基础和网络知识竞赛,第十三届计算机基础知识竞赛题库.doc
  16. Windows下U盘无法格式化原因及解决办法:Windows无法完成格式化
  17. 开机时自动启动的AutoHotkey脚本 2019年07月08日19时06分
  18. vue 跳转路由后返回上一页还是当前页面,但是路由地址有改变(已解决)
  19. 【程序人生】机灵鹤七月份的月度总结
  20. 牛客小白月赛24J--多项式取模

热门文章

  1. 常见电容器图片_常用电容器大全 (附图片)
  2. bch verilog代码_BCH源码学习笔记 | 第一步:搭建BCH的源码学习环境
  3. css扁平化设计,从一个web前端开发者的角度来看扁平化设计的5大优点
  4. IP地址的组成及简单分类
  5. 酷狗音乐解析API,支持搜索、歌单、单曲、专辑、MV解析、多音质切换、图片大小切换
  6. 可编程的,协议独立的软件交换机(论文阅读)
  7. 网络信息安全:数字签名
  8. sublime text 3 php 语法错误检查
  9. 局域网连接外网时,二级路由器设置
  10. [培训-无线通信基础-8]:分集技术(微分集、宏分集、信号合并、分集增益)