1.实际开发中字符串的比较:常用”string”.equals(str) 形式,而str.equals(”string”)形式容易导致NullPointerException异常。
2.使用构造方法的方式开辟的字符串对象,实际上会开辟两块空间,其中有一块空间将会成为垃圾。关键字new永远表示开辟新的堆内存空间,其内容不会保存在对象池中。手动保存到对象池:public String intern()。
String stringA = "mm" ;
String stringB = new String("mm").intern() ;
System.out.println(stringA==stringB);
3.两种String类对象实例化的区别:
①直接赋值(String str = “字符串”;):只会开辟一块堆内存空间,并且会自动保存在对象池中以供下次重复使用。
②构造方法(String str = new String(“字符串”);):会开辟两块堆内存空间,其中有一块将成为垃圾,并且不会自动入池,但是用户可以使用intern()方法手动入池。
4.字符串常量池(字符串对象池):其本质是一个动态对象数组。字符串对象池有两种:
①静态常量池:是指程序(*.class)在加载的时候会自动将此程序中保存的字符串、普通的常量、类和方法等信息,全部进行分配。
②运行时常量池:当一个程序(*.class)加载之后,有一些字符串内容是通过String对象的形式保存后再实现字符串连接处理,由于String对象的内容可以改变,所以此时称为运行时常量池。
5.String对象的内容一旦声明将不可改变。
6.主方法组成分析:Java中的程序代码是从主方法开始执行的。主方法:public static void main(String []args){}。
public:描述的是一种访问权限,主方法是一切的开始点,开始点一定是公共的。
static:程序的执行时通过类名称完成的,所以此方法是由类直接调用。
void:主方法是一切程序的起点,程序一旦开始执行是不需要返回结果的。
main:系统定义好的方法名称,当通过java命令解释一个类的时候会自动找到此方法名称。
String args[]:字符串的数组,可以实现程序启动参数的接收。
7.
public static void main(String []args) {
Integer a = new Integer(9) ;
Integer b = 9 ;
int c = 9 ;
System.out.println(a==b);
System.out.println(a==c);
}
最终输出的结果为: