8月12日
今天的学习内容是
1)java中常用工具类
2)CSS和HTML
3.1 java.util 包中的常用工具类
Ctrl+Shift+o可以快速import对应的包
1.Date类
java.util.Date
类Date表示特定的瞬间,精确到毫秒
现在主要用calender
Calender 日历类 【抽象类】
抽象类可以为子类提供公共模板,子类进一步进行实现
import java.util.Date;
//import java.util.*;
public class TestDate{
public static void main(String[] args){
Date d = new Date();
System.out.println(d);
System.out.println(d.getTime());//距离1970.1.1 0:0:0 以来至当前的毫秒数
}
}
package com.time;
import java.util.*;
public class TestCalender {
/**
* @param args
*/
public static void main(String[] args) {
// Calendar calendar = new Calendar(); //抽象类不能直接被实例化,需要用它的子类
Calendar calendar = new GregorianCalendar();
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
String strDate = year+"年"+month+"月"+day+"日"+hour+":"+minute+":"+second;
System.out.println("现在的时间是:"+strDate);
}
}
这样输出日期过于繁琐,我们可以使用SimpleDateFormat
package com.time;
import java.text.*;
import java.util.*;
public class SimpleDate {
public static void main(String[] args) {
//简单日期格式化工具类 Date——〉String String ——〉Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");
//当前系统日期时间瞬间
Date d = new Date();
String strDate = sdf.format(d);
System.out.println("现在的时间是:"+strDate);
String s = "2019年7月26日 14:32:45 星期五";
//try catch使用
try {
Date d2= sdf.parse(s);
System.out.println(d2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("日期非法!");
}
System.out.println("程序可以正常结束");
}
}
2.Random随机数生成器
import java.util.Random;
public class TestDate {
public static void main(String[] args) {
Random rand = new Random();
int num = 10+rand.nextInt(11); //0~10 10~20
System.out.println(num);
}
}
3.集合框架类
package com.demo03;
import java.util.*;
public class TestArrayList {
/**
* @param args
*/
public static void main(String[] args) {
String[] strs = new String[5];
strs = new String[20]; //重新定义数组
//动态数组——数组列表
//JDK5.0之后,将集合框架接口与类进行泛型化<泛型类>
ArrayList<String> a1 = new ArrayList<String>();
// ArrayList a1 = new ArrayList();
a1.add("23423");
a1.add("32434");
a1.add("33545");
// a1.add(3.5); //会出现报错
// a1.add(3453); //会出现报错
System.out.println(a1.get(1));
System.out.println("————————————————————————");
a1.remove(1);
//迭代集合方式1:
for(int i=0;i<a1.size();i++){
System.out.println(a1.get(i));
}
System.out.println("————————————————————————");
//迭代方法2 迭代子进行操作:
Iterator<String> iter = a1.iterator();
while (iter.hasNext()){
String a = iter.next();
System.out.println(a);
}
System.out.println("————————————————————————");
//迭代方法3 forEach循环:
for(String s : a1){
System.out.println(s);
}
}
}
size() ArrayList的长度
add(),add(e),向集合的末尾追加元素,add(index,e),向index位置插入元素
remove()
iterator() 获取指向当前集合对象的迭加器
get(int index)获取指定索引处的元素
//更多内容查询手册
java.util.Collection 集合层次中的根接口
|-List接口(允许有重复的接口)
- ArrayList 数组列表——>动态数组 [插入,移除元素时,效率低]
- LinkedList 链接列表——>链表[数据结果] [插入,移除元素时,效率高,检索元素时效率高]
- Vector 向量列表,多线程
|-Set接口(不允许重复接口)
- HashSet 无序无重复
- TreeSet 有序无重复
package com.demo2;
import java.util.ArrayList;
import java.util.HashSet;
public class TestA {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<String> a1 = new ArrayList<String>();
HashSet<String> a2 = new HashSet<String>();
a1.add("111");
a1.add("345");
a1.add("111");
a1.add("435");
a2.add("111");
a2.add("345");
a2.add("111");
a2.add("435");
System.out.println("元素的个数:"+a1.size());
System.out.println(a1);
System.out.println("元素的个数:"+a2.size());
System.out.println(a2);
}
}
java.util.map接口
当我们需要存在键-值 成对的元素进行存储,就需要使用map
- HashMap 哈希图 [键值乱序随机存储]
- TreeMap 树图 [键值排序存储]
package com.demo2;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class TestMap {
/**
* @param args
*/
public static void main(String[] args) {
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a01",111);
map.put("b02", 222);
map.put("z03", 333);
System.out.println(map);
//获取map中的所有值的集合
// Collection<Integer> values = map.values();
//map的迭代输出实现
//需要先获取键集合,
Set<String> keys = map.keySet();
for(String key : keys){
Integer value = map.get(key);
System.out.println("key:"+key+"——————〉value"+value);
}
}
}
对ArrayList进行排序
public static void main(String[] args) {
ArrayList<String> a1 = new ArrayList<String>();
// HashSet<String> a2 = new HashSet<String>();
a1.add("111");
a1.add("345");
a1.add("111");
a1.add("435");
//对集合进行排序;
Collections.sort(a1);
System.out.println("元素的个数:"+a1.size());
System.out.println(a1);
复杂的集合的元素的排序(脑壳痛直接复制老师的代码了)
java.util.Arrays.sort(数组名);
java.util.Collections.sort(集合对象名);
package com.kotei.oop4;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Student implements Comparable<Student>{
int sid;
String sname;
int age;
public Student() {
}
public Student(int sid, String sname, int age) {
super();
this.sid = sid;
this.sname = sname;
this.age = age;
}
public String toString() {
return this.sid+"\t"+this.sname+"\t"+this.age;
}
//定义排序的比较规则
public int compareTo(Student s) {
//先按姓名的升序,再年龄的降序
if(this.sname.compareTo(s.sname)>0){
return 1;
}else if(this.sname.compareTo(s.sname)<0){
return -1;
}else{
//按年龄排
return -(this.age-s.age);
}
}
}
public class TestArrayList {
public static void main(String[] args) {
List<Student> stuList = new ArrayList<Student>();
stuList.add(new Student(1,"zhangsan",20));
stuList.add(new Student(2,"lisi",19));
stuList.add(new Student(3,"wangwu",21));
stuList.add(new Student(4,"wangwu",20));
Collections.sort(stuList);
for(int i=0 ; i<stuList.size() ; i++){
System.out.println(stuList.get(i));
}
}
}
3.2 接口
abstract是抽象类
interface定义接口
区别:
抽象类的应用场合是部分实现,部分未实现,而接口则是完全未实现
package com.demo2;
//开关接口类型——规范,标准,接口中的方法只能是public abstract
interface ISwitch{
int i = 100; //public static final 默认三个属性, 常量不能被修改
//一般不在接口中定义字段
void turnOn(); //方法声明 隐含abstract
void turnOff();
}
//类A想要实现ISwitch,必须实现ISwitch中的所有方法
class A implements ISwitch{
public void turnOn(){
System.out.println("实现开关的——开");
}
public void turnOff(){
System.out.println("关");
}
}
public class TestInt {
public static void main(String[] args){
// ISwitch objI = new ISwitch; 接口和抽象类一样,都不可以直接被实例化
ISwitch objI = new A(); //A继承了ISwitch的方法
}
}