1.String 类是不可被继承的
String s=new String ();
String s1=""; //多用
两者是相同的
2.String s="abc" //s 是一个类类型的变量,"abc"是一个对象 ,字符串是一个特殊的对象
//字符串最大的特点:一旦被初始化,就不能改变了
3.String s1=new String("abc");
String s2="abc";
s1 和s2有什么区别?
s1在
内存中只有一个对象
s2在内内存中有两个对象
4.字符替换
String s="Hello.
java";
String s1=s.replace('a','A');
System.out.print("s="+s);
System.out.print("s1="+s1);
打印s的结果还是Hello.
java打印s1的结果是Hello.
java为什么s的值没有改变?
答:字符串一但被赋值了,则不可改变的, 改变的只是.
5.切割(分隔符)
String []split();
6.字串
String s="hello.
java"
System.out.print(s.substring(4));//从指定数组下标位置到字符串结尾
System.out.print(s.substring(2, 4));//包含头,但不包含尾。即从指定数组的2下标到4下标的前一个结束
7.转换
7.1 将字符串转换成大写或者小写
String toUpperCase
7.2 去除字符串中的空格
trim();
7.3 比较字符串大小
String s="abc";
String s2="ABC";
System.out.println(s.compareTo(s2));
如果比较结果为一个正整数。则s >s2 ;
如果这两个字符串相等,则结果为 0
如果比较结果为一个负整数。则s >s2 .
8.去除空格的实例去除两边的空格
8.1 String str=" we are ";
public static String Trim(String str)
{
int start = 0; int end =str.length() - 1;
while (start < end ;; str.charAt(start) == ' ')
{ start++; }
while (str.charAt(end) == ' ')
{ end--; }
return str.substring(start, end + 1);
}
8.2 如何将单词与其它字符之间将多个空格转换成一个空格
String str1="we are boy hkaf 8888";
str1=str1.replaceAll(" {2,}", " ");//意思是说将出现2个或者是2个以上的空格替换成1个空格
System.out.println(str1);
8.3如何除去左边的空格
String s="
java com ";
System.out.println(s.substring(s.indexOf("j"), s.length()));
}
运行结果:
java com
9.如何将字符串反转
String s="上海好美"——>"美好海上"
char[] ch;
ch=s.toCharArray();
for(int j=s.length()-1;j>=0;j--){
System.out.print(ch[j]);
}
10.StringBuffer 字符串缓冲区
CURD
C ——>create
U——>update
R——>read
D——>delete
StringBuffer 和 StringBuilder
StringBuffer 线程同步的
www.atcpu.comStringBuilder 线程不同步(1.5才出现的)
如果是单线程的则选择 StringBuilder 因为可以提高效率
以后开发建议使用 StringBuilder
两者方法基本相同,区别在于一个有锁(同步),一个没有锁
11.基本数据类型包装类
byte Byte
short Short
int Integer
char Character
11. 1 把一个整数封装成对象好处体现在:最大值和最小值是个固定值,不需要刻意去记,Integer.MAX_VALUE
11 .2 基本数据类型最常见的用法就是基本数据类型和字符串之间的转换
(1) 基本数据类型装换成字符串最简单的方式:
基本数据类型+""
(2)专业转法:
Integer.toString(88);
(3)十进制转换成其他进制
toBinaryString();
toHexString();
toOctalString();
int num=Integer.paseInt("110",10) //将二进制转换成10进制
int num=Integer.paseInt("16",2) //将10进制转换成2进制
11.JDK1.5新特性只自动拆箱装箱机制
问:
Integer x=new Integer("888");
Integer y=new Integer (888);
x==y? false //两个不同的对象,所以指向的地址不同,当然是false了
x.equals(y)? true
JDK1.5升级后为了简化书写
可以直接写为:Integer x= 888;//=new Integer("888");
Integer x= 888;等号左边是数据类型,右边必然是对象,因为类类型变量必然指向对象
x=x+2 //x进行了自动拆箱,有对象变成基本数据类型,和2进行加法运算,在自动装箱赋给x
//拆箱原理x.Valueof(),当x为null时要进行判断,以为x为空时,不会调用Valueof方法
(2)Integer x=127
Integer y=127
x==y? //true 因为不同指向同一对象,
Integer m=128;
Integer n=128;
m==n? //false 以为对于JDK1.5的新特性来说,对于不在byte(-128 到 127)范围类的数值,它会从新开辟一个新空间
//而不会认为该数值已存在