黑马程序员技术交流社区
标题:
将字符数组转成字符串
[打印本页]
作者:
陈少文
时间:
2012-6-14 21:28
标题:
将字符数组转成字符串
//代码
class Var
{
public static void StringDemo()
{
char[] c = {'a','b','c','d','e'};
String s = new String(c);
System.out.println(s);
}
public static void main(String[] args)
{
StringDemo();
}
}
编译可以通过。如果把String s = new String(c);
改为String s = String(c);时编译错误。想问一下,为什么一定要new 一个对象呢?
作者:
刘克方
时间:
2012-6-14 21:29
本帖最后由 刘克方 于 2012-6-14 21:33 编辑
首先String s = String(c)不符合java的语法,new对象的作用是为对象分配内存空间;
不通过new没办法创建这个对象。
作者:
Kristy_Li
时间:
2012-6-14 21:35
在new的时候就是相当于调用String类的构造函数,String一个类,是一种引用类型,所以必须要用new关键字来产生对象!
作者:
郑冬
时间:
2012-6-14 21:41
没有使用static修饰的方法和属性,只可通过实例来调用,创建对象的根本途径是构造器,必须通过new关键字来调用某个类的构造器来创建这个类的实例
作者:
王明明
时间:
2012-6-14 21:41
1、String对象的初始化
由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下:
String s = “abc”;
s = “Java语言”;
其实按照面向对象的标准语法,其格式应该为:
String s = new String(“abc”);
s = new String(“Java语言”);
只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如String s = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。
作者:
李盼
时间:
2012-6-14 21:43
你既然用String s定义了s,那个s就是一个字符串类型的引用变量,那么s就只能指向字符串对象,所以要把字节数组转成字符串,String s = new String(c);是利用String类的构造函数把字节数组转换成字符串。String(C)显然是错误的语法,就算你想把字节数组强制转为String类型,也应该书写成(String)C,当然这也是不行的,会出现转换异常
如果你不想new对象,那么可以用String类的静态方法String.valueOf(c) ,一样可以转成字符串,但是你要知道,字符串就是对象,所以即使用静态方法,返回的还是对象。
作者:
刘建龙
时间:
2012-6-14 22:10
new的作用调用构造方法,在堆中分配内存空间,创建对象
String s;
定义一个String类型的引用,但它只是一个引用,并没有实际在堆中分配空间。
当使用这样的代码:
String s = new String(c);
就在堆中分配了空间。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2