1. 程式人生 > >java,二進位制轉換為十進位制,valueof和parseInt的區別

java,二進位制轉換為十進位制,valueof和parseInt的區別

import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String[] args) {
		// System.out.println(convertToBinary(1828759744));
		// //String[] A={"1","1"}; ///3   這是string陣列
		String A = "11000000";
		// System.out.println(A.charAt(3)); ////4 返回A[2]
		// System.out.println(A.indexOf('5'));//3 A[3]=5,返回5的下標
		// System.out.println(A.indexOf(7)); ///// 無數字7 返回-1
		Test test = new Test();
		System.out.println(test.convertToDecimal(A));
		// System.out.println(Integer.valueOf("11000000",2));////192
		// System.out.print((int)Math.pow(2, 3));////8
	}

	private static String convertToBinary(int m) {
		List<Integer> list = new ArrayList<Integer>();
		StringBuffer sb = new StringBuffer();

		while (m / 2 != 0) {
			list.add(m % 2);
			m = m / 2;
		}
		list.add(m % 2);
		for (int i = list.size() - 1; i >= 0; i--) {
			sb.append(list.get(i));
		}

		return sb.toString();

	}// ////
	
//	 char charAt(int index) 
//     返回指定索引處的 char 值。 
	
//	static int parseInt(String s) 
//    將字串引數作為有符號的十進位制整數進行解析。 
	
//static int parseInt(String s, int radix) 
//    使用第二個引數指定的基數,將字串引數解析為有符號的整數。 
	
//	static Integer valueOf(int i) 
//    返回一個表示指定的 int 值的 Integer 例項。 
	
//	static Integer valueOf(String s) 
//    返回儲存指定的 String 的值的 Integer 物件。 
	
	private int convertToDecimal(String B) {
		double sum = 0;
		for (int i = 0; i < B.length(); i++) {
			 sum=sum+Integer.valueOf(B.charAt(i)+"")*Math.pow(2, B.length()-i-1);///valueOf(String s)   1  1  
			 System.out.println(Integer.valueOf(B.charAt(i)+""));////valueOf(String s) //  192 
			  
//			 sum=sum+Integer.valueOf(B.charAt(i))*Math.pow(2, B.length()-i-1); // valueOf(int i)  49  49  
//			 System.out.println(Integer.valueOf(B.charAt(i))); /// valueOf(int i)   //12432

//			  sum = sum + Integer.parseInt(B.charAt(i) + "")* Math.pow(2, B.length() - i - 1);///parseInt(String s)  1  1 
//			  System.out.println(Integer.parseInt(B.charAt(i) + ""));///  192
			 
			 // sum = sum + Integer.parseInt(B.charAt(i))* Math.pow(2, B.length() - i - 1);//Integer.parseInt(B.charAt(i))錯誤
		}

		return (int) sum;
	}
}
1
1
0
0
0
0
0
0
192
-----------------------------------------------------------------------------------
	private int convertToDecimal(String B) {
		double sum = 0;
		for (int i = 0; i < B.length(); i++) {
//			 sum=sum+Integer.valueOf(B.charAt(i)+"")*Math.pow(2, B.length()-i-1);///valueOf(String s)   1  1  
//			 System.out.println(Integer.valueOf(B.charAt(i)+""));////valueOf(String s) //  192 
			  
			 sum=sum+Integer.valueOf(B.charAt(i))*Math.pow(2, B.length()-i-1); // valueOf(int i)  49  49  
			 System.out.println(Integer.valueOf(B.charAt(i))); /// valueOf(int i)   //12432

//			  sum = sum + Integer.parseInt(B.charAt(i) + "")* Math.pow(2, B.length() - i - 1);///parseInt(String s)  1  1 
//			  System.out.println(Integer.parseInt(B.charAt(i) + ""));///  192
			 
			 // sum = sum + Integer.parseInt(B.charAt(i))* Math.pow(2, B.length() - i - 1);//Integer.parseInt(B.charAt(i))錯誤
		}

		return (int) sum;
	}
49
49
48
48
48
48
48
48
12432
------------------------------------------------------------------------------
private int convertToDecimal(String B) {
		double sum = 0;
		for (int i = 0; i < B.length(); i++) {
//			 sum=sum+Integer.valueOf(B.charAt(i)+"")*Math.pow(2, B.length()-i-1);///valueOf(String s)   1  1  
//			 System.out.println(Integer.valueOf(B.charAt(i)+""));////valueOf(String s) //  192 
			  
//			 sum=sum+Integer.valueOf(B.charAt(i))*Math.pow(2, B.length()-i-1); // valueOf(int i)  49  49  
//			 System.out.println(Integer.valueOf(B.charAt(i))); /// valueOf(int i)   //12432

			  sum = sum + Integer.parseInt(B.charAt(i) + "")* Math.pow(2, B.length() - i - 1);///parseInt(String s)  1  1 
			  System.out.println(Integer.parseInt(B.charAt(i) + ""));///  192
			 
			 // sum = sum + Integer.parseInt(B.charAt(i))* Math.pow(2, B.length() - i - 1);//Integer.parseInt(B.charAt(i))錯誤
		}

		return (int) sum;
	}
1
1
0
0
0
0
0
0
192

可見 valueOf(....+"")構成valueOf(string),返回字串的該位字元

valueOf(int)返回該位字元的ASCII

parseInt(....+"")構成parseInt(String)以十進位制返回該位字元

</pre><p style="color:rgb(54,46,43); font-family:Arial; font-size:13.63636302947998px; line-height:25.99431800842285px"><span style="color:rgb(0,0,0)"></span></p><pre code_snippet_id="1624414" snippet_file_name="blog_20160326_8_6994607" name="code" class="java">public class Test {
	public static void main(String[] args) {
		String str = "111";
		int one = Integer.parseInt(str);
		int two = Integer.valueOf(str); ////處理這個字串時沒有區別
		int one_1 = Integer.parseInt(str+""); /////  本身已經是sring型別,再加""也是string,且null的ascii為0,不起作用
		int two_1 = Integer.valueOf(str+"");
		// static Integer valueOf(int i)
		// 返回一個表示指定的 int 值的 Integer 例項。

		// static Integer valueOf(String s)
		// 返回儲存指定的 String 的值的 Integer 物件。
		for (int i = 0; i < str.length(); i++) {
			System.out.println(Integer.valueOf(str.charAt(i) + ""));
			System.out.println(Integer.valueOf(str.charAt(i)));

		}

		int three = Integer.valueOf(str.charAt(0) + "");// /1
		int four = Integer.valueOf(str.charAt(0));// /49
		System.out.println(one);
		System.out.println(two);
		System.out.println(one_1);
		System.out.println(two_1);
		System.out.println(three);
		System.out.println(four);
	}
}
//1
//49
//1
//49
//1
//49
//111
//111
//111
//111
//1
//49
		int p = Integer.valueOf(2);
		System.out.println(p); ///2
		
		int q = Integer.valueOf(2+"");
		System.out.println(q); ///2
		
		int k = Integer.valueOf('2');  ///char -> int ,向上轉型,按照Ascii輸出,
		System.out.println(k); ////50  
		
		int r = Integer.valueOf('2'+"");
		System.out.println(r); ////2  
		
		int m = Integer.valueOf('2'-'0');
		System.out.println(m);///2 
		
		int n = Integer.valueOf("1"); ////String原樣輸出
		System.out.print(n);////1

設有下面兩個賦值語句:
a = Integer.parseInt(“123”);
b = Integer.valueOf(“123”).intValue();
下述說法正確的是(  d  )。
A、a是整數型別變數,b是整數類物件。
B、a是整數類物件,b是整數型別變數。
C、a和b都是整數類物件並且值相等。  
D、a和b都是整數型別變數並且值相等。

詳細解析:
parseInt(String s )方法是類Integer的靜態方法,它的作用就是將形參 s 轉化為整數,比如:
Interger.parseInt("1")=1;
Integer.parseInt("20")=20;
Integer.parseInt("324")=324;
當然,s 表示的整數必須合法,不然是會拋異常的。

 int
          以 int 型別返回該 Integer 的值。
valueOf(String s )也是Integer類的靜態方法,它的作用是將形參 s 轉化為Integer物件,Integer物件就是基本資料型別int型包裝類,就是將int包裝成一個類,這樣在很多場合下是必須的。Interger.valueOf("123")=Integer(123)這時候Integer(123)就是整數123的物件表示形式,它再呼叫intValue()方法,就是將123的物件表示形式轉化為int基本資料123,所以,選擇D