java 变量与数据类型

1.Java中的变量

变量是在内存中分配的保留区域的名称。换句话说,它是一个内存位置的名称。它是一个“变化+能够”的组合,意味着它的值可以改变。

1.1变量的类型

局部变量:方法和代码块内定义的变量。(在定义局部变量时,必须对其进行初始化。)
成员变量:类内,方法外定义的变量。(成员变量可以是java语言中任何一种数据类型)
成员变量又分为实例变量类变量(被static修饰的变量,静态变量)。

1.2静态变量与实例变量区别:

  1. 静态变量在内存中只有一个拷贝(节省内存), JVM只为静态分配一次内存.在加载类的过程中完成静态变量的内存分配. 可用类名直接访问,当然也可以通过对象来访问(不推荐).。
  2. 对于实例变量, 每创建一个实例, 就会为实例变量分配一次内存, 实例变量可以在内存中有多个拷贝,
    互不影响, 需要通过实例的引用来访问.

1.3常量

在 Java 中,利用关键字 final 指示常量。关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上,常量名使用全大写。

1.4定义变量

java是强类型语言,所有的变量都必须先声明才能使用,声明变量时必须指定变量存储信息的类型。变量的声明一般使用名值对的方式,包含变量名和变量值,通过变量名可以引用变量值,也可以修改变量名的值。
首先,声明一个变量的基本格式是:

  数据类型 变量名;

我们也能在声明的同时进行初始化:

   数据类型 变量名 = 数值;

1.5变量命名规则

  1. 必须以字母、下划线“_”、或“$”符号开头
  2. 可以包括数字、区分大小写
  3. 不能使用Java语言的关键字,例如int、class、public等

1.6驼峰命名规则

  • 变量或者方法: 第一个单词全部小写,第二个单词开始,每个单词首字母大写 haoHaoXueXi
  • 类或者接口: 每个单词首字母大写 HaoHaoXueXi
  • 常量: 全部大写,每个单词之间使用_进行连接 Hao_Hao_Xue_Xi
  • 包: 全部小写,层级之间使用.连接 hao.hao.xue.xi

1.7变量的默认值

只有成员变量才有默认值,局部变量没有默认值必须赋值初始化。
布尔型(boolean)变量默认值为false,byte、short、int、long为0,字符型为’\u0000’(空字符),浮点型(float double)为0.0,引用类型(String)为null。

1.8变量的初始化顺序

1.首先会初始化父类,因为没有父类子类也无从谈起。第一步初始化static 变量 或者 静态初始化块
2.初始化子类的static 变量 或者 静态初始化块
3.顺序初始化父类普通变量 或者 父类普通变量初始化块 ,然后是构造函数
4.顺序初始化子类普通变量 或者 子类普通变量初始化块 ,然后是构造函数
5.static只会被初始化一次

2.数据类型

2.1定义

1.java属于强类型语言,变量类型一但声明,不可修改
2.数据类型可以决定变量所需要的存储空间大小和对应的处理逻辑
3.作用域是指变量的有效范围,一般是指所在花括号范围内

2.2类型

(1)基本数据类型
byte, short, int, long, float, double, char, boolean
(2)引用数据类型
包括类对象,接口对象,数组等
在这里插入图片描述

2.3数据在JVM中的存储

在这里插入图片描述

Java栈
Java栈的区域很小,只有1M,特点是存取速度很快,所以在stack中存放的都是快速执行的任务,基本数据类型的数据,和对象的引用(reference)。

程序计数器(ProgramCounter)寄存器
PC寄存器( PC register ):每个线程启动的时候,都会创建一个PC(Program Counter,程序计数器)寄存器。PC寄存器里保存有当前正在执行的JVM指令的地址。 每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。保存下一条将要执行的指令地址的寄存器是 :PC寄存器。PC寄存器的内容总是指向下一条将被执行指令的地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。

本地方法栈
Nativemethodstack(本地方法栈):保存native方法进入区域的地址。


类的对象放在heap(堆)中,所有的类对象都是通过new方法创建,创建后,在stack(栈)会创建类对象的引用(内存地址)。

方法区
method(方法区)又叫静态区,存放所有的①类(class),②静态变量(static变量),③静态方法,④常量和⑤成员方法。
1.又叫静态区,跟堆一样,被所有的线程共享。
2.方法区中存放的都是在整个程序中永远唯一的元素。这也是方法区被所有的线程共享的原因。

运行常量池
这儿的“静态”是指“位于固定位置”。程序运行期间,静态存储的数据将随时等候调用。可用static关键字指出一个对象的特定元素是静态的。但Java对象本身永远都不会置入静态存储空间。
这个区域属于方法区。该区域存放类和接口的常量,除此之外,它还存放成员变量和成员方法的所有引用。当一个成员变量或者成员方法被引用的时候,JVM就通过运行常量池中的这些引用来查找成员变量和成员方法在内存中的的实际地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值