对于 引用类型 基本类型 静态 的区分;
所有的C类语言 static 意味着只要刚进入内存就有 自己的内存空间 如果一个变量没有自己的内存空间就不可以被操作;
静态方法 或者静态变量 刚定义后进入内存 就可以被直接调用 使用但是非静态的不可以
当在main方法里面 new 一个新对象的时候 只会给非静态分配空间 因为 静态的已有空间
所以在 类里面的非静态空间经过 new初始化以后才会占据空间;
未进行赋值的 时候 基本类型 默认是0 引用类型(里面是地址)默认是-1;
但是在 main()方法里面
int a;String b; 这两个并没有默认值 (因为他没有构造函数啊人家类里面有默认值是因为有默认的构造函数啊);
按值传递
Person x2=new Person();
=号含义 将右边值的地址交给左边存储,值的地址---堆中地址 也叫做按值传递
栈地址:引用本身的地址 引用地址
Person x3=x2;x3拿到的值是堆中地址 按值传递 (引用的堆地址)
如果是按照 栈地址 传递 称为按引用传递;只有在c语言中 才有按引用传递 别的高等语言只有按值传递;
按上图 x3.age=66; System.out.println(x2.age);//x2.age=66; 因为x3 和x2指向的是同一地址 用 x3对他进行修改 也就是x2对它进行修改;
一个实例
输出x1.age //是 45
两个坑 :1:传参 x1 x2 的位置 和下面函数的位置
2: 没有返回 值 又没有更改值 所以 主函数里面 x1 x2 指向空间里面的值都没有变化
因此 x1 .age 输出是 45
接下来改一下
此时输出的就是33;