JAVA笔记2-面向对象与内存解析
1、java中的变量先声明、再赋值、再使用。(局部变量必须初始化,成员变量默认初始化)

2、基本类型之外的所有类型都是引用类型。基本类型占一块内存,引用类型占两块(所有new出来的东西装在堆内存,因为是堆是在运行时动态分配内存)。
方法只有在调用的时候才占用内存。
四块:(待完善)
code seg代码区:存放类(类的方法)
data seg数据区:存放静态变量和字符串常量
stack栈内存:存放基本类型变量和局部变量(方法参数和方法内生成的变量)(局部变量都分配在这)
heap堆内存:存放new出来的对象

3、关于构造方法:如果自己没有定义,则编译器自动添加默认构造方法;如果自己已经定义了,则编译器不再生成默认构造方法,构造方法没有返回值(不能写void)
4、

5、重载(方法名相同):参数个数或参数类型不同才构成重载(编译器可以区分开),只有返回值类型不同不构成重载(编译器无法区分开)。
6、例题:注意基本类型和引用类型都是通过“值传递”的。


可见,运行完毕后,只有change3()方法可以改变d2的值,而change1()和change2()不能达到预期效果,不能改变值data和d1的值。
红点处执行完毕后,change2()方法中的局部变量b马上消失(因为是栈中的局部变量,随着方法的结束而消失),但b所指向的堆内存不是马上消失,而是等待垃圾回收。
7、内存分析大题(方法的返回值存储在一个临时区域内,打印完成后自动消失。)




JAVA笔记2-面向对象与内存解析的更多相关文章
- JAVA中的面向对象与内存解析_2
构造方法(构造函数) • 使用new +构造方法创建一个新的对象. • 构造函数是定义在Java类中的一个用来初始化对象的函数. • 构造函数与类同名且没有返回值. • 例如:Person类的构造 ...
- JAVA中的面向对象与内存解析_1
对象的创建和引用 必须使用new关键字创建对象. 使用对象(引用成员变量或来引用对象的成员变量. 使用对象(引用)方法(参数列表)来调用对象的方法. 同一类的每个对象有不同的成员变量存储空间. 同 ...
- 03_2_JAVA中的面向对象与内存解析
03_2_JAVA中的面向对象与内存解析 1. 成员变量 成员变量可以是Java语言中任何一种数据类型(包括基本数据类型和引用数据类型) 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用 ...
- Java笔记(九)……面向对象I
面向对象概念 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向 ...
- Java笔记(十三)……面向对象III继承(inheritance)
继承概述 继承概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类. 子类可以直接访 ...
- java笔记之面向对象
一.面向过程与面向对象的区别 1 面向过程:主要关注点是:实现的具体过程,因果关系[集成显卡的开发思路] * 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低. * 缺点:采用面向 ...
- Java笔记(十)……面向对象II封装(Encapsulation)
封装概念 封装: 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: 将变化隔离. 便于使用. 提高重用性. 提高安全性. 封装原则: 将不需要对外提供的内容都隐藏起来. 把属性都隐藏,提 ...
- java 笔记(1)-—— JVM基础,内存数据,内存释放,垃圾回收,即时编译技术JIT,高精度类型
1.java中5个存放数据的地方: (1).寄存器(Registers):位于CPU内部,是速度最快的存储区,但是数量和容量有限.在java中不能直接操作寄存器. (2).栈(Stack):栈位于通用 ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- 转 Java笔记:Java内存模型
Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...
随机推荐
- python基础--合并两个列表
a = [1,2,3] b = [4,5,6] # 将两个列表合并 # append方法是不行的 # a.append(b) # print(a) # [1, 2, 3, [4, 5, 6]] # 我 ...
- 必须要掌握的linux目录路径知识
一./etc/sysconfig/network-scripts/ifcfg-en33 配置网络地址及GW等. 下面图片是一些常用的linux命令: nmtui(setup)---------- ...
- docker 使用阿里云免费仓库
阿里云为开发人员提供了免费的仓库~~ 登录阿里云 ,选择容器镜像服务,当前是2019/08/13 ,之后不知道阿里云控制台菜单会不会调整哈 进入容器镜像服务菜单,创建仓库,需要绑定git仓库 怎么上传 ...
- PTA(Basic Level)1036.跟奥巴马一起编程
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机 ...
- Python 入门 之 双下方法
Python 入门 之 双下方法 1.双下方法 定义:双下方法是特殊方法,它是解释器提供的 由双下划线加方法名加双下划线 方法名的具有特殊意义的方法,双下方法主要是python源码程序员使用的,我 ...
- python cx_oracle 环境搭建
背景说明: 之前的环境本来是可以用的,是另外一个项目(python27)需要的时候搭建的.新项目采用的是python36,安装的cx_oracle的版本是7,而环境中的Oracle客户端是11,导致p ...
- leecode刷题(29)-- 二叉树的中序遍历
leecode刷题(29)-- 二叉树的中序遍历 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 思路 跟 ...
- shiro配置学习
一.shiro的配置 1.shiro的web过滤 实例化ShiroFilterFactoryBean 设置securityManager.loginUrl.unauthorizedUrl.sucess ...
- Linux系统定时备份网站文件到七牛云存储脚本
1.七牛云账号注册. 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了. ...
- PHP之常用操作
在最高权限下执行相关命令 1)查看PHP配置 php --ini Configuration File (php.ini) Path: /www/server/php//etc Loaded Conf ...