一、概念类
①、什么是字符串,什么是字符,字符串与字符的区别?
字符:是人们使用的记号,抽象意义上的一个符号。‘1’,‘你’,‘a’,‘#’.....
一个字母或一个汉字属于一个字符,而多个字符就是字符串了,字符串是由字符组成的。如“abc”,“你好”
字符使用单引号作为定界符,而字符串是使用双引号作为定界符。
②、字符与字节的区别?
字符>=字节
字节(Byte):字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,是一个具体存储空间。一个英文字母(不区分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。
③、String str=null与String str=“”的区别?
String str=null是不给分配内存空间的,而String str=“”给它分配长度为空字符串的内存空间,String str=null没有string对象,String str=“”有一个字符串对象。
④、谁说字符串不可变?string s="abc",s="123",s不是改变了么?
要区分变量名和变量指向的值的区别,程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,但是字符串本身没有变化,字符串不可变性指的是内存中的字符串不可变,而不是变量不变。
⑤、String与StringBuilder的区别?
String对象是恒定不变的,StringBuilder对象表示的字符串是可变的。
String对象是不可改变的,每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该对象分配新的空间。
例如:String a="a",a+="b",每次在后面追加都会重新申请一个能放字符串的内存空间。
StringBuilder对象是动态对象,允许扩充它所封装的字符串的数量,但是我们可以为它可容纳的最大字符数指定一个值,当修改StringBuilder时,在达到容量之前,它不会为自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。