1.对象内存图
方法区 堆内存 方法栈
2.static关键字
package com.langsin.Method.StaticDemo;
public class StaticDemo {
int value1;
static int value2;
public static void f1() {
}
public void f2() {
}
public void f3() {
f1();
f2();
}
public static void main(String[] args) {
f1();
StaticDemo.f1();
//没有使用static修饰的方法可以自由调用有static和没有static的方法
//有static修饰的方法只能调用有static修饰的方法
//通过该类的一个对象修改了该类的一个静态变量,修改后的值影响了所有对象
StaticDemo sd1=new StaticDemo();
sd1.value1=1;
StaticDemo.value2=100;
StaticDemo sd2=new StaticDemo();
sd2.value1=2;
StaticDemo.value2=200;
StaticDemo sd3=new StaticDemo();
StaticDemo.value2=300;
System.out.println(sd1.value1);// 1
System.out.println(sd2.value1);// 2
System.out.println( StaticDemo.value2);// 200
System.out.println( StaticDemo.value2);// 200
System.out.println( StaticDemo.value2);// 200
}
}
package com.langsin.Method.StaticDemo;
import java.util.Arrays;
public class StaticTest {
public static void main(String[] args) {
// StaticDemo sd1=new StaticDemo();
// sd1.f2();
// StaticDemo.f1();
int[] arr={1,2,3,2,3,5,4,5,4,5,4};
String string = Arrays.toString(arr);
System.out.println(string);
}
}
3. 4个权限修饰符
(1)public 可以自由访问
(2) private 同一个包里的不同类中不能使用,不同包中不能使用
(3)protected 同一个包中不同类可以使用,不同包中不能使用
(4)无权限修饰符 同一个包中不同类可以使用,不同包中不能使用
4.方法的参数传递机制
package com.langsin.Method.oop;
public class MethodDemo {
public void changeValue1(int a, int b) {
a = a + b;
System.out.println(a);
}
public void changeValue2(PhoneDemo phoneDemo){
phoneDemo.color="远峰蓝";
phoneDemo.brand="苹果";
System.out.println(phoneDemo.color);
}
public static void main(String[] args) {
int a = 1;
int b = 2;
MethodDemo md1=new MethodDemo();
md1.changeValue1(a,b);//3
System.out.println(a);//1
PhoneDemo phoneDemo=new PhoneDemo();
phoneDemo.color="咖啡色";
md1.changeValue2(phoneDemo);//远峰蓝
System.out.println(phoneDemo.color);//远峰蓝
}
}