java,二进制转换为十进制,valueof和parseInt的区别

来源:互联网 发布:做班服的软件手机 编辑:程序博客网 时间:2024/06/09 11:29

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 返回-1Test 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;}}
11000000192
-----------------------------------------------------------------------------------

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;}
494948484848484812432
------------------------------------------------------------------------------

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;}
11000000192

可见 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) + "");// /1int four = Integer.valueOf(str.charAt(0));// /49System.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); ///2int q = Integer.valueOf(2+"");System.out.println(q); ///2int 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 表示的整数必须合法,不然是会抛异常的。

 intintValue()
          以 int 类型返回该 Integer 的值。valueOf(String s )也是Integer类的静态方法,它的作用是将形参 s 转化为Integer对象,Integer对象就是基本数据类型int型包装类,就是将int包装成一个类,这样在很多场合下是必须的。Interger.valueOf("123")=Integer(123)这时候Integer(123)就是整数123的对象表示形式,它再调用intValue()方法,就是将123的对象表示形式转化为int基本数据123,所以,选择D


1 0