请教各位下面几个String类声明的区别? String str1=""; String str2=" "; String str3=null; String str4=new String(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String str1=""; // str1是一个空字符串String str2=" "; // str2是一个包含一个空格字符的字符串String str3=null; // str3不是字符串,是nullString str4=new String(); str4的值和str1相同,但是str4在堆上分配内存,且不可重用 首先,String是个类;其次str1建立一个字符串,内容为空;str2建立一个字符串,内容为一个空格;str3建立字符串,但是str3没有指向任何内容,null不是空,是什么都不是的意思;str4新建一个字符串,没有内容,默认为null 别的都知道,那str3在内存中是怎么回事啊? str3只是一个引用,相当于C中的指针,是个地址,但无实际内容,等待你给他赋值 str3是指向栈中一个null的引用,栈中如果有null,str3就指向,没有就创建一个null,str再指向。当你给str3赋值后,str3就会指向其他的地址。 null只是个java的关键字,实际没有指向任何地方. 4个String声明是没有区别的,都声明了一个String类型的引用,只不过它们初始指向的地方不同而已. String str1=""; // str1是一个空字符串 字符串常量 分配在数据区 String str2=" "; //str2是一个的字符串,它是一个空格 分配在数据区String str3=null; //str3是null String str4=new String();//在堆内存分配空间 值是null 刚才测试过,String str4 = new String(); System.out.println(str4); 结果:空串,而不是null. 泛型类??? replaceAll换"\"出错 请教大家一个Java递归求解组合数的基本算法问题 java 数组值比较大小并分类 【求助】为什么内部类传参要求对象是final的?不然就会编译错误?是出于什么考虑呢? 背景图片问题 请问这个抽奖程序为什么运行不了 哪里有jbuilder8下,请告知一声,谢谢! Java初学者提问 java中的jpanel的add方法? java 做图形图象处理,到底合适吗?如果不合适,为什么SUN公司开发了那么多关于图像的类? 以前一直忽略的一个小问题~
String str2=" "; // str2是一个包含一个空格字符的字符串
String str3=null; // str3不是字符串,是null
String str4=new String(); str4的值和str1相同,但是str4在堆上分配内存,且不可重用
str1建立一个字符串,内容为空;
str2建立一个字符串,内容为一个空格;
str3建立字符串,但是str3没有指向任何内容,null不是空,是什么都不是的意思;
str4新建一个字符串,没有内容,默认为null
刚才测试过,String str4 = new String(); System.out.println(str4); 结果:空串,而不是null.