Java经典实例第二版.docx
《Java经典实例第二版.docx》由会员分享,可在线阅读,更多相关《Java经典实例第二版.docx(81页珍藏版)》请在冰豆网上搜索。
![Java经典实例第二版.docx](https://file1.bdocx.com/fileroot1/2023-4/17/8e333c97-96ca-45cf-ab7f-4a8410e5e438/8e333c97-96ca-45cf-ab7f-4a8410e5e4381.gif)
Java经典实例第二版
Java经典实例(第二版)
1.获取环境变量
Java代码
1.System.getenv("PATH");
2.System.getenv("JAVA_HOME");
System.getenv("PATH");
System.getenv("JAVA_HOME");
2.获取系统属性
Java代码
1.System.getProperty("pencil color"); // 得到属性值
2.java -Dpencil color=green
3.System.getProperty("java.specification.version"); // 得到Java版本号
4.Properties p = System.getProperties(); // 得到所有属性值
5.p.list(System.out);
System.getProperty("pencilcolor");//得到属性值
java-Dpencilcolor=green
System.getProperty("java.specification.version");//得到Java版本号
Propertiesp=System.getProperties();//得到所有属性值
p.list(System.out);
3.StringTokenizer
Java代码
1.// 能够同时识别, 和 |
2.StringTokenizer st = new StringTokenizer("Hello, World|of|Java", ", |");
3.while (st.hasMoreElements()) {
4. st.nextToken();
5.}
6.
7.// 把分隔符视为token
8.StringTokenizer st = new StringTokenizer("Hello, World|of|Java", ", |", true);
//能够同时识别,和|
StringTokenizerst=newStringTokenizer("Hello,World|of|Java",",|");
while(st.hasMoreElements()){
st.nextToken();
}
//把分隔符视为token
StringTokenizerst=newStringTokenizer("Hello,World|of|Java",",|",true);
4.StringBuffer(同步)和StringBuilder(非同步)
Java代码
1.StringBuilder sb = new StringBuilder();
2.sb.append("Hello");
3.sb.append("World");
4.sb.toString();
5.new StringBuffer(a).reverse(); // 反转字符串
StringBuildersb=newStringBuilder();
sb.append("Hello");
sb.append("World");
sb.toString();
newStringBuffer(a).reverse();//反转字符串
5. 数字
Java代码
1.// 数字与对象之间互相转换 - Integer转int
2.Integer.intValue();
3.
4.// 浮点数的舍入
5.Math.round()
6.
7.// 数字格式化
8.NumberFormat
9.
10.// 整数 -> 二进制字符串
11.toBinaryString()或valueOf()
12.
13.// 整数 -> 八进制字符串
14.toOctalString()
15.
16.// 整数 -> 十六进制字符串
17.toHexString()
18.
19.// 数字格式化为罗马数字
20.RomanNumberFormat()
21.
22.// 随机数
23.Random r = new Random();
24.r.nextDouble();
25.r.nextInt();
//数字与对象之间互相转换-Integer转int
Integer.intValue();
//浮点数的舍入
Math.round()
//数字格式化
NumberFormat
//整数->二进制字符串
toBinaryString()或valueOf()
//整数->八进制字符串
toOctalString()
//整数->十六进制字符串
toHexString()
//数字格式化为罗马数字
RomanNumberFormat()
//随机数
Randomr=newRandom();
r.nextDouble();
r.nextInt();
6.日期和时间
Java代码
1.// 查看当前日期
2.Date today = new Date();
3.Calendar.getInstance().getTime();
4.
5.// 格式化默认区域日期输出
6.DateFormat df = DateFormat.getInstance();
7.df.format(today);
8.
9.// 格式化制定区域日期输出
10.DateFormat df_cn = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
11.String now = df_cn.format(today);
12.
13.// 按要求格式打印日期
14.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:
mm:
ss");
15.sdf.format(today);
16.
17.// 设置具体日期
18.GregorianCalendar d1 = new GregorianCalendar(2009, 05, 06); // 6月6日
19.GregorianCalendar d2 = new GregorianCalendar(); // 今天
20.Calendar d3 = Calendar.getInstance(); // 今天
21.d1.getTime(); // Calendar或GregorianCalendar转成Date格式
22.d3.set(Calendar.YEAR, 1999);
23.d3.set(Calendar.MONTH, Calendar.APRIL);
24.d3.set(Calendar.DAY_OF_MONTH, 12);
25.
26.// 字符串转日期
27.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:
mm:
ss");
28.Date now = sdf.parse(String);
29.
30.// 日期加减
31.Date now = new Date();
32.long t = now.getTime();
33.t += 700*24*60*60*1000;
34.Date then = new Date(t);
35.
36.Calendar now = Calendar.getInstance();
37.now.add(Calendar.YEAR, -2);
38.
39.// 计算日期间隔(转换成long来计算)
40.today.getTime() - old.getTime();
41.
42.// 比较日期
43.Date类型,就使用equals(), before(), after()来计算
44.long类型,就使用==, <, >来计算
45.
46.// 第几日
47.使用Calendar的get()方法
48.Calendar c = Calendar.getInstance();
49.c.get(Calendar.YEAR);
50.
51.// 记录耗时
52.long start = System.currentTimeMillis();
53.long end = System.currentTimeMillis();
54.long elapsed = end - start;
55.System.nanoTime(); //毫秒
56.
57.// 长整形转换成秒
58.Double.toString(t/1000D);
//查看当前日期
Datetoday=newDate();
Calendar.getInstance().getTime();
//格式化默认区域日期输出
DateFormatdf=DateFormat.getInstance();
df.format(today);
//格式化制定区域日期输出
DateFormatdf_cn=DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA);
Stringnow=df_cn.format(today);
//按要求格式打印日期
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddhh:
mm:
ss");
sdf.format(today);
//设置具体日期
GregorianCalendard1=newGregorianCalendar(2009,05,06);//6月6日
GregorianCalendard2=newGregorianCalendar();//今天
Calendard3=Calendar.getInstance();//今天
d1.getTime();//Calendar或GregorianCalendar转成Date格式
d3.set(Calendar.YEAR,1999);
d3.set(Calendar.MONTH,Calendar.APRIL);
d3.set(Calendar.DAY_OF_MONTH,12);
//字符串转日期
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddhh:
mm:
ss");
Datenow=sdf.parse(String);
//日期加减
Datenow=newDate();
longt=now.getTime();
t+=700*24*60*60*1000;
Datethen=newDate(t);
Calendarnow=Calendar.getInstance();
now.add(Calendar.YEAR,-2);
//计算日期间隔(转换成long来计算)
today.getTime()-old.getTime();
//比较日期
Date类型,就使用equals(),before(),after()来计算
long类型,就使用==,<,>来计算
//第几日
使用Calendar的get()方法
Calendarc=Calendar.getInstance();
c.get(Calendar.YEAR);
//记录耗时
longstart=System.currentTimeMillis();
longend=System.currentTimeMillis();
longelapsed=end-start;
System.nanoTime();//毫秒
//长整形转换成秒
Double.toString(t/1000D);
7.结构化数据
Java代码
1.// 数组拷贝
2.System.arrayCopy(oldArray, 0, newArray, 0, oldArray.length);
3.
4.// ArrayList
5.add(Object o) // 在末尾添加给定元素
6.add(int i, Object o) // 在指定位置插入给定元素
7.clear() // 从集合中删除全部元素
8.Contains(Object o) // 如果Vector包含给定元素,返回真值
9.get(int i) // 返回指定位置的对象句柄
10.indexOf(Object o) // 如果找到给定对象,则返回其索引值;否则,返回-1
11.remove(Object o) // 根据引用删除对象
12.remove(int i) // 根据位置删除对象
13.toArray() // 返回包含集合对象的数组
14.
15.// Iterator
16.List list = new ArrayList();
17.Iterator it = list.iterator();
18.while (it.hasNext())
19.Object o = it.next();
20.
21.// 链表
22.LinkedList list = new LinkedList();
23.ListIterator it = list.listIterator();
24.while (it.hasNext())
25.Object o = it.next();
26.
27.// HashMap
28.HashMap hm = new HashMap();
29.hm.get(key); // 通过key得到value
30.hm.put("No1", "Hexinyu");
31.hm.put("No2", "Sean");
32.// 方法1:
获取全部键值
33.Iterator it = hm.values().iterator();
34.while (it.hasNext()) {
35. String myKey = it.next();
36. String myValue = hm.get(myKey);
37.}
38.// 方法2:
获取全部键值
39.for (String key :
hm.keySet()) {
40. String myKey = key;
41. String myValue = hm.get(myKey);
42.}
43.
44.// Preferences - 与系统相关的用户设置,类似名-值对
45.Preferences prefs = Preferences.userNodeForPackage(ArrayDemo.class);
46.String text = prefs.get("textFontName", "lucida-bright");
47.String display = prefs.get("displayFontName", "lucida-balckletter");
48.System.out.println(text);
49.System.out.println(display);
50.// 用户设置了新值,存储回去
51.prefs.put("textFontName", "new-bright");
52.prefs.put("displayFontName", "new-balckletter");
53.
54.// Properties - 类似名-值对,key和value之间,可以用"=",":
"或空格分隔,用"#"和"!
"注释
55.InputStream in = MediationServer.class.getClassLoader().getResourceAsStream("msconfig.properties");
56.Properties prop = new Properties();
57.prop.load(in);
58.in.close();
59.prop.setProperty(key, value);
60.prop.getProperty(key);
61.
62.// 排序
63.1. 数组:
Arrays.sort(strings);
64.2. List:
Collections.sort(list);
65.3. 自定义类:
class SubComp implements Comparator
66. 然后使用Arrays.sort(strings, new SubComp())
67.
68.// 两个接口
69.1. java.lang.Comparable:
提供对象的自然排序,内置于类中
70. int compareTo(Object o);
71. boolean equals(Object o2);
72.2. java.util.Comparator:
提供特定的比较方法
73. int compare(Object o1, Object o2)
74.
75.// 避免重复排序,可以使用TreeMap
76.TreeMap sorted = new TreeMap(unsortedHashMap);
77.
78.// 排除重复元素
79.Hashset hs - new HashSet();
80.
81.// 搜索对象
82.binarySearch():
快速查询 - Arrays, Collections
83.contains():
线型搜索 - ArrayList, HashSet, Hashtable, linkedList, Properties, Vector
84.containsKey():
检查集合对象是否包含给定 - HashMap, Hashtable, Properties, TreeMap
85.containsValue():
主键(或给定值) - HashMap, Hashtable, Properties, TreeMap
86.indexOf():
若找到给定对象,返回其位置 - ArrayList, linkedList, List, Stack, Vector
87.search():
线型搜素 - Stack
88.
89.// 集合转数组
90.toArray();
91.
92.// 集合总结
93.Collection:
Set - HashSet, TreeSet
94.Collection:
List - ArrayList, Vector, LinkedList
95.Map:
HashMap, HashTable, TreeMap
//数组拷贝
System.arrayCopy(oldArray,0,newArray,0,oldArray.length);
//ArrayList
add(Objecto)//在末尾添加给定元素
add(inti,Objecto)//在指定位置插入给定元素
clear()//从集合中删除全部元素
Contains(Objecto)//如果Vector包含给定元素,返回真值
get(inti)//返回指定位置的对象句柄
indexOf(Objecto)//如果找到给定对象,则返回其索引值;否则,返回-1
remove(Objecto)//根据引用删除对象
remove(inti)//根据位置删除对象
toArray()//返回包含集合对象的数组
//Iterator
Listlist=newArrayList();
Iteratorit=list.iterator();
while(it.hasNext())
Objecto=it.next();
//链表
LinkedListlist=newLinkedList();
ListIteratorit=list.listIterator();
while(it.hasNext())
Objecto=it.next();
//HashMap
HashMaphm=newHashMap();
hm.get(key);//通过key得到value
hm.put("No1","Hexinyu");
hm.put("No2","Sean");
//方法1:
获取全部键值
Iteratorit=hm.values().iterator();
while(it.hasNext()){
StringmyKey=it.next();
StringmyValue=hm.get(myKey);
}
//方法2:
获取全部键值
for(Stringkey:
hm.keySet()){
StringmyKey=key;
StringmyValue=hm.get(myKey);
}
//Preferenc