今天老師叫咱們用剛學的棧作個表達式求值,簡單來講就是作個計算器吧。首先先用了數組模擬作一個棧。而後問題就出現了,當我作一個字符是否符號時候,我用了這行代碼if(oper=="-" || oper=="*" || oper=="+"|| oper=="/"){}數組
單獨測試還好,由於後面沒有什麼空格什麼的。可是當放入數組裏面再拿出來的時候就會發現原來不管怎麼樣都會返回false,全部我發現本身對字符串的理解仍是不夠。而且由於我定義的棧,入棧(push)的方法傳進來的是String,創建符號棧和數字棧的時候就要相應的String和int的相互轉換。測試
首先看看int轉String:spa
主要有三種:orm
第一種方法:String s=123+""; //會產生兩個String對象對象
第二種方法:String s=String.valueOf(123); //直接使用String類的靜態方法,只產生一個對象字符串
第三種方法:String s = Integer.toString(123);//這裏也有兩個String對象源碼
而後再看String轉int:io
第一種方法:int i=Integer.parseInt(「123」); //直接使用靜態方法,不會產生多餘的對象,但會拋出異常
第二種方法:int i=Integer.valueOf(「123」);//Integer.valueOf(s) 至關於 new Integer(Integer.parseInt(s)),也會拋異常,但會多產生一個對象float
我查看了下第二種方法的源碼方法
public static Integer valueOf(String s) throws NumberFormatException
{
return new Integer(parseInt(s, 10));
}
這個方法調用了 int i = Integer.parseInt([String],[int radix]); radix表示你轉換數字是什麼進制,
Eg: int i=Integer.parseInt("1a35d",16); 輸出爲107357
固然其餘基本類型也能夠轉換成String,String也能夠轉換成boolean、float等類型。還有一個Date類型也是比較經常使用的。