一.String类的定义
String类也是一个引用类型,存储字符串。而且自带了若干方法,操作字符串很方便。所以记录一下关于String类的一些知识。
以下是一个例子:
public class StringTest {
public static void main(String[] args)
{
//标准的字符串定义
String str1 = new String("hello");
System.out.println(str1);
//简化定义
String str2 = "world";
System.out.println(str2);
}
}
由于String类比较常用,所以一般都采用简化的定义方式。
String类分析:
public class StringTest2 {
public static void main(String[] args)
{
String str1 = "hello";
String str2 = "hello";
String str3 = "hell" + "o";
System.out.println(str1 == str2);//true
System.out.println(str1 == str3);//true
System.out.println(new String("hello") == new String("hello"));//false
String str4 = "hell";
String str5 = str4;
System.out.println(str4 == str5);//true
str4 += "o";
System.out.println(str4 == str5);//false
System.out.println(str4 == "hello");//false
System.out.println(str4.equals("hello"));//true
}
}
结果见注释。
要点:
1.同一字符串在内存中只保存一份,str1,str2指向的是内存中的"hello",只是两个不同的引用型变量,并不是有两个字符串。
2.String类有9种构造方法。详细查看帮助文档。在定义时,如果字符串中有“+”, 会自动优化,合并成一个字符串。
3.new出来的字符串,即使内容相同,也是两个对象,地址不相同。
4.比较两个str ,== 判定的是地址是否相同。判断内容相同与否还是使用equals方法。
5.String类的内容是只读的,如果改变了,就成为了另一个对象。所以才会有System.out.println(str4 == str5);//false
二.String类的常用方法
public class StringTest3 {
public static void main(String[] args)
{
String str1 = "hello1";
String str2 = "hello2";
//charAt方法,根据索引项返回字符串中的字符
System.out.println(str1.charAt(0));//输出为h
//compareTo方法,按照字典法比较字符串,类似与c的strcmp
// str1 < str2 -1, str1 = str2 0 , str1 > str2 1
System.out.println(str1.compareTo(str2));//输出为-1
//startWith方法,endWith方法,查询字符串是否以某字串开头或结尾
System.out.println(str1.startsWith("hell"));//输出为true
System.out.println(str1.endsWith("1"));//输出为false
//indexOf,lastIndexOf方法,产寻字符串中是否有字串,返回个数
System.out.println(str1.indexOf("l"));//输出为2
System.out.println(str1.lastIndexOf("ell"));//输出为1
//subString方法,提取子串
System.out.println(str1.substring(0, 3));//输出为hel
//String类的静态方法,valueOf,可以将其他类型的变量转化为string类
int number = 123;
String str = String.valueOf(number);
System.out.println(str);
}
}
用法见注释。
要点:1.每个方法基本都有重载,对应不同的参数,有不同的操作。
2.还有诸如.length获取长度,concat()连接字符串,replace()字符串替换,toUpperCase(),toLowerCase()大小写转换等方法。
3.StringBuffer类,可以变长的字符串。
三.包装类
虽然java仍然有原始数据类型,但是对应的原始数据类型,java感觉功能不够强大,所以对应的原始数据类型java提供了一些包装类,提供一些方法,可以让我们对其进行操作。
public class Package {
public static void main(String[] args)
{
int value = 100;
//装箱
Integer valueobj = value;
System.out.println(valueobj);
// 拆箱
int result = valueobj;
System.out.println(result);
}
}
1.都是数据类型,为什么绕这么大弯子呢?就是把原始数据类型封装成一个对象之后,可以运行包装类的方法,从而达到对数据的操作。
2.包装类 = 基本数据类型 +方法字段
包装类如下图: