一、String类介绍
与JS中的String不同,java中的String类型不属于基本数据类型,而是属于引用数据类型。java中的基本数据类型有8种,byte,short,int ,long,float,double,char,boolean。引用类型有类,数组和接口,而java中String就属于字符串类。
String类继承了Object类,Object类中,输出对象名输出的是对象的地址,采用equals方法比较的也是两个对象的地址,
String中重写了toString方法,输出对象名输出的直接是内容,使用equals方法,比较的也是两个对象的内容
二、String类创建对象的两种方式区别
方式一:String s = "abc";//直接赋值的方式创建
程序执行到此处时,首先会在栈中开辟空间存储局部变量 s,然后在方法区的常量池中开辟空间存储字符串abc,然后让将常量池中abc的地址赋值给s。然后s就指向了abc.
创建的字符串对象是在方法区的常量池中,只占一块空间,占存少,推荐使用
方式二:String s = new String("abc") /采用构造方法创建
程序执行到此处时,首先会在栈中开辟空间存储局部变量s,然后new出来的对象存储在堆内存中,字符串abc存储在方法区的常量池中。
总共占两块空间,分别时堆内存和方法区的常量池中
图解:
三、关于string 类型的传参问题
图解说明:
注:
1.字符串是一个不可改变的序列
2.任意一个字符串都是一个对象,每使用一个新的字符串,相当于在常量池中创建了一个新的对象,字符串拼接以后地址发生了变化。
程序调用method方法时,传递的参数实际上是字符串hello的地址