寄存器 : 最快的存储区,位于处理器中,寄存器会按需求自行分配空间,java不能控制寄存器,所以在程序中感觉不到它的存在
栈(stack) : 位于RAM(内存)中,速度仅次于寄存器,存储对象的引用(地址),指向堆中的对象. 基本类型直接存储值在栈中
堆(heap) : 也位于RAM中,比栈略慢,存储对象
常量存储 : 直接存放在程序代码内部
非RAM存储 : 比如流对象和持久化对象.存储在磁盘中.
Java是值传递还是引用传递?
用等号传值
分两种情况:1.传递基础数据类型 2.传递复合数据类型
下面用代码示例:
public class Test { private int num1 = 10; private int num2; private Person person1 = new Person("张三"); private Person person2; /** * 基本数据类型是值传递,复合数据类型是引用传递.结合堆和栈的知识理解. */ @Test public void runMethod() { //基本数据类型传递测试 num2 = num1; num2 += 5; System.out.println("num1: " + num1 + "\n" + "num2: " + num2); //结果是: num1: 10 num2: 15 //复合数据类型传递测试 person2 = person1; person2.setName("李四"); System.out.println("person1: " + person1 + "\n" + "person2: " + person2); //结果是: person1: 李四 person2: 李四 } /** * 私有类Person * @author jy * */ private class Person { //成员变量,名字 public String name; //构造方法 public Person(String nameString) { name = nameString; } //修改名字 public void setName(String newName) { name = newName; } //toString方法 @Override public String toString() { return name; } } }
给方法传参
给方法传参时,传参的过程可以看作是用等号("=")赋值.所以结果和上边测试的一致.