java学习-JAVA基本排序法示例,JAVA数据类型转换 ,ArrayList用法,Calendar 简单应用

来源:互联网 发布:vmware player mac版 编辑:程序博客网 时间:2024/06/07 07:26
JAVA基本排序法示例
 Java合并排序法示例
public class Coalition{ public static void main(String[] args){/* 定义一个数组和二个整型变量 */int[] num = {65,87,15,23,46,48,52,79,97,53};int i,j;/* 合并排序法 */for (i = 0; i < 9; i++)for (j = i+1; j < 10; j++){if (num[i] > num[j]){num[i] = num[i] + num[j];num[j] = num[i] - num[j];num[i] = num[i] - num[j];}}/* 循环输出排序后的结果 */for (i = 0; i < 10; i++){System.out.println(num[i]);}}}

 Java冒泡排序法示例
public class BubbleUp{public static void main(String[] args){/* 定义一个数组和三个整型变量 */int[] num = {65,87,15,23,46,48,52,79,97,53};int i,j,temp;/* 冒泡排序法 */for (i = 10; i > 0; i--)for (j = i-1; j > 0; j--){if (num[j] < num[j-1]){temp = num[j];num[j] = num[j-1];num[j-1] = temp;}}/* 循环输出排序后的结果 */for (i = 0; i < 10; i++){System.out.println(num[i]);}}}

 Java插入排序法示例
public class Insert{ public static void main(String[] args){/* 定义一个数组和三个整型变量 */int[] num = {65,87,15,23,46,48,52,79,97,53};int i,j,temp;/* 插入排序法 */for (i = 1; i < 10; i++){temp = num[i];for (j = i; j > 0 && temp < num[j - 1]; j--)num[j] = num[j - 1];num[j] = temp;}/* 循环输出排序后的结果 */for (i = 0; i < 10; i++){System.out.println(num[i]);}}}
JAVA数据类型转换 
 将字串 String 转换成整数 int 有两个方法:

1). int i = Integer.parseInt([String]);i = Integer.parseInt([String],[int radix]);2). int i = Integer.valueOf(my_str).intValue();

注: 字串转成 DoubleFloatLong 的方法大同小异

 将整数 int 转换成字串 String 有叁种方法:

1). String s = String.valueOf(i);2). String s = Integer.toString(i); 3). String s = "" + i;
注: DoubleFloatLong 转成字串的方法大同小异

 将布尔 boolean 变量转换为字符串 String

boolean bool = true;String s = String.valueOf(bool);
 这是一个例子,说的是JAVA中数据数型的转换
package cn.com.lwkj.erts.register;import java.sql.Date;public class TypeChange{public TypeChange(){}//change the string type to the int typepublic static int stringToInt(String intstr){Integer integer;integer = Integer.valueOf(intstr);return integer.intValue();}//change int type to the string typepublic static String intToString(int value){Integer integer = new Integer(value);return integer.toString();}//change the string type to the float typepublic static float stringToFloat(String floatstr){Float floatee;floatee = Float.valueOf(floatstr);return floatee.floatValue();}//change the float type to the string typepublic static String floatToString(float value){Float floatee = new Float(value);return floatee.toString();}//change the string type to the sqlDate typepublic static java.sql.Date stringToDate(String dateStr){return java.sql.Date.valueOf(dateStr);}//change the sqlDate type to the string typepublic static String dateToString(java.sql.Date datee){return datee.toString();}public static void main(String[] args){java.sql.Date day ;day = TypeChange.stringToDate("2003-11-3");String strday = TypeChange.dateToString(day);System.out.println(strday);}}
 JAVA中常用数据类型转换函数 虽然都能在JAVA API中找到,整理一下做个备份。
string->byteByte static byte parseByte(String s) byte->string Byte static String toString(byte b) char->string Character static String to String (char c) string->Short Short static Short parseShort(String s) Short->String Short static String toString(Short s) String->Integer Integer static int parseInt(String s)Integer->String Integer static String tostring(int i) String->Long Long static long parseLong(String s) Long->String Long static String toString(Long i) String->Float Float static float parseFloat(String s) Float->String Float static String toString(float f) String->Double Double static double parseDouble(String s)Double->StringDouble static String toString(Double)
 数据类型

基本类型有以下四种: int长度数据类型有:byte(8bits/1字节)、short(16bits/2字节)、int(32bits/4字节)、long(64bits/8字节)float长度数据类型有:单精度(32bits/4字节 float)、双精度(64bits/8字节 double)boolean类型变量的取值有:ture(1bits)、false(1bits)char数据类型有:unicode字符(16bits/2字节)对应的类类型:IntegerFloatBooleanCharacterDoubleShortByteLong

 转换原则

从低精度向高精度转换
byteshortintlongfloatdoublechar
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

 基本类型向类类型转换

正向转换:通过类包装器来new出一个新的类类型的变量

Integer a = new Integer(2);
反向转换:通过类包装器来转换
int b = a.intValue();
 类类型向字符串转换

正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量

eg1: int i = Integer.valueOf("123").intValue();

说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。

eg2: float f = Float.valueOf("123").floatValue();

说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b = Boolean.valueOf("123").booleanValue();

说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4: double d = Double.valueOf("123").doubleValue();

说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l = Long.valueOf("123").longValue();

说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char = Character.valueOf("123").charValue();

说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

 基本类型向字符串的转换

正向转换:如

int a = 12;
String b;
b = a + "";
反向转换:通过类包装器

eg1: int i = Integer.parseInt("123")

说明:此方法只能适用于字符串转化成整型变量

eg2: float f = Float.valueOf("123").floatValue();

说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

eg3: boolean b = Boolean.valueOf("123").booleanValue();

说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。

eg4: double d = Double.valueOf("123").doubleValue();

说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。

eg5: long l = Long.valueOf("123").longValue();

说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。

eg6: char = Character.valueOf("123").charValue();

说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

ArrayList用法
System.Collections.ArrayList类是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度。

 一.优点

1、支持自动改变大小的功能
2、可以灵活的插入元素
3、可以灵活的删除元素


 二.局限性

跟一般的数组比起来,速度上差些


 三.添加元素

1、public virtual int Add(objectvalue);

将对象添加到ArrayList的结尾处

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");
结果为abcde

2、public virtual void Insert(intindex,objectvalue);

将元素插入ArrayList的指定索引处

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");aList.Insert(0,"aa");
结果为aaabcde

3、public virtual void InsertRange(intindex,ICollectionc);

将集合中的某个元素插入ArrayList的指定索引处

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");ArrayList aList2 = new ArrayList();aList2.add("tt");aList2.add("ttt");aList.InsertRange(2,aList2);
结果为abtttttcde
 四.删除

1、public virtual void Remove(objectobj);

ArrayList中移除特定对象的第一个匹配项,注意是第一个

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");aList.Remove("a");
结果为bcde

2、public virtual void RemoveAt(intindex);

移除ArrayList的指定索引处的元素

aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");aList.RemoveAt(0);
结果为bcde

3、public virtual void RemoveRange(intindex,intcount);

ArrayList中移除一定范围的元素。Index表示索引,count表示从索引处开始的数目

aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");aList.RemoveRange(1,3);
结果为ae

4、public virtual void Clear();

ArrayList中移除所有元素。


 五.排序

1、public virtual void Sort();

对ArrayList或它的一部分中的元素进行排序。

ArrayList aList = new ArrayList();aList.add("e");aList.add("a");aList.add("b");aList.add("c");aList.add("d");DropDownList1.DataSource = aList; //DropDownList DropDownList1;DropDownList1.DataBind();
结果为eabcd
ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");aList.Sort(); //排序DropDownList1.DataSource = aList; //DropDownList DropDownList1;DropDownList1.DataBind();
结果为abcde

2、public virtual void Reverse();

ArrayList或它的一部分中元素的顺序反转。

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");aList.Reverse(); //反转DropDownList1.DataSource = aList; //DropDownList DropDownList1;DropDownList1.DataBind();
结果为edcba
 六.查找

a) public virtual int IndexOf(object);
b) public virtual int IndexOf(object,int);
c) public virtual int IndexOf(object,int,int);

返回ArrayList或它的一部分中某个值的第一个匹配项的从零开始的索引。没找到返回-1。

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e");int nIndex = aList.IndexOf("a"); //1nIndex = aList.IndexOf("p"); //没找到,-1
d) public virtual intLastIndexOf(object);
e) public virtual intLastIndexOf(object,int);
f) public virtual intLastIndexOf(object,int,int);

返回ArrayList或它的一部分中某个值的最后一个匹配项的从零开始的索引。

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("a"); //同0aList.add("d");aList.add("e");int nIndex = aList.LastIndexOf("a"); //值为2而不是0
g) public virtual bool Contains(objectitem);

确定某个元素是否在ArrayList中。包含返回true,否则返回false


 七.其他

1、public virtual int Capacity{get;set;}

获取或设置ArrayList可包含的元素数。

2、public virtual int Count{get;}

获取ArrayList中实际包含的元素数。 CapacityArrayList可以存储的元素数。CountArrayList中实际包含的元素数。
Capacity总是大于或等于Count。如果在添加元素时,Count超过Capacity,则该列表的容量会通过自动重新分配内部数组加倍。
如果Capacity的值显式设置,则内部数组也需要重新分配以容纳指定的容量。如果Capacity被显式设置为0,则公共语言运行库将其设置为默认容量。默认容量为16
在调用Clear后,Count0,而此时Capacity切是默认容量16,而不是0

3、public virtual void TrimToSize();

将容量设置为ArrayList中元素的实际数量。
如果不向列表中添加新元素,则此方法可用于最小化列表的内存系统开销。
若要完全清除列表中的所有元素,请在调用TrimToSize之前调用Clear方法。截去空ArrayList会将ArrayList的容量设置为默认容量,而不是零。

ArrayList aList = new ArrayList();aList.add("a");aList.add("b");aList.add("c");aList.add("d");aList.add("e"); //Count=5,Capacity=16,aList.TrimToSize(); //Count=Capacity=5;

Calendar 简单应用
简单的 Calendar 应用演示

import java.util.Calendar;public class TestDemo {

public void funDemo(){//创建 Calendar 实例对象Calendar date = Calendar.getInstance();//获得当前年份String year = String.valueOf(date.get(date.YEAR));//获得当前月份String month = String.valueOf(date.get(date.MONTH));//获得当前日String day = String.valueOf(date.get(date.DAY_OF_MONTH));//获得当前时钟String hour = String.valueOf(date.get(date.HOUR));//获得当前分钟String minute = String.valueOf(date.get(date.MINUTE));//获得当前秒钟String second = String.valueOf(date.get(date.SECOND));//打印出当前日期System.out.println("当前日期时间");String dateTime = year+"年 "+month+"月 "+day+"日 "+hour+":"+minute+":"+second;System.out.println(dateTime);

//将天数加 D 天,打印 D 天后的日期int D = 375;date.add(date.DAY_OF_YEAR, D);System.out.println("\n使用 date.add(date.DAY_OF_YEAR, 365) 后的显示");System.out.println(date.get(date.YEAR)+"年 "+date.get(date.MONTH)+"月 "+date.get(date.DAY_OF_MONTH)+"日 "+date.get(date.HOUR)+":"+date.get(date.MINUTE)+":"+date.get(date.SECOND));

//将年数加 Y 年 ,打印 Y 年后的日期int Y = -3;date.add(date.YEAR, Y);System.out.println("\n使用 date.add(date.YEAR, -3) 后的显示");System.out.println(date.get(date.YEAR)+"年 "+date.get(date.MONTH)+"月 "+date.get(date.DAY_OF_MONTH)+"日 "+date.get(date.HOUR)+":"+date.get(date.MINUTE)+":"+date.get(date.SECOND));}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubTestDemo tdemo = new TestDemo();tdemo.funDemo();}}

运行显示效果如下 ( dateCalendar 实例对象 )

当前日期时间
2007年 1月 6日 10:50:46

使用 date.add(date.DAY_OF_YEAR, 375) 后的显示
2008年 1月 16日 10:50:46

使用 date.add(date.YEAR, -3) 后的显示
2005年 1月 6日 10:50:46