java学习笔记day3
java学习笔记day3 今天被String地址的问题纠缠了好久,最后觉得 一个博客上写的能通顺一点:String直接赋值与使用new的区别: 当String类直接赋值时,如果常量池内存在这个字符串,则s1直接指向常量池的地址,若没有,则先在常量池内创建这个字符串对象,s1直接指向常量池这个字符串的内存地址; 当String类使用new实例对象时,首先在堆里创建这个对象,若是常量池内没这个字符串,则也创建一个,然后堆里的对象的value指向常量池内的字符串。 一:局部变量和实例变量 定义变量是指设定变量的数据类型和变量的名字, Java语言要求变量遵循先定义,再初始化,然后使用的规则。 作用域:指它的存在范围,只有在这个范围内,程序代码才能访问它。 变量的生命周期是指从一个变量被创建并分配内存空间开始, 到这个变量被销毁并清除其所占用内存空间的过程 局部变量(参数变量也可以看成是局部变量): 1)位置:定义在方法中或者在方法中的{} 2)使用:先赋值后使用 3)作用域:定义的方法中或者定义的{}中 4)生命周期:从变量的定义到方法调用结束 实例变量: 1)位置:定义方法外,类里面 2)使用:系统会进行默认初始化 3)作用域:作用于整个类 4)生命周期:从对象创建的时候到gc回收内存结束 局部变量的例子: public void method1() { int a = 0; /