parseInt和valueOf
。split
static int parseInt(String s) 將字符串參數作為有符號的十進制整數進行分析。 static Integer valueOf(int i) 返回一個表示指定的 int 值的 Integer 實例。 static Integer valueOf(String s) 返回保持指定的 String 的值的 Integer 對象。 從返回值可以看出他們的區別 parseInt()返回的是基本類型int 而valueOf()返回的是包裝類Integer Integer是可以使用對象方法的 而int類型就不能和Object類型進行互相轉換 實戰說明(加深) 例1: int i1 = Integer.parseInt(36); int i2 = Integer.parseInt(36); int i3 = Integer.valueof(36); int i3 = Integer.valueof(36); 例2: int i1 = Integer.parseInt(236); int i2 = Integer.parseInt(236); int i3 = Integer.valueof(236); int i4 = Integer.valueof(236); 分別運行一下,可以發現例1,i1==i2,i3==i4,但是例2中i1==i2 ,而i3==i4 并不成立,這是因為parseInt返回的是一個有符號的Integer數值,而Valueof返回是一個實例,
更根本原因是對象池中數字是一個8bit有符號型,也就是說,數字大小在-128--127之內,valueof對于相同的數字返回的id是一致的,但是超過了這個范圍,就會新開辟一塊區域,
這就導致例2的情況出現,所以在比較大小之內是,需謹慎行事
http://blog.sina.com.cn/s/blog_76671eeb0100ui23.html
split
http://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.html
在java.lang包中有String.split()方法,返回是一個數組
我在應用中用到一些,給大家總結一下,僅供大家參考:
1、如果用“.”作為分隔的話,必須是如下寫法,String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");
2、如果用“|”作為分隔的話,必須是如下寫法,String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");
“.”和“|”都是轉義字符,必須得加"\\";
3、如果在一個字符串中有多個分隔符,可以用“|”作為連字符,比如,“acount=? and uu =? or n=?”,把三個都分隔出來,可以用String.split("and|or");
使用String.split方法分隔字符串時,分隔符如果用到一些特殊字符,可能會得不到我們預期的結果。?
我們看jdk doc中說明??
public String[] split(String regex)
?Splits this string around matches of the given regular expression.?
參數regex是一個 regular-expression的匹配模式而不是一個簡單的String,他對一些特殊的字符可能會出現你預想不到的結果,比如測試下面的代碼用豎線 | 分隔字符串,你將得不到預期的結果
?
String[] aa = "aaa|bbb|ccc".split("|");//String[] aa = "aaa|bbb|ccc".split("\\|"); 這樣才能得到正確的結果for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa[i]); }?
用豎 * 分隔字符串運行將拋出java.util.regex.PatternSyntaxException異常,用加號 + 也是如此。
String[] aa = "aaa*bbb*ccc".split("*");//String[] aa = "aaa|bbb|ccc".split("\\*"); 這樣才能得到正確的結果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa[i]); }?
顯然, + * 不是有效的模式匹配規則表達式,用"\\*" "\\+"轉義后即可得到正確的結果。
"|" 分隔串時雖然能夠執行,但是卻不是預期的目的,"\\|"轉義后即可得到正確的結果。
還有如果想在串中使用"\"字符,則也需要轉義.首先要表達"aaaa\bbbb"這個串就應該用"aaaa\\bbbb",如果要分隔就應該這樣才能得到正確結果,
String[] aa = "aaa\\bbb\\bccc".split("\\\\");package javabasi;import java.util.Scanner;/*** 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。* @author dlmu**/ public class SumA {public static void main (String [] args){Scanner sc = new Scanner(System.in);String str = sc.next();String[]number = str.split("\\+");int sum = 0;for (int i = 0; i < str.length(); i++){sum = sum + Integer.parseInt(number[i]);}System.out.println(sum);}} 2+22+222+2222+22222
提示異常,找不到錯誤 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
?? ?at javabasi.SumA.main(SumA.java:18) 找到錯誤了,是因為for循環中應該是number.length,因為已經把str用split分開,將數據存儲到number中了。 有錯誤不可怕,要一步一步調試錯誤。調試可以先用錯誤提示和debug定位,定位到具體細節再用System.out.println()逐句輸出,逐個修正
?
?轉載于:https://www.cnblogs.com/fthjane/p/4782923.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的parseInt和valueOf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL 5.6x开启慢查询日志
- 下一篇: ucosII移植要修改的文件