String abc=null; abc;有什么区别 String abc=null;String abc="";String abc;上面的三种写法有什么区别; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 zz 来自:楼上:)1:创建一个空字符串对象,2:创建一个字符串为空的字符串对象。3:声明一个字符串对象,但并没有分配内存,而1,2已经分配了内存对于最后一种表示,你不能if(abc==null),或者int length = abc.length();编译的时候会提示可能没有初始化. String abc=null;//声明了一个变量,变量指向null对象,String abc="";//声明了一个变量,变量指向""(空字符串)。String abc=new String("");//声明了一个变量,并参照""(空字符串)构造一个字符串对象,字符长度为0。String abc;//这个比较特殊,如果用来声明局部变量,他的值不定,如果是在类实例变量,他同String abc=null String abc=null;String abc="";上面这两种定义分别在什么时候用呢?这两种定义,各有什么优点,缺点呢? String abc=null;String abc="";一般推荐使用第二种第一种abc指向null,很多时候要判断字符串是否为空时,容易漏掉这种情况,在调用String的相关方法的时候就会出错而第二种则相对简单,String的方法都可以用,判断的时候也不会出错 1) String abc=null;2) String abc;//1)等于2),和C不同,JAVA为安全原因不允许一个悬挂引用,没有赋值的引用地址一律自动赋值为NULL,以防止访问到任意内存3)String a="";4) String b="";5) String c=new String("");6) String d=new String("");3)和4)中,变量a和b将会指向同一内存地址(""的地址)5)和6)中,变量c和d不会指向同一地址,而是两个""内容的地址,并且和a,b不同,实际上,3)和4)相当于new String("").intern().String 类维护着一个字符串池,对于像3)和4)这样的赋值方法,String 会在这个池中查找字符串是否已经在池中,如果在,就直接指向该地址,如果不在,生成一个实例放入池中再指向那个地址,可见对于同样内容的字符串多次引用时3)4)的方法要比5)6)的方法剩内存,之所以这样做,是因为String 是一个内容不可变的量,运用的是设计模式GOF.FlyWeight Ubuntu OpenJDK UTF-8文件读取中文乱码 [求助]base64编码与解码 Swing 表头第一列不可拖动 [求助]为什么程序不输出run()方法内容? 求教,向ACCESS数据库插入数据的语句! 用java实现 链表 的一个问题,在线等…… 新人请教!S123 jvm分别是怎么处理的? 一个网络方面的问题 五星“急”问题之二:JFrame的互斥显示 Java 可以编译成可执行文件吗 java用什么办法可以得到系统当前登陆用户的密码呢? 我的JAVA群,16918020,也可以谈谈.net,不过水平比较凹.
:)
1:创建一个空字符串对象,
2:创建一个字符串为空的字符串对象。
3:声明一个字符串对象,但并没有分配内存,而1,2已经分配了内存对于最后一种表示,你不能if(abc==null),或者int length = abc.length();编译的时候会提示可能没有初始化.
String abc="";//声明了一个变量,变量指向""(空字符串)。
String abc=new String("");//声明了一个变量,并参照""(空字符串)构造一个字符串对象,字符长度为0。
String abc;//这个比较特殊,如果用来声明局部变量,他的值不定,如果是在类实例变量,他同String abc=null
String abc="";上面这两种定义分别在什么时候用呢?
这两种定义,各有什么优点,缺点呢?
String abc="";
一般推荐使用第二种
第一种abc指向null,很多时候要判断字符串是否为空时,容易漏掉这种情况,在调用String的相关方法的时候就会出错
而第二种则相对简单,String的方法都可以用,判断的时候也不会出错
2) String abc;
//1)等于2),和C不同,JAVA为安全原因不允许一个悬挂引用,没有赋值的引用地址一律自动赋值为NULL,以防止访问到任意内存3)String a="";
4) String b="";
5) String c=new String("");
6) String d=new String("");
3)和4)中,变量a和b将会指向同一内存地址(""的地址)
5)和6)中,变量c和d不会指向同一地址,而是两个""内容的地址,并且和a,b不同,实际上,3)和4)相当于new String("").intern().
String 类维护着一个字符串池,对于像3)和4)这样的赋值方法,String 会在这个池中查找字符串是否已经在池中,如果在,就直接指向该地址,如果不在,生成一个实例放入池中再指向那个地址,可见对于同样内容的字符串多次引用时3)4)的方法要比5)6)的方法剩内存,之所以这样做,是因为String 是一个内容不可变的量,运用的是设计模式GOF.FlyWeight