一、String类
1、String 类的特点
(1)、 Java语言中用于描述最常见的字符串数据的对象。
(2)、 字符串数据都是一个对象。
(3)、 字符串数据一旦初始化就不可以被改变了。双引号表示的都是字符串常量。
(4)、 字符串对象都存储在常量池中。 字符串常量池。
2、String类中常用的方法
equals():判断两个字符串的值是否相同。
length():返回此字符串的长度。
indexOf():返回指定字符在此字符串中第一次出现处的索引。
substring():返回一个字符串的子字符串。
getBytes():字符串转化为字节数组。
toCharArray():字符串转化为字符数组。
toLowerCase():把字符串转换成小写。
toUpperCase():把字符串转换成大写。
split(String regex):根据指定的字符串把一个字符串分割成一个字符串数组。
String trim(): 去除字符串的前后空格。
3、StringBuffer:字符串缓冲区。
特点:
缓冲区就是用来缓存数据,意味着它是一个容器。该容器的长度是可变的。 提供了对容器中内容的操作的方法(最多无外乎四种:增删改查.)该缓冲区中可以添加多种类型的元素,基本类型和引用类型。 无论怎么样的改变容器中的数据,最终要使用结果,还是必须要将其转成字符串,使用toString方法。
常用方法:append:添加
inset:插入
练习代码:
public class stringbuffertest {
public static void main(String[] args) {
StringBuffer sb=new StringBuffer();
sb.append('a'+",");
sb.append("abc"+",");
sb.append(1+",");
sb.insert(1, "abcde");
System.out.println(sb.toString());
}
}
4、StringBuilder
jdk1.5版本出现了一个新的字符串缓冲区。功能和stringBuffer一模一样。
区别:
StringBuffer是线程安全的。
StringBuilder是线程不安全的。为了提高效率。 因为不用判断同步锁。
对于容器而已,被多线程操作,容器出现安全问题。因为 一个线程负责添加,一个线程负责删除,因为线程的随机性就会出现安全问题。
加锁,一个线程在执行容器中的内容时,其他线程不可以执行。 所以凡是可以操作容器数据的方法,都需要明确这个锁。每调用一次操作容器的方法(添加,删除,)都需要判断这个锁。 对于多线程而言,安全了,但是效率低。
对已单线程而言,不涉及安全,但是效率低。所以,对于线程提供了StringBuilder。不需要同步的缓冲区。
实际开发时,建议使用StringBuilder,只有在多线程时,才使用StringBuffer。
升级:
1,简化书写。
2,提高效率。
3,提高安全性。
5、StringBuffer和数组容器的区别?
(1)、数组容器是固定长度的。
StringBuffer是可变长度的。
(2)、数组容器一旦初始化就明确了元素的类型。
StringBuffer可以存储任意类型。包括基本和引用。
(3)、数组存储完元素可以对元素进行操作(通过角标)。
StringBuffer存储完元素后,都会变成字符串,只能用字符串的方法来操作。
二、基本数据类型包装类
1、由来: 想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象。因为在对象描述中就可以定义更多的属性和行为对该基本类型数据进行操作。
2、8种基本数据类型对应的对象类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
3、几种常见的转换
(1)、基本类型数据--->字符串。
1,基本数据类型对象包装类中的方法 static String toString(基本类型);
2,String类中的方法 static String valueOf(基本类型);
3,基本类型数据+”“
(2)、字符串--->基本类型数据。
基本类型 参数,字符串。
基本类型 parse基本类型类名(是基本类型格式的字符串)
(3)、进制转换
十进制-->其他进制。
二进制:static String toBinaryString(int);
十六进制 static String toHexString(int);
八进制 static String toOctalString(int);
其他进制-->十进制。
int parseInt(intString,radix);
(4)、基本数据类型值和基本类型数据对象之间的转换。
1、使用构造函数。即可以接收基本数值,也可以接收基本数值的字符串形式。
2、可以使用基本类型对象中的方法。 static Integer valueOf(int)。
3、基本类型的对象--->基本数据类型数值。int intValue()。
练习代码:
public class changedemo {
public static void main(String[] args) {
// int --> String
int num = 10;
String s=inttostring(num);
System.out.println(s);
//Integer --> int
int num1=integertoint();
System.out.println(num1);
//int –> Integer
int num3 = 10;
inttointeger(num3);
// String -->int
String s1 = "10";
int r2=stringtoint(s1);
System.out.println(r2);
}
public static int stringtoint(String s1) {
// TODO Auto-generated method stub
// int num = Integer.parseInt(s1);
Integer i = new Integer(s1);
int num1= i.intValue();
return num1;
}
public static void inttointeger(int num3) {
// TODO Auto-generated method stub
Integer i = new Integer(num3);
// Integer i = Integer.valueOf(num3);
System.out.println(i.toString());
}
public static int integertoint() {
// TODO Auto-generated method stub
Integer i = new Integer(10);
int num = i.intValue();
return num;
}
public static String inttostring(int num) {
// TODO Auto-generated method stub
String s = String.valueOf(num);
// String s =num +"";
// String s = Integer.toString(num);
return s;
}
}