java程序在执行时内存中的变化-面向对象1
今天还是看了看面向对象的,主要学习了一下程序在运行时在内存中的过程!
在内存中一般分为4个部分,
堆内存(heap)-》在new一个新的对象时储存真正的对象,动态内存。
栈内存(stack)-》局部变量(函数的参数及方法内部变量),在执行方法时分配内存给局部变量,当执行完后局部变量从栈内存中消失!
data segment-》 存放静态变量和字符串常量。
code segment-》存放代码的。
除了8中基本类型(byte,short,char,int,long,float,double,boolean)外,都是引用数据类型(如,类,接口等)。
基本数据类型在内存中储存占一个空间,引用数据类型占两个空间(栈内存储存指针,堆内存储存对象及属性)。
深入理解:
现有类,然后有对象,对象与对象中之间关联关系最常见!
在堆内存中的对象里面的属性(成员变量)中有对象他还是在堆内存中直接指向堆内存中的new的对象!
this在堆内存中自己指向自己。
return 回来的返回值会在栈内存(stack)中临时储存。
现在面向对象已经看了:
构造方法–》没有返回值而且不可以写void,方法名字要和类名一样。
重载–》就是函数名称一样,参数个数或者数据类型不同。
this关键字–》调用自己类本身。
static关键字–》静态变量,静态变量是针对类级别的是储存在 data segment 中的,静态方法也只可以访问静态变量。(因为static 是针对类级别,不是针对对象的。)
package –>包编译后 把 .class的文件放到相应的文件夹里,例如:package com.qq.java 把编译好的文件放到 com文件夹下的qq文件夹下的java文件夹下。(需要注意的是.class文件需要在 classpath 的地址里,不然不在同一目录会出现错误!)
import –》 导入包,把要new的对象的包导入,import com.qq.java.* *所有文件。
继承–》extends 继承
super–》调用父类
控制权限–》private default protected public
在命令行中打jar包 进到要打包的最上层目录 输入命令 jar -cvf name.jar “*” 这个目录下的所有文件。


最近评论