第五章 indexOf()方法、split方法、包装类
1.Java中indexOf()方法
①indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
②indexOf(String str, int index): 返回从index位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
String str = "01234567890123456789";
System.out.println(str.indexOf("123"));//1
System.out.println(str.indexOf("123",5));//11
2.split方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
①按空格分开
String a = "hello world";
String[] s1 = a.split(" ");
System.out.println(Arrays.toString(s1));
//结果是:[hello, world]
②按 | 隔开
String a="西安市|北京市|上海市|成都市";
String[] s2=a.split("\\|");
System.out.println(Arrays.toString(s2));
//结果是:[西安市,北京市,上海市,成都市]
③按*隔开
String a="西安市*北京市*上海市*成都市";
String[] s3=a.split("\\*");
System.out.println(Arrays.toString(s3));
//结果是:[北京, 北京市, 海淀区, 科技大厦]
④按@隔开
String a="西安市@北京市@上海市@成都市";
String[] s4=a.split("@");
System.out.println(Arrays.toString(s4));
//结果是:[西安市,北京市,上海市,成都市]
⑤多个标记隔开
String a="西安市^北京市@上海市#成都市 深圳市";
String[] s5=a.split("\\^|@|#| ");
System.out.println(Arrays.toString(s5));
//结果是:[西安市,北京市,上海市,成都市,深圳市]
3.Integer.toBinaryString()和Integer
(1)Integer.toBinaryString()
他的作用是把一个10进制数转为32位的2进制数。同时对负数,会用补码表示。
//将十进制数转成字符串,例如n=5 ,s = "101"
String s = Integer.toBinaryString(n) ;
(2)Integer
是一个整数对象,就像String,而int是基本数据类型(整数),所以Integer.parseint()就是把整型对象Integer转换成基本数据类型int(整数)。
①pareInt(String s)
将字符串s转换为十进制的数字,默认为十进制。
public static void main(String[] args) {
int num=Integer.parseInt("100");
System.out.println(num);
}
②pareInt(String s,int redix)
radix代表转换的进制,不写默认为十进制。
public static void main(String[] args) {
int num=Integer.parseInt("100",16);
System.out.println(num);
}
4.包装类的使用
Java提供了8种基本数据对应的包装类,使得基本数据类型的变量具有类的特征。
Integer 内部定义了IntegerCache结构,IntegerCache中定义了Integer[] ,保存了从-128~127范围的整数,如果我们使用了自动装箱模式,给Integer赋值的范围在-128~127范围内时,可以直接使用数组中的元素,不要再去new了。目的:提高效率。
①/基本数据类型—>包装类:调用包装类的构造器
//基本数据类型---包装类:调用包装类的构造器
@Test
public void test1() {
int num1=10;
Integer in1=new Integer(num1);
System.out.println(in1.toString());
Integer in2=new Integer("123");
System.out.println(in2.toString());
//报异常:Integer in3=new Integer("123abc");
Float float1=new Float(12.3f);
Float float2=new Float("12.3");
System.out.println(float1);
System.out.println(float2);
Boolean boolean1=new Boolean(true);
Boolean boolean2=new Boolean("tRue");
System.out.println(boolean2);
Boolean boolean3=new Boolean("true123");
System.out.println(boolean3);
Order order=new Order();
System.out.println(order.isMale);//false
System.out.println(order.isFemale);//null
②包装类—>基本数据类型:调用包装类的xxxValue
//包装类---基本数据类型:调用包装类的xxxValue
@Test
public void test2() {
Integer in1=new Integer(12);
int i1=in1.intValue();
System.out.println(i1+1);
Float float1=new Float(12.3);
float f1=float1.floatValue();
System.out.println(f1+1);
}
③新特性:自动装箱与自动拆箱
//新特性:自动装箱与自动拆箱
@Test
public void test3() {
//自助装箱:基本数据类型---包装类
int num1=10;
Integer in1=num1;
boolean b1=true;
boolean b2=b1;
//自动拆箱:包装类---基本数据类型
System.out.println(in1.toString());
int num3=in1;
}
④基本数据类型、包装类—>String
//基本数据类型、包装类---String
@Test
public void test4() {
int num1=10;
//方式一:连接运算
String str1=num1+"";
//方式二:调用String的 valueOf(Xxx xxx)
float f1=12.3f;
String str2=String.valueOf(f1);
Double double1=new Double(12.4);
String str3=String.valueOf(double1);
System.out.println(str2);
System.out.println(str3);
}
⑤String—>基本数据类型、包装类:调用包装类的parseXxx()
//String---基本数据类型、包装类:调用包装类的parseXxx()
@Test
public void test5() {
String str1="123";
Integer in1=Integer.parseInt(str1);
System.out.println(in1+1);
//Boolean只要字符串不是true,它就认为是false
String str2="boolean";
Boolean boolean1=Boolean.parseBoolean(str2);
System.out.println(boolean1);
}