一、Java中字符串indexof() 的使用方法
Java中字符串中子串的查找共有四种方法(indexof())
indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。
如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。
Java中字符串中子串的查找共有四种方法,如下:
1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。
2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。
4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
private static void testIndexOf() {
String string = "aaa456ac";
//查找指定字符是在字符串中的下标。在则返回所在字符串下标;不在则返回-1.
System.out.println(string.indexOf("b"));//indexOf(String str);返回结果:-1,"b"不存在
// 从第四个字符位置开始往后继续查找,包含当前位置
System.out.println(string.indexOf("a",3));//indexOf(String str, int fromIndex);返回结果:6
//(与之前的差别:上面的参数是 String 类型,下面的参数是 int 类型)参考数据:a-97,b-98,c-99
// 从头开始查找是否存在指定的字符
System.out.println(string.indexOf(99));//indexOf(int ch);返回结果:7
System.out.println(string.indexOf('c'));//indexOf(int ch);返回结果:7
//从fromIndex查找ch,这个是字符型变量,不是字符串。字符a对应的数字就是97。
System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex);返回结果:6
System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex);返回结果:6
//这个就是灵活运用String类提供的方法,拆分提供的字符串。
//String s = "D:\\Android\\sdk\\add-ons";
//System.out.println(s);
//while (s.lastIndexOf("\\") > 0) {
// s = s.substring(0, s.lastIndexOf("\\"));
// System.out.println(s);
//}
}
二、java Random.nextInt()方法
public int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
import java.util.Random;
import org.junit.Test;
public class RandomDemo {
@Test
public void Demo(){
Random rnd = new Random();
int code = rnd.nextInt(8999) + 1000;
System.out.println("code:"+code);
}
@Test
public void Demo1(){
Random r = new Random();
int nextInt = r.nextInt();
Random r1 = new Random(10);
int nextInt2 = r1.nextInt();
System.out.println("nextInt:"+nextInt);
System.out.println("nextInt2:"+nextInt2);
}
/**
* 生成[0,1.0)区间的小数
*
*/
@Test
public void Demo2(){
Random r = new Random();
double d1 = r.nextDouble();
System.out.println("d1:"+d1);
}
/**
* 生成[0,5.0)区间的小数
*
*/
@Test
public void Demo3(){
Random r = new Random();
double d2 = r.nextDouble()* 5;
System.out.println("d1:"+d2);
}
/**
* 生成[1,2.5)区间的小数
*
*/
@Test
public void Demo4(){
Random r = new Random();
double d3 = r.nextDouble() * 1.5 + 1;
System.out.println("d1:"+d3);
}
/**
* 生成任意整数
*
*/
@Test
public void Demo5(){
Random r = new Random();
int n1 = r.nextInt();
System.out.println("d1:"+n1);
}
/**
* 生成[0,10)区间的整数
*
*/
@Test
public void Demo6(){
Random r = new Random();
int n2 = r.nextInt(10);
int n3 = Math.abs(r.nextInt() % 10);
System.out.println("n2:"+n2);
System.out.println("n3:"+n3);
}
/**
* 生成[0,10]区间的整数
*
*/
@Test
public void Demo7(){
Random r = new Random();
int n3 = r.nextInt(11);
int n4 = Math.abs(r.nextInt() % 11);
System.out.println("n3:"+n3);
System.out.println("n4:"+n4);
}
/**
* 生成[-3,15)区间的整数
*
*/
@Test
public void Demo8(){
Random r = new Random();
int n4 = r.nextInt(18) - 3;
int n5 = Math.abs(r.nextInt() % 18) - 3;
System.out.println("n4:"+n4);
System.out.println("n5:"+n5);
}
}
三、java中charAt()方法的使用
public charcharAt(int index)
charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法.
charAt()方法返回指定索引位置的char值。索引范围为0~length()-1.
如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符.
public static void main(String[] args) {
String s = "bejing welcome you";
System.out.println(s.charAt(1)); //e
System.out.println(s.charAt(5)); //g
System.out.println(s.charAt(15)); //y
}
四、BigDecimal加减乘除运算
使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal。
在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。
public static double add(double v1,double v2)
public static double sub(double v1,double v2)
public static double mul(double v1,double v2)
public static double div(double v1,double v2)
public static double div(double v1,double v2,int scale)
public static double round(double v,int scale)
import java.math.BigDecimal;
/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/
public class Arith{ //默认除法运算精度
private static final int DEF_DIV_SCALE = 10; //这个类不能实例化
private Arith(){
}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double add(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1,double v2){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1,double v2){
return div(v1,v2,DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
if(scale<0){
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v,int scale){
if(scale<0){
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
};