一、类、对象及引用之间的关系
1、类和对象的关系
- 类是对象的模板,对象是类的一个实例
- 一个Java程序中,类名相同的类只能有一个
- 一个类可以有很多对象;一个对象只能根据一个类来创建
2、引用和类以及对象之间的关系
- 相同类型的引用可以相互赋值
String a = new String("shi");
String b = new String("ming");
a = b; //可以用b给a赋值
- 引用只能指向其所属类型的类的对象
String a = new Integer(1);
//比如String类型不能指向Interger
- 引用必须是、只能是一个类的引用
- 只能通过指向一个对象的引用,来操作一个对象,比如访问某个成员变量
二、为什么String类打印出的是值,而不是一个地址?
String a = new String("zhu")
System.out.println(a);
//不是说引用指向的是个地址,为什么打印a打印出来的不是地址,而是"zhu"
1、system.out.println这个方法实际上会调用打印变量的toString()方法,如果没覆写的话,直接调用的是父类Object的toString()方法
2、String类的toString()方法实际上是覆盖的,会直接打印出值,所以想看最终打印出什么,还是要看toString()方法
三、为什么String类不用new对象,可以直接String a = “nie”?
- Java存在一个常量池,可以用来存储字符串
- String类是我们平常项目中使用频率非常高的一种对象类型,jvm为了提升性能和减少内存开销,避免字符的重复创建,其维护了一块特殊的内存空间,即字符串池,当需要使用字符串时,先去字符串池中查看该字符串是否已经存在,如果存在,则可以直接使用,如果不存在,初始化,并将该字符串放入字符串常量池中