黑马程序员---2015.6.22java基础笔记---Collections---Arrays---方法的可变参数---常用类介绍
2015-06-22 22:13
786 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.集合框架的工具类
Collections
a.让集合逆序排序
TreeSet ts = new TreeSet(Collections.reverseOrder());
b.按照自己定义的方式进行逆序排序
class StrLenComparator implements Comparator{};
TreeSet ts = new TreeSet(Collections.reverseOrder(new StrLenComparator()));
2.Arrays工具类
//把数组变成List集合有什么好处?
/* 可以使用集合的思想和方法来操作数组中的元素
注意:将数组变成集合,不可以使用集合的增删方法
因为,数组的长度是固定的。
contains,get,indexOf
如果增删,会发生操作异常。
*/
String[] str = {"abc","cc","kkk"};
List<String> list = Arrays.asList(arr);
sop(list.contains("cc"));
3.如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素是基本类型,那么将该数组作为集合中的元素存在。
int[] i = {2,3,4};
List<int[]> list = Arrays.asList(i);//这样的话sop(list)输出i数组的地址
Integer[] i = {2,3,4};
List<Integer> list = Arrays.asList(i)//这样的话sop(list)输出 [2,3,4]
4.集合变数组
Collection接口中的toArray方法
ArrayList<String> al = new ArrayList<String>();
al.add("adc1");al.add("adc2");al.add("adc3");
/* 1.指定类型数组到底定义多长?
当指定的长度小于size()时,该方法内部会创建一个新数组,长度为size();
当大于size时。不会创建新数组,而是使用传递过来的数组
2.为什么要将集合变成数组
为了限定对元素的操作,不需要进行增删了。
*/
String[] arr = al.toArray(new String[al.size()]);
5.ArrayList取元素有三种方式
a.E get(int index)根据角标去元素
b.迭代器
c.高级for循环
格式:
for(数据类型 变量名:被遍历的集合(collection)或者数组)
{
}
ArrayList<String> al = new ArrayList<String>();
al.add("aa"); al.add("bb"); al.add("cc");
//Collection必须是泛型的
for(String s : al)
{
System.out.println(s);//即遍历到了集合中的对象
}
对集合进行遍历,只能获取集合元素,但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中,进行增删改查的动作。
6.传统for和高级for有什么区别??
高级for循环不能对元素进行操作。
7.Map集合运用高级for循环的例子。
HashMap<Integer,String> hm = new HashMap<Integer,String>();
hm.put(1,"a"); hm.put(1,"a"); hm.put(1,"a");
//方式一
for(Integer i:hm.keySet())
{
System.out.println(hm.get(i));
}
//方式二
for(Map.Entry<Integer,String> entry:hm.entrySet())
{
System.out.println(entry.getKey()+":"+entry.value());
}
8.JDK1.5版本出现的新特性
方法的可变参数
在使用时注意:可变参数一定要定义在参数列表的最后。
如:show(String str,int...arr);
a.可变参数,不用每一次都手动的建立数组对象,
只要将要操作的元素,作为参数传递即可。
隐式将这些参数封装成数组
public static show(int...arr)
{
System.out.println();
}
//调用show方法
show(1,2,34,5);
9.StaticImport 静态导入
当类名重名时,需要指定具体的包名
当方法重名时,需要指定具体所属的对象或者类
import static java.lang.System.*;//导入System类中的所有静态成员
在class文件中就可以这样写:out.println("hello");
10.java API中常用的类
/
11. Calendar类
12.Calendar 小练习
12Math类
1.集合框架的工具类
Collections
a.让集合逆序排序
TreeSet ts = new TreeSet(Collections.reverseOrder());
b.按照自己定义的方式进行逆序排序
class StrLenComparator implements Comparator{};
TreeSet ts = new TreeSet(Collections.reverseOrder(new StrLenComparator()));
2.Arrays工具类
//把数组变成List集合有什么好处?
/* 可以使用集合的思想和方法来操作数组中的元素
注意:将数组变成集合,不可以使用集合的增删方法
因为,数组的长度是固定的。
contains,get,indexOf
如果增删,会发生操作异常。
*/
String[] str = {"abc","cc","kkk"};
List<String> list = Arrays.asList(arr);
sop(list.contains("cc"));
3.如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素是基本类型,那么将该数组作为集合中的元素存在。
int[] i = {2,3,4};
List<int[]> list = Arrays.asList(i);//这样的话sop(list)输出i数组的地址
Integer[] i = {2,3,4};
List<Integer> list = Arrays.asList(i)//这样的话sop(list)输出 [2,3,4]
4.集合变数组
Collection接口中的toArray方法
ArrayList<String> al = new ArrayList<String>();
al.add("adc1");al.add("adc2");al.add("adc3");
/* 1.指定类型数组到底定义多长?
当指定的长度小于size()时,该方法内部会创建一个新数组,长度为size();
当大于size时。不会创建新数组,而是使用传递过来的数组
2.为什么要将集合变成数组
为了限定对元素的操作,不需要进行增删了。
*/
String[] arr = al.toArray(new String[al.size()]);
5.ArrayList取元素有三种方式
a.E get(int index)根据角标去元素
b.迭代器
c.高级for循环
格式:
for(数据类型 变量名:被遍历的集合(collection)或者数组)
{
}
ArrayList<String> al = new ArrayList<String>();
al.add("aa"); al.add("bb"); al.add("cc");
//Collection必须是泛型的
for(String s : al)
{
System.out.println(s);//即遍历到了集合中的对象
}
对集合进行遍历,只能获取集合元素,但是不能对集合进行操作。
迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中,进行增删改查的动作。
6.传统for和高级for有什么区别??
高级for循环不能对元素进行操作。
7.Map集合运用高级for循环的例子。
HashMap<Integer,String> hm = new HashMap<Integer,String>();
hm.put(1,"a"); hm.put(1,"a"); hm.put(1,"a");
//方式一
for(Integer i:hm.keySet())
{
System.out.println(hm.get(i));
}
//方式二
for(Map.Entry<Integer,String> entry:hm.entrySet())
{
System.out.println(entry.getKey()+":"+entry.value());
}
8.JDK1.5版本出现的新特性
方法的可变参数
在使用时注意:可变参数一定要定义在参数列表的最后。
如:show(String str,int...arr);
a.可变参数,不用每一次都手动的建立数组对象,
只要将要操作的元素,作为参数传递即可。
隐式将这些参数封装成数组
public static show(int...arr)
{
System.out.println();
}
//调用show方法
show(1,2,34,5);
9.StaticImport 静态导入
当类名重名时,需要指定具体的包名
当方法重名时,需要指定具体所属的对象或者类
import static java.lang.System.*;//导入System类中的所有静态成员
在class文件中就可以这样写:out.println("hello");
10.java API中常用的类
/* System:类中的方法和属性都是静态的 out:标准输出 描述系统的一些信息 获取系统属性信息: Properties getProperties(); */ import java.util.*; class SystemDemo { public static void main(String[] args) { /* 因为Properties是Hashtable的子类,也就是Map集合的一个子类对象 那么可以通过map的方法取出该集合中的元素 该集合中存储的都是字符串,没有泛型定义 */ //获取所有属性信息 /* Properties p = System. getProperties(); for(Object o:p.keySet()) { String s = (String)o; System.out.println(p.get(o)); } */ //如何在系统中自定义一些特有信息呢? System.setProperty("myKey","myValue"); //获取指定属性信息 String value = System.getProperty("os.name"); System.out.println(value); /*可不可以在虚拟机启动时,动态加载一些信息。 编译后在运行时写: java -Dqiaodong=随便内容 SystemDemo */ String v = System.getProperty("qiaodong"); System.out.println(v); } }
/* Runtime对象 该类没有提供构造方法,而且方法有静态有非静态 说明这类肯定提供了方法获取本类对象,而且该方法时静态的,并且返回值类型是本类类型。 想到了单例。 static Runtime getRuntime(); */ class RuntimeDemo { public static void main(String[] args) throws Exception { Runtime runtime = Runtime.getRuntime(); //单独一个"\"表示转义字符 Process p = runtime.exec("D:\\QQ\\QQProtect\\Bin\\QQProtect.exe"); //用记事本打开SystemDemo.java runtime.exec("notepad.exe SystemDemo.java"); Thread.sleep(4000); // p.destroy(); } }
/
* java表示时间 */ import java.util.*; impo 4000 rt java.text.*; class DateDemo { public static void main(String[] args) { Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E kk:mm:ss"); String date = sdf.format(d); System.out.println(date); } }
11. Calendar类
import java.util.*; class CalendarDemo { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //设置时间 //c.set(2020,2,3); //改变时间的一个值 c.add(Calendar.MONTH,2); String[] mons = {"一月","二月","三月","四月" ,"五月","六月","七月","八月" ,"九月","十月","十一月","十二月"}; String[] weeks = { "","星期日","星期一","星期二","星期三","星期四","星期五","星期六", }; sop(c.get(Calendar.YEAR)+"年"); int month = c.get(Calendar.MONTH); sop(mons[month]); sop(c.get(Calendar.DAY_OF_MONTH )+"日"); int week = c.get(Calendar.DAY_OF_WEEK ); sop(weeks[week]); sop(c.get(Calendar.HOUR_OF_DAY )); sop(c.get(Calendar.MINUTE )); sop(c.get(Calendar.SECOND)); } public static void sop(Object o) { System.out.println(o); } }
12.Calendar 小练习
/* 两个练习: 1,获取任意年的二月有多少天。 思路:根据指定年设置一个时间就是 c.set(year,2,1)//某一年的3月1日。 c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。 2,获取昨天的现在这个时刻。 c.add(Calenar.DAY_OF_MONTH,-1); */ import java.util.*; class CalendarDemo2 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //获取任意年2月有多少天 //c.set(2012,2,1);//设置任意年的3月1日 0 代表一月,所有2代表3月 //c.add(Calendar.DAY_OF_MONTH,-1); //获取昨天的此刻 c.add(Calendar.DAY_OF_MONTH,-1); printTime(c); } public static void printTime(Calendar c) { String[] mons = {"一月","二月","三月","四月" ,"五月","六月","七月","八月" ,"九月","十月","十一月","十二月"}; String[] weeks = { "","星期日","星期一","星期二","星期三","星期四","星期五","星期六", }; sop(c.get(Calendar.YEAR)+"年"); int month = c.get(Calendar.MONTH); sop(mons[month]); sop(c.get(Calendar.DAY_OF_MONTH )+"日"); int week = c.get(Calendar.DAY_OF_WEEK ); sop(weeks[week]); } public static void sop(Object o) { System.out.println(o); } }
12Math类
import java.util.*; class MathDemo { public static void main(String[] args) { /* Random r = new Random(); for(int x= 0;x<10;x++) { //获取随机数0-10不包括10,包括0 int a = r.nextInt(10); sop(a); } */ Myabs() ; } public static void show() { double d = Math.ceil(12.34); //返回大于指定数据的最小整数 sop(d); double d1 = Math.floor(12.34);//返回小于指定数据的最大整数 sop(d); long l = Math.round(12.45); sop(l); double d2 = Math.pow(2,3); sop("2的3此幂是:"+d2); } public static void sop(Object o) { System.out.println(o); } /* 练习。给定一个小数。 保留该小数的后两位。 */ public static void Myabs() { StringBuilder sb = new StringBuilder(); double x = 12.22323498; double a = Math.abs(x) ; sop("a"+a); sb.append(a); double temp = x-a; while(temp!=0) { double b = Math.abs(temp*10); temp = temp*10-b; sop(temp); sb.append(b); } sop(sb.substring(sb.length()-2,sb.length())); } }
相关文章推荐
- Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
- Python collections模块实例讲解
- 方
- Collections.sort
- Arrays使用方式,数组转换成List
- java中Collections.sort() 排序函数的两种用法
- 删除List里面元素的时候抛出UnsupportedOperationException异常
- 插入法排序、选择排序、冒泡法、快速排序、堆排序的C实现
- vc++读取xml文件中的属性值
- java基础加强学习笔记
- Framework Fundamentals 基本结构
- Contents at a Glance 简要目录
- 我所不知道的php
- 随笔:表现层、持久层、业务层、
- Java.util.Collections类包的学习(转)
- MongoDb 命令初学
- 安装MongoDB集群
- [转]20 issues of porting C++ code on the 64-bit platform
- 也来谈Java集合框架
- Join用法,HQL的方法,Hibernate中的fetch