一、创建字符串对象的几种方法:
1)通过引用字符数组来创建字符串
char a[]={'A','b','c','E'};
String str1=new String(a);
System.out.println(str1);
2)先定义后赋值
String str2;
str2="this is a book";
System.out.println(str2);
3)通过截取字符数组的一部分来创建字符串
char a3[]={'a','b','c','D','6','p'};
String str3=new String(a3,2,4);
System.out.println(str3);
4)通过类的实例化对象方法实例化一串字符来创建字符串
String str4=new String("this is a book");
System.out.println(str4);
如下图所示:
二、几种错误用法:
1)类型不匹配---->不能从 char[ ] 转换为 String。
String str ;
char a[]={'g','o','o','d'} ;
str=a ; // --->错误处。
应该为:
str=new String(a) ;
2)语法错误----> Java中没有这样的定义,不能对数组的长度预先指定,编译器无法通过编译。
char a[6]={'g','o','o','d'} ; // --->错误处。
应该为:
int a[ ] = new int [6] ; 或:int a[ ] ; a= new int [6] ;
此时尽管定义了长度,但赋值时也不能指定长度,应该为:a[ ] =new char[ ] {'a','b','c','d','e','g','f'} ;
此时前面的定义也就失去意义,因为初始化的长度已经为7了,系统却未报错。说明数组a被重写(覆盖),因为数组在Java中被视为类对象。
3)类型不匹配---->不能从 char[ ] 转换为 String。
char a[ ] ;
a="good" ; // --->错误处。
应该为:
char a[ ] = new char[ ]{'a','b','c','e'} ;
4)不能断行书写字符串,如有需要断行书写,应该要用“+”号连接两部分字符串。
System.out.println(" I Like // --->错误处。
this book ! ") ;
应该为:(如果用eclipse来写程序的话,回车后自动添加字符连接符“+”并补全引号)
System.out.println("I Like " +
" this book ! ") ;
【附】
因为数组被视为对象,所以数组中的其中一个属性就是它的数组长度,如下:
int a[3][5] ====>
a.length = 3 // 注意:a.length 为第一维的长度 3 ,而非 5 或 3*5=15 。
a[0].length = 5
a[1].length = 5
a[2].length = 5
评论