1.值传递和引用传递
值传递:变量之间只传递值,另外变量的值改变,不会改变另一个变量的值
引用传递:传递的是地址,在jvm中,可以简略的分为三个部分:栈内存、堆内存和方法区
栈内存放的是运行的方法,new出来的数据放在堆内存,栈内存里面指明数据在堆内存中的地址。引用传递中,对应地址的值改变,相关变量的值也会改变。
2.数组反转:两种方式
找规律
逆序赋值:需要创建一个大小相通的数组,进行拷贝
3.数组扩容
创建一个数组长度增加的数组,将原来数组的值赋给新数组,数组为引用类型,再进行引用类型的值传递。
速度比较慢,每次需要开辟一个新空间。相比链表而言。
4.类和对象
方便进行数据的管理
对象-属性和行为
类是一个抽象的数据类型,属性就是每一类对应的属性(即特点),其实可以类比于对人的分类,对象是类的具体化
对象也是new出来的,栈内存存放对象的地址,通过地址找到堆中存放的地方(引用类型存放的是地址,基本类型存的就是相应的数据信息),通过堆中的地址找到方法区对应地址,方法区中有一个常量池,里面存放了真正的信息。
5.属性=成员变量
属性可以是基本数据类型,也可以是引用数据类型
属性有不同的访问权限,属性如果不赋值,有默认值
6.Java内存的结构分析
栈:一般存放基本数据类型
堆:存放对象
方法区:常量池,类加载信息
Person p = new Person();
p.name = "小明";
p.age = 10;
创建对象流程分析:先加载Person类信息,属性和方法信息,只会加载一次。在堆中分配空间,进行默认初始化,把地址赋给p,p只想对象,进行指定初始化,如果是基本数据类型,直接改值,若不是,通过地址,找到方法区的常量池,进行初始化。