Java 小知识点集合(一)

一、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();   
}   
};  
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容