您的位置:首页 > 编程语言 > Java开发

java 数据装箱及练习-对一个字符串中的数字进行排序

2016-05-10 16:12 615 查看
/*
八种数据类型:byte,short,int,long,float,double,char,boolean,
基本数据类型对象包装类:
为了方便操作基本数据类型值,将其封装成对象,在对象中定义了属性和行为丰富该数据的操作。
用于描述对该对象的类就称为基本数据类型对象封装类。

byte		Byte
short		Short
int			Integer
long		Long
float		Float
double		Double
char		Character
boolean		Boolean

基本数据类型 —— ——>字符串的方法:
1,基本数值类型+"";
2,用String类中的静态方法valueOf(基本类型数值);
3,用Integer的静态方法valueOf(基本类型数值)

字符串—— ——>基本数据类型的方法:
1,使用包装类中的静态方法 xxx parseXxx("xxx类型的字符串");
eg:int i=int.parseInt("123");
double d=double.parseDouble("234.56");
byte
short
long
float
boolean
以上都有parseXxx方法,但是Character没有这种方法。
2,如果字符串被Integer进行了对象封装,可以使用非静态方法.intValue();
将一个Integer对象转成基本数据类型。

进制转换:
1,十进制转其他进制:
Integer.toBinaryString(60);
Integer.toOctalString(60);
Integer.toHexString(60);

有一个比较通用的进制转换方法:
Integer.toString(60,2);//注意:这个方法和Object类中的toString()方法是不一样的,
//因为这个方法有参数,即toString(para1,para2);
//第一个参数是需要转换进制的数,第二个参数是指明需要被转成哪一进制。

2,其他进制转换为十进制:
Integer.parseInt("110",2);//解释:第一个参数是数值字符串,第二个参数是指明前面的数值的进制,即110是2进制的。
此方法结果返回的是十进制的整数类型的。

*/

class WrapperDemo
{
public static void main(String[] args)
{
int num=0;
sop("Integer.MAX_VALUE:"+Integer.MAX_VALUE);
sop("Integer.MIN_VALUE:"+Integer.MIN_VALUE);
sop("Integer.SIZE:"+Integer.SIZE);

sop("Byte.SIZE:"+Byte.SIZE);
sop("Byte.MAX_VALUE:"+Byte.MAX_VALUE);
sop("Byte.MIN_VALUE:"+Byte.MIN_VALUE);
sop("Character.SIZE:"+Character.SIZE);

Integer i=new Integer(num);

int j=23456;
String str=String.valueOf(j);
sop("str"+str);

sop("进制转化------十进制转其他进制---------------");
sop(Integer.toBinaryString(60));
sop(Integer.toOctalString(60));
sop(Integer.toHexString(60));
sop(Integer.toString(60,2));

sop("进制转换------其他进制转十进制---------------");
sop(Integer.parseInt("110",2));
sop(Integer.parseInt("60",10));
sop(Integer.parseInt("3c",16));
sop(Integer.parseInt("60",8));
//sop(Integer.parseInt("3c",2));//这个会出错的。因为3c不是二进制的数

Integer a=new Integer(123);//Integer(int value)是将一个整数封装成Integer对象。
Integer b=new Integer("123");//Integer(String s)是将String参数所指示的int值封装成Integer对象。
//Integer c=new Integer("3c");//这是会出错的,因为String所指示的必须是int类型的数值,即“ ”里面必须是数字。
//sop("c"+c);
sop("a.compareTo(b):"+a.compareTo(b));  //0代表对象内容相同。1代表a的ascii码值大于b的ascii码值。-1代表小于。

sop("a"+(a+100));
sop("b"+(b+100));

sop("a==b:"+(a==b));//==比较的是两个对象,对象肯定不是一样的。
sop("equals:"+a.equals(b));//equals覆盖重写了Object中的equals方法。
//Object中的equals方法是比较两个对象;
//Integer中的equals方法是比较两个对象的内容是否相同。

Integer a1=127;//JDK1.5以后,自动装箱,如果装箱的是<<一个字节>>,那么该数据会被共享不会重新开辟空间。正如字符串一样。
Integer a2=127;//但是一定要注意这是<<一个字节>>。一个byte的取值范围是-128~127。所以当a1和a2的值为128时,a1==a2返回的就是false了。
sop(a1==a2);
sop(a1.equals(a2));

Integer in=new Integer("123");
//in=in+123;
//sop("in.............:"+in);
//sop(Integer.parseInt(in));//注意这里是错误的,因为parseInt()里的参数必须是int数字的字符串,而在这里参数是Integer对象。
try
{
int x=Integer.parseInt("123");  //parseInt()方法中参数必须为数字字符串,不能含有其他字符。
//sop(x+1);
}
catch (Exception e)
{
sop(e.toString());
}

}

public static void sop(Object obj)
{
System.out.println(obj);
}
}


/*
对一个字符串中的数值进行从小到大的排序。

“20 78 9 -7 88 36 29”

*/
import java.util.*;
class WrapperTest
{
private static final String SPACE_SEPARATOR=" ";
public static void main(String[] args)
{
String str="20 78 9 -7 88 36 29";
int[] arr=split(str);//分割并转为整型
//Arrays.sort(arr);
arr=search_sort(arr);//排序(升序)
sop(arrayToString(arr));

for(int i=0;i<arr.length;i++)
{
sop(arr[i]);
}

}
/*分割字符串:
1,先生成字符串数组;
2,将字符串类型的数组转化为整型数组,即对每一个元素进行parseInt转换;
3,对整型数组进行排序;
4,将整型数组转化为字符串输出。
*/
public static int[] split(String str) //分割并转化成整型数组
{
String[] arr=str.split(SPACE_SEPARATOR+"+");//注意:"+"代表中间可能有多个空格。
int[] arr1=new int[arr.length];
for(int i=0;i<arr.length;i++)
{
arr1[i]=Integer.parseInt(arr[i]);
}
return arr1;
}

public static int[] search_sort(int[] arr) //对整型数组进行排序
{
for(int i=0;i<arr.length-1;i++)
{
for(int j=i+1;j<arr.length;j++)
{
if(arr[i]>arr[j])
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}

}
return arr;

}

public static String arrayToString(int[] arr)
{
StringBuffer sb=new StringBuffer();
for(int i=0;i<arr.length;i++)
{
if(i!=arr.length-1)
sb.append(arr[i]+SPACE_SEPARATOR);
else
sb.append(arr[i]);
}
return sb.toString();
}

public static void sop(Object obj)
{
System.out.println(obj);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息