java数据段 静态区_回顾一下基础,关于栈与堆,常量池,静态区
先来张简单的图:
1.jpg
------------------分割------------------------
栈内存:
1.操作比较快速.但是为私有.
2.线程之间不共享.所以存放一些基本数据类型,局部变量(方法走完就回收了),
3.对于引用数据类型的地址引用.
堆内存:
1.new出来的实例
2.成员变量的值(如果是基本数据类型,比如: int).个人感觉是包装成了引用数据类型(Integer,Float之类的).
3.线程间可以共享数据,不安全.
4.通过gc回收释放内存
静态区:
1.存放static修饰的各种.
2.一般是不会被回收的,所以使用static要特别注意,如果只是staitc修饰的只是一些基本数据类型,那么无所谓.如果是引用数据类型就要注意了.适时释放引用.
3.随着进程的结束而结束.
常量池
1.存放了基本数据类型的值.表
2.String表.比如String s ="123ab123",创建这个String会先在常量池的表里面找,如果有就直接引用,如果没有就会在常量池创建添加到表并引用.
-----------------------分割------------------------------
实战场景
1.adapter的数据刷新:
public class MainActivity extends AppCompatActivity {
...//无关代码省略
private List data;//数据
private MyAdapter adapter;//listview的adapter
...
public void init(){
adapter = new MyAdapter (data);
}
public void loadData(){
//请求接口;
//请求成功;
//得到新的list数据newData;
data = newData;
adapter.notifyDataSetChanged();//通知adapter.
}
}
public class MyAdapter extends BaseAdapter{
private List adapterData;
public MyAdapter (List list){
adapterData = list;
}
......
}
上面这段代码,会发现刷新listview不成功.
如果把上面的代码稍微改一下.
public class MainActivity extends AppCompatActivity {
...//无关代码省略
private List data;//数据
private MyAdapter adapter;//listview的adapter
...
public void init(){
adapter = new MyAdapter (data);
}
public void loadData(){
//请求接口;
//请求成功;
//得到新的list数据newData;
data = newData;
adapter.notifyDataSetChanged();//通知adapter.
}
public class MyAdapter extends BaseAdapter{
......
public int getItemCount(){
return data==null?0:data.size;
}
}
}
把MyAdapter 写成MainActivity的内部类.就能刷新了.
二者的区别,仔细想一下就明白了,就是操作的地址值不同对象不同而已.
第一段代码的图:
2.jpg
第二段的代码的图
3.jpg
图画的有点搓,哈哈.
--------------------分割线--------------------------
再来个String创建的简单图:
4.jpg
望大家指出理解有误的地方。
~——————————分割————————~
你得喜欢与回复是我最大的动力— —
java数据段 静态区_回顾一下基础,关于栈与堆,常量池,静态区相关推荐
- 动态区域(栈、堆)、静态存储区(数据段和程序段)
动态区域(栈.堆).静态存储区(数据段和程序段) 内容收集比较混乱,仅供参考 版本一: 堆 1 类成员变量存放在堆区,所有类的实例和数组都是在堆上分配内存的,堆内存由存活和死亡的对象,空闲碎 ...
- java class文件常量池_《Java虚拟机原理图解》 1.2.3、Class文件中的常量池详解(下)...
Java内存区域 1.程序计数器(Program Counter Register)(线程私有的) 2.Java虚拟机栈 (Java Virtual Machine S ...
- java数据段 静态区_linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】...
一)概述 .堆栈是一个用户空间的内存区域,进程使用堆栈作为临时存储. .堆栈中存放的是函数中的局部变量,在函数的生命周期中可以将变量压入堆栈,编译器需要确保堆栈指针在函数退出前恢复到初始位置,也就是说 ...
- 方法区元空间实现之jdk7和8字符串常量池、运行时常量池、静态变量到底在哪?
方法区(落地实现jdk7永久代,jdk8元空间),元空间并不在虚拟机中,而是使用本地内存,它和堆在逻辑上是连续的,但在物理上是不连续的,所以也叫非堆. 1.此区域是线程共享的.储存已加载的类型信息.常 ...
- java中的静态变量的作用域_Java基础学习03-变量、常量、作用域
在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; Java语言支 ...
- java常量池方法区_Java方法区和运行时常量池溢出问题分析
运行时常量池是方法区的一部分,方法区用于存放Class的相关信息,如类名.访问修饰符.常量池.字段描述.方法描述等. String.intern()是一个native方法,它的作用是:如果字符串常量池 ...
- 串口发送tcp数据 源端口号_三分钟基础知识:用动画给面试官解释 TCP 三次握手过程...
作者 | 小鹿 来源 | 小鹿动画学编程 写在前边 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐. 对于这部分掌握以及 TC ...
- git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区
每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...
- java 字符串池 原理_《Java虚拟机原理图解》1.2.2、Class文件中的常量池详解(上)...
注意: 对于某个类而言,其class文件中至少要有两个CONSTANT_Class_info常量池项,用来表示自己的类信息和其父类信息.(除了java.lang.Object类除外,其他的任何类都会默 ...
最新文章
- acwing算法题--看图做题
- Android自定义属性
- 转]Window, Linux动态链接库的分析对比
- [WCF]利用net.tcp傳輸協定來建置WCF Service
- Flex与外部的数据通信
- 20000赫兹的声音试听下载_好听又不贵,DLC球顶双面镀铍动圈:七赫兹i99
- Pytorch采坑记录:DDP加载之前的checkpoint后loss上升(metric下降)
- python面试题之解释一下python的and-or语法
- Linux命令:修改文件权限命令chmod、chgrp、chown详解
- linux安装通用plsql数据库,linux centOs中安裝好數據庫,客戶端用plsql連接oracle
- 人工智能之启发式搜索算法
- oracle查询表锁定以及解锁方法
- pytorch dataloader参数解析
- 云计算发展现状及未来趋势
- qt 绘图工具(一)
- Springboot 之 HandlerMethodArgumentResolver 运用
- Could not find multidex.jar (com.android.support:multidex:1.0.2).
- 王姨劝我学HarmonyOS鸿蒙2.0系列教程之一环境搭建跑起来模拟器!
- ORA-02292_主表在有子表外键约束的情况,如何快速批量删除和插入数据?
- 【DB宝35】使用MySQL 8.0 克隆(clone)插件快速添加MGR节点
热门文章
- 疫情与资本寒冬双重危机下,智领云为何能拿到数千万融资?
- 如何给女朋友解释什么是撞库、脱库和洗库?
- 边缘计算精华问答 | 5G是否会“逼退”4G?
- python取的键不存在_Python3基础 dict get 在查询不存在的键时,返回指定的内容
- 苹果xr如何截屏_苹果手机自带的三种截屏技巧,你知道几个?现在知道还不迟...
- python封装c接口_用C为python3.1封装mysql接口(一)
- mysql与oracle链接超时_数据库连接超时问题(求解)
- “Host ‘xxx’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’”
- Gitlab14.x 安装、配置、启动 (Centos/Red Hat7/8.x)
- Nacos 集群集成SpringBoot2.x 微服务_02