Java String 字符串处理疑点再解
华仔在网上阅过诸多关于String的文章,仍是有疑在心中不解,遂寻Jack求惑。
Jack道:何惑不解?拿与我面前便可。
华仔手于心,却拿不出String这玩意...Jack貌如大师一叹,将String呈于他面前。
“String中文名为'字符串',如此而已;身之血液,能量之载体。”
1、简述String与StringBuffer的异同。
一个是非可变对象,另一个是可变对象,StringBuffer于内存堆,并由来自常量池的String任意拼装,无论何时何地。
2、String与char[]、byte[]的联系,如何转换。
String testStr = "test中";
char[] c = testStr.toCharArray(); //注:char为16位‘中’可以存放,此转换是安全的.
byte[] b=testStr.getBytes(); //注:byte位8位,此转换存在潜在威胁.
String是为char组成的串,byte则为该串的ASCII码.
3、详细说明以下语句在JVM中的处理过程。
1.StringBuffer str=new StringBuffer(“TEST”);
2.str+=”DEMO”;
首先检测常量池是否有"TEST",否,则构造一个String:"TEST";将"TEST"再用于构造str,之后会报错于句2;
其实以上语句不会通过编译.
注: StringBuffer也是为char组成的串,只是该串在StringBuffer改变时长度进行扩充,而String改变时其中的char[] 是重新构造,这就是 变与不变之谜啦.
4、如何设置字符串的字符集编码。
String charSetStr=new String(b,"GBK");
b=charSetStr.getBytes();
charSetStr=new String(b,"UTF-8");
好了,谁可以告诉华仔,以下代码段①,②哪个效率更优呢,Jack?
I、
①、String result=”hello”+”world”;
②、StringBuffer result=new String().append(“hello”).append(“world”);
II、
①、StringBuffer result= new StringBuffer();
for(int i=0;i<100000;i++){
result.append(“hello”);
}
②、StringBuffer result= new StringBuffer(10);
for(int i=0;i<1
相关文档:
1.接口的方法默认都是public 的,方法只能是public&abstract,方法的实现不能小于接口方法的visibality.
接口中的域默认是public static final的。
一个类可以实现很多个接口。
2.内部类具有外围类(enclosing class)的所有元素的访问权。
3.匿名类如果希望是有一个在其外部定义的对象, ......
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.URL;
import java.util.*;
public class Typewriter4 extends Applet implements Runnable
{
AudioClip hit, cr, ding ;
boolean alreadyRun = false,
& ......
总的格式是:
%[argument_index$][flags][width][.precision]conversion
例如:
%2$-5.2s
//2$:取第二个参数
//-: 指定为左对齐,默认右对齐
//5:最大输出宽度为20,不够会补空格,实际若超过则全部输出
//.2:在此表示输出参数2的最大字符数量,如果是浮点数字,则表示小数部分显示的位数
//s :表示输入参数是字 ......
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个Strin ......