static :
static修饰的成员表示它属于类本身,不属于该类的单个实例(静态变量/静态方法)
对象存储
对于如下代码:
1class Fruit{
2 public int weight;
3 public Fruit(int w) {
4 weight=w;
5 }
6
7}
8public class HelloWorld {
9 public static void main(String[] args) {
10 Fruit fruit=new Fruit(10);
11 }
12}
复制代码
fruit对象在内存中存储在堆区,fruit实际上是一个引用变量,只存储了一个地址。
存储如下:
若再添加语句
Fruit fruit2;
fruit2=fruit1;
复制代码
则存储图变为
this指针
作用:让类中的一个方法,访问该类里的另一个方法或成员变量。
对于static修饰的方法,可以不使用this直接调用
在static修饰的方法中,不可使用this,因为this无法指向合适的对象
static修饰的方法中不能访问不适用static修饰的成员变量
无static修饰的方法可以调用有static修饰的方法
java编程时不要使用对象调用static方法和属性(替换成类调用static方法和属性)
在static方法中不可直接调用普通方法,只能通过创建对象,然后访问对象的普通方法
JAVA 方法
java参数传递
值传递(参数都存在栈区)
类似于西游记中孙悟空,可以变身形成一个h假孙悟空,假孙悟空拥有和真孙悟空相同的能力。但不管假孙悟空遇到被砍头等变化,真孙悟空也不会变化。
传入的是实际参数值的复制品,不管方法中对这个值进行怎样的操作,实际的参数值都不会发生改变。
引用传递(举例说明)
如下代码:
1class S{
2 public int a;
3 public int b;
4 public S(int aa,int bb) {
5 a=aa;
6 b=bb;
7 }
8}
9public class HelloWorld {
10 public static void swap(S s) {
11 int tmp=s.a;
12 s.a=s.b;
13 s.b=tmp;
14 }
15 public static void main(String[] args) {
16 S s=new S(1, 3);
17 System.out.println("交换前:a="+s.a+",b="+s.b);
18 swap(s);
19 System.out.println("交换后:a="+s.a+",b="+s.b);
20 }
21}
复制代码
执行结果:
1交换前:a=1,b=3
2交换后:a=3,b=1
复制代码
Main方法创建s对象后(16行执行完毕),存储示意图如下:
执行18行后,创建方法执行栈区swap栈,存储示意图如下:\