java基础笔记03-数组、类在内存中的分配

  1. 数组
  • 存放多个同一类型的数据
  • 数组也是一种数据类型,引用类型
  • 数组创建后,如果没有赋值,有默认值。整数类型默认都是0,浮点数类型都是0.0,char是\u0000,boolean是false,String是null。
  • 基本数据类型赋值,赋值方式是值拷贝;数组默认情况下是引用传递,赋值方式是传递地址。
  1. 排序
    内部排序:数据都加载到内存中进行排序,包括交换式排序、选择式排序、插入式排序
    外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括合并排序和直接合并排序法。
  2. 二维数组内存形式图内存形式图
  • 二维数组创建时列数可以不同。int[][] ints = new int[3][]创建一个数组,元素都为null。之后可以动态地添加数组中的元素。
  1. 声明方式
  • 一维数组声明方式:int[] x / int x[]
  • 二维数组声明方式:int[][] y / int y[][] / int[] y[]
  1. 生成指定范围的随机数
    Math.Random()生成0.0<=x<1.0之间的随机数。
    生成1到100的随机数:(int)(Math.random()*100+1)

  2. 类是抽象的,概念的,代表一类事物;对象是具体的,实际的,代表一个具体的事物。类是对象的模板,对象是类的一个个体。

  3. 类在内存中的创建对象的过程:在new对象的过程中,方法区1. 首先加载类的信息,包括属性信息和方法信息,但是只会加载一次,下一次new这个对象的过程不会再加载,然后 2.开始分配空间,默认初始化(根据数据类型有不同的默认值)。然后 3. 把这个空间地址赋给栈中的变量。4. 进行指定初始化。堆里面的对象包含的属性中,如果是基本数据类型,会直接存放在堆里面,如果是引用类型,会存放一个地址,地址指向方法区的常量池中的某一个地址创建对象内存过程

  4. Person p1 = new Person();p1是对象名、对象引用;new Person()创建的对象空间才是真正的对象。

  5. 类与对象内存分配图

内存图

内存总结:

  • 栈:一般存放基本数据类型,局部变量
  • 堆:存放对象、数组等
  • 方法区:常量池(常量,比如字符串)类加载信息
  1. 方法调用执行过程
  • 程序从main进入,先在栈中开辟一个main空间。
  • 程序执行到方法时,就会开辟一个独立的栈空间
  • 方法执行完毕,或执行到return语句,就会返回到调用方法的地方,栈空间也会释放。
  • 返回后继续执行方法后面的代码。
  • 当main方法执行完毕,整个程序退出
  1. 一个方法最多有一个返回值,如果要返回多个值,可以使用数组。
  2. 方法定义时的参数称为形式参数,简称形参;方法调用时的传入的参数称为实际参数,简称实参。实参和形参的类型要一致或兼容,个数、顺序必须一致。
  3. 基本数据类型,传递的是值,形参的任何改变不会影响实参。
  4. 引用类型传递的是地址,传递的也是值,但是是地址,可以通过形参影响实参。
  5. 方法不能嵌套定义,但是可以嵌套调用。
  6. jvm的递归调用
    递归调用的内存分析
  7. 递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflowError,成死🐢了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值