字符串对象 在Java中,字符串本质是打包字符数组的对象,是java.lang.string类的实例。同样地,前面讨论过的对象操作特性,字符串也都拥有,不过在Java中基于效能考虑,给予字符串某些特别且必须注意的性质. 字符串基础 由字符组成的文字符号称为字符串。例如," Hello"字符串由'H'、'e'、'l'、'l'、'o'五个字符组成,在某些程序语言中,字符串是以字符数组的方式存在,然而在Java中,字符串是 Java.lang.String实例,用来打包字符数组。可以用""包括一串字符来建立字符串:
String name="dram"
//建立 String实例
System.out.println(name);
//显示 justin
System. out. println(name.length());
/显示长度为6
System. out. println(name.charAt (0));
//显示第一个字符j
System. out. println (name. toUpperCase());
//显示 JUSTIN
复制代码
由于字符串在Java中是对象,自然拥有一些可操作的方法,像是这个程序片段中所示范的,可以使用 Length取得字符串长度,使用 charAt()指定取得字符串中某个字符,索引从0开始,使用 toUpperCase()将原本小写的字符串内容转为大写的字符串内容.如果已经有一个char数组,也可以使用new来创建 string实例。例如:
char[] cs={'d','r','a','m'};
String name=new String(cs);
复制代码
也可以使用 string的 toCharArray()方法,以将字符串以char数组返回。 在Java中可以使用+运算来连接字符串。在JDK5之前并没有 system.out. printf()方法,所以常常看到文字示范简单的输出时会这么撰写:
string name="dram";
system.out. println("你的名字"+name);
复制代码
可以将字符串转换为整数、浮点数等基本类型,可以使用的剖析方法将字符串剖析为基本类型。 字符串特性 不同的程序语言,会有一些相类似的语法或元素,例如程序语言都会有if、for 类的语法,也大都有字符、数值、字符串之类的元素,然而各种程序语言解决的问题不也因此在这些类似语法或元素中,各程序语言会有细微、重要且不容忽视的特性。在习程序语言时,不得不慎。 以Java的字符串来说,就有一些必须注意的特性: 1.字符串常量与字符串池 以下会显示true false
String n1="dram";
String n2="dram";
String n3=new String("dram");
String n4=new String("dram");
System.out.print(n1==n2);
System.out.print(n3==n4);
复制代码
在Java中为了效率考虑,以包括的字符串,只要内容相同(序列、大小写相同),无论在程序代码中出现几次,JM都只会建立一个 String实例并在字符串池( String Pool)中维护。在上面这个程序片段的第一行,JVM会建立一个 String实例放在字符串池中,并给n1参考,而第二行则是让n2直接参考至字符串池中的 string实例,既然你写死了字符串内容,基于节省内存考虑,自然就不用为这些字符串常量分别建立 String实例。 java中字符串建立后不可更改对象中内容
string n1="dram";
string n2=n1+"zhe";
复制代码
n2已经改变了,反编译:
String s="dram";
String s1=(new StringBuilder()).append(s).append("zhe").toString;
复制代码
+连接字符串会变成java.lang.StringBuilder对象,用append()方法附加字符串。所以不要将+用在重复性循环语句中,会造成效能负担。例如:
for(int i=0;i<=100;i++) {
System.out.printf("%d+",i);
}
复制代码
在循环中不断输出效率很低
String text="";
for(int i=0;i<=100;i++) {
text=text+i+"+";
}
System.out.println(text);
复制代码
而这个程序用+连接,有了不断产生新对象的问题。
StringBuilder bd=new StringBuilder();
for(int i=0;i<=100;i++) {
bd.append(i).append('+');
}
System.out.println(bd.toString());
复制代码
StringBuilder每次调用append都返回给原来对象,只产生一个对象。减少效能负担。
String s1="he"+"llo";
String s2="hello";
System.out.println(s1==s2);//true
复制代码
执行结果为true,J编译程序虽然新建了对象,但是认为你已经写死了String s1="he"+"llo";那么你要的就是hello,所以true。 字符串编码 Eclipse运行在简体中文下建立.java用GB2313编码,NetBeans默认UTF-8编码。JVM会转为Unicode编码表示。可以指定用何种编译读取.java:>javac -encoding UTF-8 Main.java