String的转换相关方法2
字符串转换成其他的数据类型:
1、getByte(String s) 字符串转成字节数组 存在一个编码的过程
2、toCharArray(String s) 字符串转成字符数组
字符串转成其他形式的字符串
1、toUpperCase(String s) 将字符串转成大写的形式
2、toLowerCase(String s) 将字符串转成小写的形式
其他类型向字符串转换的方法 就是valueof方法
1、基本数据类型的直接可以使用该方法转换 例如:123 "123" 12.34 "12.34"
2、引用数据类型:可以直接调用toString方法转换
private static void test3_其他类型向字符串转换() {
int a = 123;
String str = String.valueOf(a);
System.out.println(str);
str = String.valueOf(1.0);
System.out.println(str);
}
private static void test2_字符串转成其他字符串的形式() {
String s = "abcA";
s = s.toUpperCase();
System.out.println(s);//全部转成大写
s = s.toLowerCase();
System.out.println(s);
}
private static void test1_字符串转换成其他类型() {
String s = "123";
byte[] bArr = s.getBytes();
//System.out.println(bArr.toString());//[B@7852e922
System.out.println(bArr[1]);//编码,看得懂->看不懂
char[] cArr = s.toCharArray();
System.out.println(cArr[0]);
}
String的其他常用方法
Trim[ ] 将调用字符串中的两侧空格删除,包含了转义字符
Replace(String olderStr,String newStr):将调用者中存在的字符串替换为新的字符串
Math
概述:1、就是封装了数学相关的功能;2、两个常量和很多方法;3、数学相关的内容在java只用到最简单的部分
相关的两个常量:E 自然对数的底数;PI圆周率
相关的常用方法:Math.XXX;
abs 取绝对值
cbrt 立方根 8--2
ceil 向上取整
floor 向下取整
round 四舍五入取整
min 两个数据的最小值
max 两个数据的最大值
pow 计算x的y次幂pow(2,3) = 8;
random 取随机数
System
概述:1、系统相关信息的类,可以通过这个类获取系统信息;2、封装了一些常量,都是与io流相关;3、封装了两个常用的方法 currentTimeMillis()、 gc()
常量:
System.in:系统的标准输入流 父类:inputStream,默认获取键盘输入的内容,可以使用多种方式对这个流进行加强Scanner ,转换流 缓冲流
System.out:系统的标准输出流 父类:PrintStream,可以直接打印我们的数据信息作为字符串,里面提供了print和println相关的很多方法
System.err :系统的标准错误流 父类:,可以将错误信息给输出,在eclipse中以红色的字体颜色输出,错误输出流是用的另外一个线程执行
常用的方法:
gc():垃圾回收的相关方法
作用:执行这个方法可以提高垃圾回收的效率
解释:不是每次调用这个gc方法就会回收垃圾只是提高回收的效率
gc方法不用经常调用,也会影响执行的效率
currentTimeMillis()
作用:获取当前系统时间
解释:1970年1月1日0时0分0秒到当前的时间
应用场景:可以测试当前代码的执行效率
StringBuilder(字符生成器,字符缓冲区)
概述:是一个可变的字符序列;
字符序列:就是字符排成一排 例如:String,字符数组,StringBuilder都是字符序列
可变的原因:
1、StringBuilder中的底层字符数组可以指向其他的数组引用。
2、在该类中提供了很多公开的帮助修改或者其他操作的方法我们可以使用这些方法来改变底层的字符数组。例如:delete,replace,append
构造方法
罗列:
1、StringBuilder() 不带参数的构造,可以生成一个默认大小的容器,没有字符内容,这个默认大小为16,如果空间用完可以申请更大的容量的空间,当前容量*2+2
2、StringBuilder(int capacity) 生成一个指定大小的容器用来存放字符序列。根据参数决定当前容器的大小
3、StringBuilder(String s) 生成一个自带内容的字符序列。这个容器的长度就是字符串长度+16
int capacity() 获取当前字符缓冲区的容量大小,向其中添加元素不会改变容量大小
常用的成员方法
添加相关的方法:
append(任意的数据类型);在本串上修改,返回值是原串,可以使用链式调用来提高开发效率
1、先将其他的数据类型转成字符串的形式再去添加;
2、添加数据到缓冲区末尾的位置
3、转换参数类型 使用的方法就是String.valueof
insert(插入的位置的索引,任意的数据类型)方法也是添加的方法
指定位置去插入相应的数据
注意事项:插入位置的索引只能是0开始到length-1这个范围之内,中间不能有空隙,如果往中间插入数据,其余的会自动后移
sb1.insert(0, 'z');
sb1.insert(1, 'z');
sb1.insert(2, 'z');
sb1.insert(3, 'z');
sb1.insert(2, 'q');
输出结果:
删除相关的方法
deleteCharAt(int index)删除指定位置的字符
delete(int start,int end)删除指定范围的字符序列
start包含,end不包含
替换和反转相关方法:
Replace(int start,int end,String str)指定范围替换内容,包含开头,不包含结尾
Reverse() 直接反转字符序列
StringBuilder和StringBuffer的区别
相同点:都是可变的字符序列,底层都是可以去操作字符数组完成变换,字符数组都可以去申请更大的缓冲区存储字符序列,都提供了相关的方法来操作底层数组,还有相同的构造方法
版本的不同:
1、StringBuffer jdk1.0
2、StringBuilder jdk1.5
线程安全问题:
1、StringBuffer是一个线程安全的字符序列,同步
2、StringBuilder线程不安全,不同步
执行效率:
1、StringBuffer虽然安全但是执行效率低
2、StringBuilder不安全但是执行效率高
String和StringBuilder在在作为实参时的区别
总结:String类型作为实参不会去修改引用,也无法修改其他空间中的局部变量,不会对其他的引用造成任何的影响。
StringBuilder作为实参有两种情况
总结:当Stringbuilder作为实参时 我们又在调用方法中创建一个新的对象。刚开始两个引用都指向了相同的对象,创建之后新的对象引用赋值给了s所以出现了两个不同的内存空间,也不会去影响彼此。
情况二:
就是在调用的方法中不去创建对象 直接对当前的引用进行操作,操作完成之后,主方法中的引用也会发生变化。就对当前引用造成影响。
基本数据类型的包装类
基本数据类型:四类八种
弊端:
1、只能表示一个数据,过于单一
2、超脱于Object继承关系之外,不好管理。
解决方法:可以将基本数据类型作为字段放在对象中,也能操作数据,便于继承体系的管理
都是将基本数据类型首字母大写,除了int和char
byte Byte
short Short
int Integer
long Long
boolean Boolean
char Charact
float Float
double Double
包装类都差不多,所以不用一一列举,以最常用的Integer举例
Integer
Integer构造方法
Integer(int i)
integer(String s)
//int-->integer
Integer i = new Integer(10);
System.out.println(i);
//string-->integer
Integer i1 = new Integer("666");
System.out.println(i1);
Integer中的成员方法
非静态的方法:
xxvalue(传递各种数据类型) 可以返回integer类型的值。
private static void test1_非静态方法() {
Integer i = new Integer(10);
int num = i.intValue();
double d = i.doubleValue();
System.out.println(num);
System.out.println(d);
}
静态方法:
数字转字符串相关的方法
toHexString(int i)16进制
toBinaryString(int i)2进制
toOctalString(int i)8进制
String Integer.toString(int i) 默认转换十进制
String Integer.toSrring(int i1,int i2) 指定进制转换;i1指定数字,i2指定进制
字符串转数字相关的方法
Integer.parseInt(String s)
Integer.parseInt(String s, int i) 可以指定进制转换
自动装箱拆箱
装箱:将int类型的数据作为参数 传递给包装类的构造方法的形参。
拆箱:获取包装类中字段的值xxxvalue方法来获取
自动装箱:直接可以将基本数据类型的值赋值给包装类;例如: integer i = 666;
自动拆箱:直接可以在我们包装类的基础上进行对基本数据类型的操作;例如: i =i/2;