如题所述
String他很特殊,Java为他单独设计了一些方法,你不要和其他类混淆!(是被Java封装好了的)
知道构造原理以后,他其实也很简单,我先说特殊地方,就是双引号
String s="你好";此刻s指向的就是一个字符串对象,是对象!与你平时写的new很类似,只不过他这个对象放在常量池里面!你想想,有没有其他对象可以直接用双引号来声明对么?这就是特殊地方!(String s="你好" 等效 String s=new String("你好");)
它的对象组成其实也很简单,底层用的是数组,和字典!
比如"abc";Java会先去看看常量池有没有abc,如果没有,它就从字典里面(就是字符集编码表)去找,先找a放进数组,然后在找b放进数组,在找c,然后就组成了一个长度为3的char类型数组了!
这个abc被封装成一个对象,放进了常量池里面!
所以等你学了容器以后,你会发现字符串的拼接组成,非常影响效率,大都使用容器进行解决这个问题了!
另外,Java是开源的,你如果想仔细研究,可以打开String源码一看究竟!
Java字符串,在开发中用的是比较频繁的一个类,我们平时要表达一句话的含义,就可以使用字符串(String)来详细的描述;
Java中已经将字符串进行了很好的封装,我们可以使用String类将字符串进行随意的操作,比如字符串的反转,字符串的分割,字符串的拼接等。
Java String类提供了很多的构造方法,他可以根据我们传入的不同的参数,转换成我们想要的数据;比如可以将字符数组,字节数据,ASCII码数组转换为字符串,而且可以根据传入的参数,判断将数据的哪些位置的内容转换为字符串;
在java中除了String之外还有几个常用的字符串类StringBuffer和StringBuilder,在执行效率方面StringBuilder最快,String最慢,在Java源码中,String类里面有个常量private final char value[];用来存储字符串信息,多以对象一旦创建成功之后,内容就不会改变,但实际上修改值得时候,是不断的创建回收内容,所以String速率最慢;StringBuffer和StringBuilder都是继承于AbstractStringBuilder这个类,在这个类中有个变量char[] value;数组进行字符串内容的存储,变量是可变的,所以不用随时去分配空间,速度相对于String就会快;对于StringBuffer和StringBuffer两个类,在源码中由于StringBuffer中很多方法都被synchronized修饰,所以StringBuffer是线程安全的,也是由于这个原因,StringBuffer速度就相对于StringBuilder慢;
在我们操作比较少量的数据的时候可以使用String,如果数据在多个线程中共享,需要考虑到线程安全,可以使用StringBuffer;
以下为java中String常用的方法示例:
更多java学习方面的问题可以访问这个网页,,希望我的回答能帮到你。
还有个问题
实现类能是普通类吗?
追答实现类是指它是一个接口实现类 跟普通类略有不同 接口里的方法必须在实现类中实现
追问我想知道的是实现类是不是普通类
还是抽象类
追答是普通类
追问普通类重写了抽象方法后是不是就变成了抽象类了
重写那些抽象方法的时候不加abstract修饰吗?
追答这两天有点忙 不好意思 重写抽象方法时 就是把抽象方法实现的一个过程 重写后就是一个普通方法了 类也还是普通类.
数组封装类吗?
属于封装类吗?