String name = “Jhon”; String声明的其实是创建了一个String对象 储存的是引用地址 ,而不是字符本身。 和int a = 42; 这个语句相比 name 储存的是一个引用。 变量名内存空间a42name————>“Jhon” String 类的对象 的length()方法 包括字符串中的空白字符。方法的递归 1.形式:在某个方法里调用他自身这个方法。 2.遇到问题: 遇到栈内存溢出时,先查看递归结束的 条件本身是否有错误,若无错误,则只能手动扩大栈内存。 例子代码: public class test{ public static void main(String[] args){ int n = new java.util.Scanner(System.in); int result = sum (n); System.out.println(result); } public static int sum(int num){ if(num == 1){ return 1; } return num+sum(num-1);//方法的递归。 } } 类和对象的栈、堆、方法区的内存使用。JVM: 1.栈:该方法需要的内存的在栈中分配,栈中最主要储存局部变量。 2.堆:储存对象。凡是通过new出来的对象储存在堆中,堆中储存成员变量中的实例变量。 局部变量(在方法中声明的变量)必须声明且赋值才能访问 对于成员变量,没有手动赋值,则赋默认值: Boolean赋false;引用数据类型 (比如string)赋null值;Student s1 = new Student(); 语句左边new出了一个对象,并通过=将内存地址赋给s1,s1为引用。Java中垃圾回收器GC主要针对堆内存中垃圾数据,当没有引用指向该内存时,会被回收。