文档章节

java中的成员变量和局部变量

LYQ1990
 LYQ1990
发布于 2016/05/06 16:20
字数 720
阅读 13
收藏 0

  静态变量可以用来计数。
【注意:假如 static int a=0,计数到20。但是当服务器重启时,静态变量又会被重新初始化a=0,实际业务不符合】

----------------------

java 中的变量大致分为 成员变量 局部变量 两大类。

一、成员变量:
    在类体里面定义的变量称为成员变量;
    如果该成员变量有 static 关键字修饰,则该成员变量称为 静态变量  类变量
    如果该成员变量没有 static 关键字修饰,则该成员变量被称为 非静态变量  实例变量

1、类变量 (静态变量)
    1 可以向前引用
    2 变量属于类本身
    3 类变量不依赖类的实例,类变量只在初始化时候在栈内存中被分配一次空间,无论类的实例被创建几次,都不再为类变量分配空间
    4 通过类的任意一个实例来访问类变量,底层都将将其转为通过类本身来访问类变量,它们的效果是一样的
    5 一旦类变量的值被改变,通过类或类的任意一个实例来访问类变量,得到的都将是被改变后的值
    6 将在类的初始化之前初始化

 2、实例变量(非静态变量)
    1 不能向前引用,如果向前引用,则称为非法向前引用,这是不允许的
    2 变量属于类的实例对象
    3 随着类的实例被创建而分配内存空间
二、局部变量:
    形参、方法内定义的变量、代码块中定义的变量,都属于局部变量。

注:形参和方法内定义的变量不能用static修饰,可以用final修饰

下面代码,编译错误

public void test(static int b){
       static int a = b;
   }
***********************************************************************************

非静态代码块
    直接由 { } 包起来的代码,称为非静态代码块

静态代码块
    直接由 static { } 包起来的代码,称为静态代码块

类变量(静态变量)、实例变量(非静态变量)、静态代码块、非静态代码块 的初始化时机
     static 关键字修饰的(如:类变量[静态变量]、静态代码块)将在在类加载的时候(没有new对象的时候就进行初始化)类被初始化创建实例对象之前被初始化,而且是按顺序从上到下依次被执行。
    没有 static 关键字修饰的(如:实例变量[非静态变量]、非静态代码块)初始化实际上是会被提取到类的构造器中被执行的,但是会比类构造器中的代码块优先执行到,其也是按顺序从上到下依次被执行。

 

© 著作权归作者所有

共有 人打赏支持
LYQ1990
粉丝 7
博文 238
码字总数 206220
作品 0
东城
私信 提问
一句话读懂Threadlocal

threadlocal是把ThreadLocal实例作为key,要保持的对象作为值,设置到当前线程的ThreadLocalMap 中。因此数据是保存在当前线程中的。 ThreadLocalMap实例是作为java.lang.Thread的成员变量存...

jeff_han
2015/11/18
0
0
构造函数、构造代码块、this关键字

构造函数、构造代码块、this关键字 一、构造函数 1.构造函数的作用 给对应的对象进行初始化。 2.构造函数的定义格式 3.构造函数要注意的细节 构造函数是没有返回值类型的。 构造函数的函数名...

JS_HCX
12/07
0
0
ThreadLocal 那点事儿

ThreadLocal,直译为“线程本地”或“本地线程”,如果你真的这么认为,那就错了!其实,它就是一个容器,用于存放线程的局部变量,我认为应该叫做 ThreadLocalVariable(线程局部变量)才对...

黄勇
2013/09/05
0
65
《Java从小白到大牛精简版》之第4章 Java语法基础

《Java从小白到大牛》纸质版已经上架了!! 本章主要为大家介绍Java的一些基本语法,其中包括标识符、关键字、保留字、常量、变量、表达式等内容。 4.1 标识符、关键字和保留字 任何一种计算...

tony关东升
06/26
0
0
局部变量和成员变量的初始值问题

引言 大家都知道,在java中,成员变量是可以不用给初始值的,默认就有一个初始值。而局部变量,必须显示给予一个初始值,否则编译无法通过。大家在学习的时候,一般是直接把这个结论直接记下...

JAVA高级架构开发
08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式Session共享解决方案

分布式Session一致性? 说白了就是服务器集群Session共享的问题 Session的作用? Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。 客户端在第一次访...

Java干货分享
8分钟前
0
0
开源软件和开源模式面临的生存危机

导读 开源模式可能正面临一场危机。越来越多的开源软件和平台被大型云计算服务商融入自家的云服务体系,并以此获利颇丰,但并不支付费用,也没有对开源社区做出相应的回馈。而实际上,大部分...

问题终结者
10分钟前
0
0
让看不见的AI算法,助你拿下看得见的广阔市场

人工智能技术的飞速发展给各行各业都带来了深远的影响,AI已被视为企业提升运营效能、应对市场竞争的必经之路。然而对于一些企业而言,让AI真正实现落地和应用,并且创造价值,仍是一件需要努...

个推
15分钟前
0
0
用SAN还是NAS?我来告诉你

存储区域网络(SAN)是以一种结构连接的存储,通常通过交换机连接,使许多不同的服务器能够轻松访问存储设备。从服务器应用程序和操作系统的角度来看,访问SAN中的数据存储或直接连接的存储之间...

linux-tao
18分钟前
0
0
centos7 部署Apache服务器

centos7 部署Apache服务器 置顶 2017年09月05日 09:12:49 师太,老衲把持不住了 阅读数:19700 飞翔科技 2017-09-04 16:24 Apache程序是目前拥有很高市场占有率的Web服务程序之一,其跨平台和...

linjin200
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部