JavaEE_day_04 (方法,内存管理, 运行流程)

1.查漏补缺

  1. short 和byte相加得到int型,(当byte, short, int, char 混合计算时都变成int)
byte b = 1;
short s = 1;
char c = 'A';
byte bb = b + s + c; //报错
int ii = b + s + c; //正确
long ll = b + s + c; //先变为int , 然后自动转换成long型
  1. double 优先级最高 , 除了布尔类型都能转换为double
    无论是整数或是字符型都能转换为double/float;

2.函数与方法的叫法

  1. C语言中只有函数, 没有方法, 且函数可直接调用, 不需要二次调用
  2. Java中只有方法, 没有函数
  3. C++中二者都有 , (面向对象为方法,面向过程为函数)

3.形式参数和实际参数

//在定义方法时称作形参
add(int a, int b){
	......
}
//在调用方法时称作实参
add(1 , 2);

4.关于交换两个变量的值

if ( m < n ){	
	m = m + n;
	n = m - n;
	m = m - n;
}

5.关于Java中的内存划分和管理

 java Runtime Data Area : java运行时数据区域,我们也可以叫JVM内存
 
 首先,内存被划分为 五个区域 : 程序计数器 , 方法区/静态区/静态代码段 , 栈内存(虚拟机栈/VM栈) , 堆内存 , 本地方法栈
 
 程序计数器 : 
  占用较小的一块空间,作用可以看做是当前线程执行的字节码的位置的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖于这个计数器来完成
  可以理解为保存下一条语句的行号,依次向后递增
 静态区 : 
  是用来存放我们的程序文件的,载入到内存之后的程序文件对象的一段空间,java中就是指我们的class文件
  包括方法,方法在被调用之前,都是以静态的形式被保存到静态区的
  静态区中还有运行时常量池
 栈内存 :
  以栈数据结构为模型,创建一段内存空间
  栈数据结构特性 : 先进后出,像弹夹 
  用来执行方法,局部变量也是在栈内存

 栈的构成
  栈空间 : 就是指以栈数据结构为模型的一段内存空间
  栈帧 : 栈内存中,每一个栈元素,叫栈帧
  栈顶元素 : 最后一个方进入的栈帧
  栈底元素 : 第一个放进去的栈帧
  
 栈的操作 : 
  压栈 : 就是指把元素放入栈空间的过程
  弹栈 : 就是把元素从栈空间中弹出的过程
 java中,方法调用,就是压栈操作,方法执行完 就是弹栈操作
  
 堆内存 : 
  用来存放对象,根据静态区中的class文件对象,创建的对象
  每个对象空间,分为3块
   数据部分 : 成员变量
   头部 : hashCode值
   类型 : 是哪个类创建的对象,保存的是类文件在静态区的地址,所以在成员方法中是可以直接访问静态属性的

 本地方法栈 : 
  用来执行native声明的方法,比如Object类中的hashCode()方法

6. java程序的执行流程 :

  1 java程序编写
    文本编辑器,按照java规范编写代码
  2 java程序的编译
    javac  进行编译 生成 class文件
  3 java程序调用
    java xxxx
   3.1 开启java虚拟机,然后把程序对应的class文件,载入静态区
   3.2 jvm自动调用该class的main方法,并且只有一个main方法,固定写法,java是单入口程序
   3.3 main被调用之后,jvm就会在栈内存开辟栈帧,把main中的代码复制进去,然后开始执行
   3.4 main方法执行流程
    3.4.1  在main方法中没有其他方法调用
      执行完main方法之后,main栈帧弹栈,结束,jvm关机
    3.4.2 main中有其他方法调用
      如果调用了当前类的方法,会在main方法栈帧之上,开辟新的栈帧,并把对应的代码复制进去开始执行,直到执行结束,返回到main栈帧的调用处,继续执行main方法
      如果调用了其他类的方法,把对应的类载入到静态区,然后再开辟栈帧,复制代码,执行,执行完返回main,继续执行
      如果被调用方法中,还有其他方法调用,就继续压栈,一直到main方法执行结束,弹栈,jvm关机

 程序加载 : 
 
 静态加载 : 程序开始执行,首先把所有和该程序相关的文件,全部一次性从硬盘载入内存
 动态加载 : 程序开始执行,只会载入当前用到的文件,如果执行过程中,需要其他文件,再去硬盘中载入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值