java笔记之变量的存储方式

1.java变量存储域

java变量的存储区域主要放在以下几个地方:

(1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定。

(2)栈:存放关于基本类型数据和对象的引用,但是对象本身并不在栈里,(通过new出来的)对象放在堆里或者常量池中(字符串的常量对象就放在常量池中)。

(3)堆:用于存放new出来的对象。

(4)常量池:存放字符串常量和基本类型数据的常量(通过 public static final修饰)。

(5)静态域:用于存放静态的成员(static)。

(6)非RAM存储:比如硬盘等。

在这里主要说说堆、栈和常量池。存放在栈里的数据的大小和生命周期是确定的,当所引用的数据消失时,该栈数据就会被JVM回收。存放在堆里的数据具有不确定性,当满足一定条件时,会被JVM的垃圾回收机制回收。

2.例子

比如以下代码:

1 String s1 = "example";
2 String s2 = "example";
3 String s3 = new String("example");
4 String s4 = new String("example");

对于s1、s2将会存放在常量池中,对于s3(new出来的对象),会先去常量池中查找有没有"example"的对象,如果有,就会在堆里创建一个"example"的拷贝对象;如果没有,就会先在常量池中创建一个"example"的对象,然后再在堆里创建拷贝对象。

所以有道题:String str = new String("abc")创建了几个对象?

答曰:一个或两个。

时间: 2024-08-25 03:09:00

java笔记之变量的存储方式的相关文章

C语言学习笔记:12_变量的存储方式和生存期

/* * 12_变量的存储方式和生存期.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> /** * 从变量的作用域分: 全局变量,局部变量 * 从变量存在的时间(生命周期)分:静态存储方式,动态存储方式 * * 静态存储方式:在程序运行期间由系统分配固定的存储空间的方式 * 动态存储方式:在程序运行期间根据需要进行动态的分配存储空间的方式. * * 数据存放的

变量的存储方式

变量分为静态存储方式和动态存储方式 静态存储方式是指在程序运行期间由系统分配固定的存储空间方式 动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式 C语言中每一个变量和函数都有两个属性:数据类型 和 数据的存储类别  存储类别指数据在内存中存储的方式(如静态存和动态存储和动态存储) C的存储类别包括4种:    自动的(auto) , 静态的(static), 寄存器(register),外部的(extern) // auto 变量 和 static变量 #include<std

1005------C语言-----------C语言变量的存储方式解析

0.背景 在看APUE第七章的时候,作者分析了setjmp和longjmp这种函数间跳转机制对不同存储类型变量的影响,看到register,auto,volatile,static等等这些关键字很模糊,也可能太少用了,但是自认为C语言基础不错的我还是不能接受任何不懂的知识点,于是就捋了捋思路. 1.C语言变量的基本属性 在C语言中,每一个变量都有3个属性: (1)类型,就是常用的int.char等,它确定了变量存储长度和运算方式: (2)作用域,根据变量所处的位置分为全局变量和局部变量: (3)

Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)

1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间. 释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作.但同时,它也加重了JVM的工作.因为,GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请.引用.被引用.赋值等,GC都需要进行监控. 2.什么叫java的内存泄露 在

从java toBinaryString() 看计算机数值存储方式(原码、反码、补码)

一.toBinaryString 方法及其含义 1.1 方法说明 该方法位于java.lang.Integer类中 方法签名:public static String toBinaryString(int i) 含义:返回参数数值的补码形式,正数则忽略前面的0.(官方注释:返回表示传入参数的一个无符号(这里无符号大概单纯指数值前面没有+-号,实则是有符号位) 的二进制字符串.如果参数为负数x,返回的值则为 2^32 + x [就是它的补码]) 1.2 使用示例 System.out.printl

JAVA的环境变量配置(方式二)

1.成功安装之后,进行测试是否真的成功安装,点击[开始]----[运行]----输入 CMD,在命令提示符里面输入“Java -version”并按回车键,出现下图,即为安装成功.如图: 2.下面开始配置环境变量,右击[我的电脑]---[属性]-----[高级]---[环境变量],如图: 3.选择[新建系统变量]--弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径(也就是步骤5的文件夹路径),单击“确定”按钮,如图: 4.在“系统变

java笔记------(变量、基本数据类型、数据类型的转换)

一.变量:变量即在程序运行过程中它的值是允许改变的量.(存数据的,代词,指代它所存的那个数) 1)声明: int a; //声明整型变量,名为a int b,c,d; //声明三个整型变量,名为b,c,d 2)命名: 2.1)只能包含字母.数字._.$符,并且不能以数字开头 2.2)严格区分大小写 2.3)不能使用关键字 2.4)可以中文命名,但不建议 2.5)建议:见名知意.驼峰命名法 3)初始化:第一次赋值 3.1)声明同时初始化 nt a = 250; 3.2)先声明后初始化 int a;

变量的存储方式和生存周期

C语言之局部变量&amp;全局变量&amp;变量存储方式

一.角度分析: 变量作用域 -------> 局部变量和全局变量 变量存在的生存期 ---------> 静态存储方式和动态存储方式 二.局部变量: 局部变量也称为内部变量.局部变量是在函数内作定义说明的.其作用域仅限于函数内,离开函数后再使用这种变量是非法的. 例子: 关于局部变量的作用域还要说明以下几点: 1)主函数也是一个函数,它与其他函数是平行关系.主函数中定义的变量也只能在主函数中使用,不能在其他函数中使用.同时,主函数中也不能使用其他函数中定义的变量. 2)形参变量是属于被调函数的