使用Java在线编程常用且实用的方法
一、字符串处理
1、字符串截取 substring(i);截取下标从i开始所有字符,返回String类型; substring(i,j);截取下标从i开始到j,但不包含j,返回String类型。测试如下: 2、字符串分割 split();括号里填写分隔符,一些分隔符如"."、"["、"]“等分隔时需要转义,即在前面加上”\ “;若要分割的字符串有多个分隔符则用”|“来连接;返回类型为String类型的数组。测试如下: 注意: (1)如果分隔符出现在字符串的首部,结果会怎样呢?来测试一下: 可以看到,如果分隔符出现在字符串的首部,它将一个空格即” “作为数组的第一个元素。 (2)如果要分割的字符串中有连续的空格(” )或Tab键(" “),若再用空格(” “)作为分隔符,则达不到理想的效果,此时应采用”\s+"作为分割符,测试如下: 3、字符串匹配 说到字符串匹配,我们首先想到的是KMP算法,这里不讲解该算法,有兴趣的可以自己去查询资料。这里要介绍的是Java内置的方法-------contains(),笔者猜想该方法的实现基于KMP算法的思想,来看看测试案例: 该方法返回值为boolean类型,boolean rs = str1.contains(str2);如果字符串str1包含字符串str2,rs = true,否则rs = false (笔者曾经刷到过字符串匹配的题,那时还不知道Java有这样的函数,笔者就一股脑的把整个KMP算法给实现了,提交过去通过了,感觉很有成就感(写了一大堆代码),当我看了别人提交的代码后,(心里WC,还有这操作),别人就调用了contains方法,几行代码就搞定。)
二、基本类型转换
1、int类型与String类型互转 (1)、int类型转为String类型: String s = String.valueOf(i);这里i为int类型(其中i可为char、char[]、double、float等基本类型,这里只举例int类型) String s = Integer.toString(i);这里的i只能为int类型了,应为前面指定了Integer,如果想要其他类型转为String,需修改Integer (2)、String类型转为int类型: int i = Integer.valueOf(s);s为String类型 int i = Integer.parseInt(s);s为String类型 2、char类型与String类型 (1)、将整个字符串转为char数组: char[] c = s.toCharArray(); (2)、将字符串的某个字符转为char: char cc = s.charAt(i);其中i为字符串s的下标,且i>=0&&i<s.length() (3)、将char数组转为String String s = new String(ch);其中ch为char数组
三、进制转换
1、十进制转二进制 String s = Integer.toBinaryString(i); i为int类型,与Integer对应 2、十进制转任意进制 String s = Integer.toString(i,x); i为int类型,与Integer对应,x为要转的进制 3、任意进制转十进制 int i = Integer.valueOf(s,x); s为String类型,x表示进制,注意s为必须由x进制表示的字符串
四、排序与查找
1、快速排序 Arrays.sort(int[] a); 将数组a升序,调用该方法需导入包,即import java.util.Arrays; 2、二分查找 我们知道二分查找要求数组的数必须是有序的。 int index = Arrays.binarySearch(a, key); a为数组,key为要查找的数。如果能查到,则返回key在数组a的下标(从0开始),否则返回一个负数,且这个负数的绝对值为第一个比key大的元素在数组a的下标加1(此时,下标相当于从1开始),如果key大于数组a的所有元素,则这个负数的绝对值为数组a的大小加1。如果key小于数组a的所有元素,则直接返回-1
