您的位置:首页 > 产品设计 > UI/UE

java parseInt 和 valueof 的区别

2015-08-11 11:46 615 查看
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:

package helloworld;

public class Myexception {
public static void main(String[] args){
int  i1 = Integer.parseInt("256");
int  i2 = Integer.parseInt("256");
int  i3 = Integer.valueOf(256);
int  i4 = Integer.valueOf(256);
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}
结果:true true

示例2

package helloworld;

public class Myexception {
public static void main(String[] args){
Integer  i1 = Integer.parseInt("256");
Integer  i2 = Integer.parseInt("256");
Integer  i3 = Integer.valueOf(256);
Integer  i4 = Integer.valueOf(256);
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}


结果: false false

这是因为parseInt返回的是一个有符号的Integer数值,而Valueof返回是一个实例,更根本原因是对象池中数字是一个8bit有符号型,也就是说,数字大小在-128--127之内,valueof对于相同的数字返回的id是一致的,但是超过了这个范围,就会新开辟一块区域

示例3:

package helloworld;

public class Myexception {
public static void main(String[] args){
Integer  i1 = Integer.parseInt("56");
Integer  i2 = Integer.parseInt("56");
Integer  i3 = Integer.valueOf(256);
Integer  i4 = Integer.valueOf(256);
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}


结果:true false

示例4:

package helloworld;

public class Myexception {
public static void main(String[] args){
int   i1 = Integer.parseInt("56");
Integer  i2 = Integer.parseInt("56");
int   i3 = Integer.valueOf(256);
Integer  i4 = Integer.valueOf(256);
System.out.println(i1==i2);
System.out.println(i3==i4);
}
}


结果:true true

package helloworld;

public class Myexception {
public static void main(String[] args){
// 第一个不常用
Integer a_=new Integer(123);    // a_是Integer类型

int a=a_.intValue();                    // 转化为int类型
System.out.println(a);

String b = "123";    // 一个string
int b_=Integer.parseInt(b);    // 把string转化成int
System.out.println(b_);

int c_=123;
String c=String.valueOf(c_);
System.out.println(c);
}
}


123

123

123

综合示例:对一个对象数组排序

package helloworld;

import javax.naming.ldap.SortControl;

//对一个对象数组排序
public class Myexception {
public static void main(String[] args){
// java会自动对基本类型以及相应的包装类型进行转换
 Integer[] intArray ={new Integer(2),new Integer(4),new Integer(1)};
Double[] doubleArray ={new Double(3.4),new Double(1.3),new Double(-2.1)};
Character[] charArray = {new Character('a'),new Character('j'),new Character('r')};
String[] stringArray = {"tom","john","fred"};

sort(intArray);
sort(doubleArray);
sort(charArray);
sort(stringArray);

System.out.print("sort 1:");
printlist(intArray);
System.out.print("sort 2:");
printlist(doubleArray);
System.out.print("sort 3:");
printlist(charArray);
System.out.print("sort 4:");
printlist(stringArray);
}

//sort an  array of comparable objects
//因为上面都实现了comparable接口,因此可以直接使用compareto方法
//选择排序
public static void sort(Comparable[] list){
Comparable currentmin;
int currentminindex;
for(int i=0;i<list.length-1;i++)
{
currentmin=list[i];
currentminindex=i;
for(int j=i+1;j<list.length;j++)
{
if(currentmin.compareTo(list[j])>0)
{
currentmin=list[j];
currentminindex=j;
}
}

if(currentminindex!=i)
list[currentminindex]=list[i];
list[i]=currentmin;
}
}

public static void printlist(Object[] list){
for(int i=0;i<list.length;i++)
System.out.print(list[i]+" ");
System.out.println();
}
}


疑问点:在sort排序中函数参数为(Comparable[] list),而在printlist函数参数为(Object[ ] list)

直接利用java本身提供的对任意对象的数组进行排序的静态方法

package helloworld;

import javax.naming.ldap.SortControl;

//对一个对象数组排序
public class Myexception {
public static void main(String[] args){
Integer[] intArray ={new Integer(2),new Integer(4),new Integer(1)};
Double[] doubleArray ={new Double(3.4),new Double(1.3),new Double(-2.1)};
Character[] charArray = {new Character('a'),new Character('j'),new Character('r')};
String[] stringArray = {"tom","john","fred"};

java.util.Arrays.sort(intArray);
java.util.Arrays.sort(doubleArray);
java.util.Arrays.sort(charArray);
java.util.Arrays.sort(stringArray);

System.out.print("sort 1:");
printlist(intArray);
System.out.print("sort 2:");
printlist(doubleArray);
System.out.print("sort 3:");
printlist(charArray);
System.out.print("sort 4:");
printlist(stringArray);
}

//sort an  array of comparable objects
//因为上面都实现了comparable接口,因此可以直接使用compareto方法
//选择排序
/* public static void sort(Comparable[] list){
Comparable currentmin;
int currentminindex;
for(int i=0;i<list.length-1;i++)
{
currentmin=list[i];
currentminindex=i;
for(int j=i+1;j<list.length;j++)
{
if(currentmin.compareTo(list[j])>0)
{
currentmin=list[j];
currentminindex=j;
}
}

if(currentminindex!=i)
list[currentminindex]=list[i];
list[i]=currentmin;
}
}*/

public static void printlist(Object[] list){
for(int i=0;i<list.length;i++)
System.out.print(list[i]+" ");
System.out.println();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: