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();
}
}