show(new Cat()); // 以 Cat 对象调用 show 方法 Animal a = new Cat(); // 向上转型 a.eat(); // 调用的是 Cat 的 eat Cat c = (Cat)a; // 向下转型 c.work(); // 调用的是 Cat 的 work
Java 如何抛出异常、自定义异常_风中的劲草-CSDN博客_java 自定义异常
void doStuff(Shape s) { s.erase(); // ... s.draw(); } Circle c = new Circle(); Triangle t = new Triangle(); Line l = new Line(); doStuff(c); doStuff(t); doStuff(l); //形式参数可为对象
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
1.允许有null值
2.无序,不会记录插入的顺序
3.不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的 并发访问。
4.HashSet 实现了 Set 接口。
5.HashSet 中的元素实际上是对象,一些常见的基本类型可以使用它的包装类。(全称大写)
import java.util.HashSet; // 引入 HashSet 类 public class RunoobTest { public static void main(String[] args) { HashSet<String> sites = new HashSet<String>(); sites.add("Google"); sites.add("Runoob"); sites.add("Taobao"); sites.add("Zhihu"); sites.add("Runoob"); // 重复的元素不会被添加 System.out.println(sites.contains("Taobao")); //contain()判断元素是否存在于集合中,返回布尔值 sites.remove("Taobao"); // 删除元素,删除成功返回 true,否则为 false System.out.println(sites.size()); //计算列表 返回n-1 or (String i : sites) { System.out.println(i); //可用for each循环 sites.clear(); //删除集合中所有元素 } }
//Iterater迭代器 // 引入 ArrayList 和 Iterator 类 import java.util.ArrayList; import java.util.Iterator; public class RunoobTest { public static void main(String[] args) { ArrayList<Integer> numbers = new ArrayList<Integer>(); numbers.add(12); numbers.add(8); numbers.add(2); numbers.add(23); Iterator<Integer> it = numbers.iterator(); while(it.hasNext()) { Integer i = it.next(); if(i < 10) { it.remove(); // 删除小于 10 的元素 } } System.out.println(numbers); } } //输出结果:[12, 23]
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
LocalDate localDate = LocalDate.now(); LocalDateTime l1; l1 = localDate.atTime(12, 30); //这段代码先通过now()方法获取当前日期的localDate对象,然后调用atTime方法返回的l1对象的时间为当前日期的12点30分。
java8之LocalDate类简介_a3355211200的博客-CSDN博客_localdate类 localdate详解
//字符串转换localdate String str = "2019-01-11"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate localDate = LocalDate.parse(str, formatter); //返回 1970 年 1 月 1 日与yyyy-MM-dd之间的毫秒数: //我超,报错了,谁来救救孩子