java中string类型变量的默认初始值是什么?
java中string类型变量的默认初始值是为null。
string a,b;
声明string类型变量,不需要考虑字符串分配的空间大小,并且在字符串初始化上也有更多选择。
1.string a("the dog");
2.string a;
a="the dog";
3.string a="the dog";
可也可以把重新给string对象赋值而无须担心是否会导致容量不够,比如:
string a="dog";
a="persian";
a能“自动”扩容,存储"persian"
string对象的赋值和比较操作不用像C那样调用库函数也能完成。
1.用“==”比较字符串,如果两个字符串内容完全一致,返回true,否则flase,在c中需要调用strcmp函数
2.“=”把一个变量复制到另一个,将复制字符串内容而非指针值。
3.“+”将两个字符串连接起来
但 string str = "the "+" dog";却无法编译通过,+可以在两个string对象或一个string和一个C字符串之间合并,但不支持两个C字符串合并,在此,字符串字面值仍然属于C字符串范畴。
string类型单个字符的访问
用来访问一个C字符串里的单个字符的语法同样也可以用来访问一个string对象里的单个字符。
string dog="Mac";
cout<<dog[0]<<endl;//访问第1个字符dog[0]
字符串长度应该使用size成员函数,不同于C使用strlen:
int length=dog.size();
字符串输入
string dog;
cin >> dog;
输入流操作符(>>)为string类型的变量读入数据,但不知是:无论来自键盘的字符有多少,只能返回第一个白空格字符(空格,制表符,换行符)之前的那些字符。
可以使用getline(cin,dog);
把一整行字符的输入放到一个string变量里。
null会被分配内存空间吗
String abc=null;
String abc;
1:创建一个字符串对象为null, 分配了内存
2:声明一个字符串对象,但并没有分配内存