栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java String小结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java String小结

	String s1="123abc";//推荐
	1.在栈中创建了一个名为s1的变量(引用)
	2.如果String池中没有“abc”存在,则在常量池中创建一个String类型的“abc”对象,有就不创建
	3.将“abc”的地址赋给s1
	创建一个或者没创建新对象
	String s2=new String("123abc");//不推荐,new一定会强制创建新对象
	1.在栈中创建了一个名为s2的变量(引用)
	2.如果String池中没有“abc”存在,则在常量池中创建一个String类型的“abc”对象,有就不创建
	3.new关键字时,在堆中创建了一个String对象
	4.将用new关键字创建的String对象的地址赋给s2
	创建两个或者一个新对象
	
	s1 == s2,结果为false,两者虽然内容一致,但是其实两者的指向的内存地址并不一致,而 == 会检查两者的内存地址是否一致,一致为true,不一致为false

	s1.equals(s2),结果为true,因为 equals() 在检查地址不相等后,还会检查两者的内容,两者内容相等,则仍然返回true,毫无疑问,两者的内容是一致的。
package String.day01;

public class StringDemo1 {
	public static void main(String[] args) {
		String s1="123abc";//推荐
		String s2=new String("123abc");//不推荐,new一定会强制创建新对象
		String s3="123abc";
		System.out.println(s1==s2);//false,s1与s2地址不相同
		System.out.println(s1==s3);//true,s1与s3地址相同
		s1=s1+"!";//改变内容会创建新对象
		System.out.println(s1);//String为不变量,此处创建了新对象
		System.out.println(s3);//此处不随s1的改变而改变
		//引用数据类型“==”不仅判断值还判断地址是否相同
		//此处判断字符串是否相同使用s2.equals(s3)结果为:true or false
		System.out.println(s2.equals(s3));
		
		String s4="123"+"abc";//编译期确定后,运行期不运行问题
		System.out.println(s4);
		System.out.println(s3==s4);//true
		
		String s="123";
		String s5=s+"abc";//此处改内容创建新对象
		System.out.println(s3==s5);//false
		
		//通过表达式表示含义
		//int a=1000*24*60*60;
		//比int a=86400000更能直观感受a要表示一天多少毫秒的含义

	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353929.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号