一、instanceof 用法总结.
 instanceof属于java关键字之一,instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:boolean result = obj instanceof Class
二、泛型:常见的字母及分别对应含义?
 E - Element (在集合中使用,因为集合中存放的是元素)
 T - Type(Java 类)
 K - Key(键)
 V - Value(值)
三、泛型的优点是安全和省心,请用代码说明。
 将对象类型作为参数,制定到其它类和方法上,从而保证类型转换的安全性和稳定性,本质是参数化类型
 Map<String, String> countries = new HashMap<String, String>();
 countries.put(“China”, “中国”);
 countries.put(“USA”, “美国”);
 countries.put(“Japan”, “日本”);
 countries.put(“France”, “法国”);
 Set<Map.Entry<String, String>> set = countries.entrySet(); //获取Map中的键值对
 for (Map.Entry<String, String> me : set) {
 String key = me.getKey(); //获取出来键值对中的键
 String value = me.getValue(); //获取出来键值对中的值
 System.out.println(key + “–” + value);
 }
四、泛型接口注意事项是什么?
 1.接口上自定义泛型的具体数据类型是在实现接口的时候指定的;
 2.在接口上自定义的泛型,如果在实现接口的时候,没有指定具体的数据类型,那么默认为Object类型;
五、泛型方法注意事项是什么?
 1.使用泛型可以解决类型转换的问题:在编译器发现问题,而不是运行期才发现
 2.泛型只能是引用类型,不能是基本类型
 3.方法中如果有泛型,那么传入的参数类型必须和方法中声明的类型完全一致
 如果希望方法中的泛型可以接收任意类型那么不能使用object,可以使用通配符?(问号)
 4.一个泛型类的参数可以是一般的引用类型的参数,也可以是一个泛型类
 5.泛型类可以是继承泛型类
 6.在泛型中不可以用泛型的变量加一个泛型的变量
六、泛型:(1)子类指定具体类型,(2)子类为泛型类,(3)子类为泛型类/父类不指定类型,(4)子类与父类同时不指定类型,以上4点请分别用代码举例。
 package Col;
 public class Test {
 /**
 * 泛型类继承规则:
 * 要么同时擦除,要么子类大于等于父类类型
 /
 public abstract class Father {
 T name;
 public abstract void test(T name);
 }
 /
 * 子类声明为具体类型(具体类型大于泛型)
 * 属性类型为具体类型
 * 方法同理
 /
 class Child1 extends Father{
 public void test(Integer name) {
 }
 }
 /*
 * 子类为泛型,类型在使用时确定(子类有两个,大于父类一个)*
 /
 class Child2<T,T1> extends Father{
 public void test(T name) {
 }
 }
 /*
 * 子类为泛型,父类不指定类型,使用Object替代(子类一个,父类没有
 /
 class Child3 extends Father{
 public void test(Object name) {
 }
 }
 /*
 * 子类与父类同时擦除,用Object替代
 */
 class Child4 extends Father{
 public void test(Object name) {
 }
 }
 }
七、泛型接口,方法是以父类而定还是以子类而定?
 1.属性类型
 父类中,随父类而定
 子类中,随子类定。
 2.方法重写随父类而定
八、形参使用多态、返回类型使用多态 请分别代码举例。
 1.形参使用多态
 //父类:提取共性代码
 //抽象类不能被实例化,实例化没有任何实际意义
 public abstract class Pet {
 private String name = “无名氏”; // 昵称,默认值是"无名氏"
 private int health = 100; // 健康值,默认值是100,健康值在0-100之间,小于60为不健康
 private int love = 0; // 亲密度,在0-100之间
 public Pet(){
 System.out.println(“父类无参构造方法”);
 }
 public Pet(String name){
 this.name = name;
 }
 public Pet(String name,int health,int love){
 //this(name); //this可调用本类的构造方法,且必须在第一行
 this.name = name;
 this.health = health;
 this.love = love;
 System.out.println(“父类带参构造方法”);
 }
 public void setHealth(int health){
 if(health<0 || health>100){
 System.out.println(“宠物的健康值只能在0-100之间!”);
 this.health = 60;
 return;
 }
 this.health = health;
 }
 public int getHealth(){
 return this.health;
 }
 public void setName(String name){
 this.name = name;
 }
 public String getName(){
 return this.name;
 }
 public void setLove(int love){
 if(love<0 || love>100){
 System.out.println(“宠物的亲密度只能在0-100之间!”);
 this.love = 60;
 return;
 }
 this.love = love;
 }
 public int getLove(){
 return this.love;
 }
 /**
 * 输出宠物的信息
 */
 public void print() {
 System.out.println(“宠物的自白:n我的名字叫” + this.name +
 “,健康值是” + this.health + “,和主人的亲密度是”
 + this.love );
 }
 //宠物生病后看病
 //抽象方法所在的类必须定义为抽象类
 //抽象类中一定要有抽象方法吗?不一定
 //一个抽象类的抽象方法必须被子类(普通)实现
 //除非其子类也是抽象类
 public abstract void toHospital();
 //宠物吃饭
 public abstract void eat();
 }
/**
宠物狗狗类/**
宠物企鹅2.返回值类型使用多态
 //商品类
 public abstract class Goods {
 //打印输出商品价格
 public abstract void printPrice();
 }
 //食品类
 public class Foods extends Goods {
 public void printPrice() {
 System.out.println(“打印输出食品价格”);
 }
 }
 //电视类
 public class TVs extends Goods {
 public void printPrice() {
 System.out.println(“打印输出电视价格”);
 }
 }
 //商品工厂,可以根据厂家需求生产不同的商品
 public class Factory {
 //生产商品:使用父类作为方法返回值类型
 public Goods getGoods(String str){
 if(str.equals(“food”)){
 return new Foods();
 }else{
 return new TVs();
 }
 }
 }
 //测试商品生产及输出商品价格
 public class Test {
 public static void main(String[] args) {
 Factory factory = new Factory();
 Goods goods = factory.getGoods(“food”);
 goods.printPrice();
goods = factory.getGoods("tvs");goods.printPrice(); } 123
}
 九、泛型有没有多态?
 泛型没有多态
十、泛型的?问号: 只能声明在类型|方法上,不能声明类或者使用时,请用代码证明这句话的正确性.
 public boolean addAll(Collection <? extends E > c) {
 Object[] a = c.toArray();
 int numNew = a.length;
 ensureCapacity(size + numNew); // Increments modCount
 System.arraycopy(a, 0 , elementData, size, numNew);
 size += numNew;
 return numNew != 0 ;
 }
十一、泛型嵌套:由外到内拆分.请用代码解释这句话.
 public class Bjsxt {
 T stu;
 public static void main(String[] args) {
 //泛型的嵌套
 Bjsxt<Student> room = new Bjsxt<Student>();
 //从外到内拆分
 room.stu = new Student();
 Student stu1 = room.stu;
 String score = stu1.score;
 System.out.println(score); 
 }
 }
十二、泛型有没有数组?
 泛型没有数组
十三、用匿名内部类实现迭代器。
 package Col;
 import java.util.Iterator;
 public class MyArrayList implements java.lang.Iterable{
 private String[] elem = {“a”, “b”, “c”, “d”, “e”, “f”, “g”};
 private int size = elem.length;
 public Iterator iterator() {
 return new Iterator() {
 private int cursor = -1;
 public boolean hasNext() {
 return cursor + 1 < size;
 }
 public String next(){
 cursor++;
 return elem[cursor];
 }
 public void remove(){
 }
 };
 }
 public static void main(String[] args){
 MyArrayList list=new MyArrayList();
 Iterator it=list.iterator();
 while(it.hasNext()){
 System.out.println(it.next());
 it.remove();
 }
 it=list.iterator();
 while (it.hasNext()){
 System.out.println(it.hasNext());
 }
 System.out.println(“增强for,必须实现java.lang.Iterable接口,重写Iterable”);
 for(String temp:list){
 System.out.println(temp);
 }
 }
 }
十四、用分拣思路统计字符串出现次数"this-is-my-first-dog-but-i-like-cat-and-cat-is-nice-and-dog-is-friendly-this-why-i-like-cat-more".
 1.封装单词类
 package Map;
 public class Letter {
 private String name;
 private int count;
 public Letter(String name, int count) {
 super();
 this.name = name;
 this.count = count;
 }
 public Letter() {
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getCount() {
 return count;
 }
 public void setCount(int count) {
 this.count = count;
 }
 }
 2.用分拣思路统计字符串出现次数
 import java.util.Set;
 public class Demo01 {
 public static void main(String[] args) {
 String str = “this is a cat and is a mice and where is the food”;
 String[] strArray = ((String) str).split(" “);
 Map<String, Letter> letters = new HashMap<String, Letter>();
 for (String temp : strArray) {
 Letter col=null;
 if(null==(col=letters.get(temp))) {
 col = new Letter();
 col.setCount(1);
 letters.put(temp,col);
 }else{
 col.setCount(col.getCount()+1);
 }
 }
 Set keys = letters.keySet();
 for (String key : keys) {
 Letter col = letters.get(key);
 System.out.println(“字母” + key + “,次数” + col.getCount());
 }
 }
 }
 十五、用面向对象思想+分拣思路统计班级总人数和平均分。
 1.创建学生类
 package Map;
 import java.util.ArrayList;
 public class Student {
 private String name;
 private String no;
 private double score;
 public Student() {
 }
 public Student(String name, String no, double score) {
 super();
 this.name = name;
 this.no = no;
 this.score = score;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getNo() {
 return no;
 }
 public void setNo(String no) {
 this.no = no;
 }
 public double getScore() {
 return score;
 }
 public void setScore(double score) {
 this.score = score;
 }
 }
 2.创建班级类
 package Map;
 import java.util.ArrayList;
 import java.util.List;
 public class ClassRoom {
 private String no;
 private List stuList;
 private double total;
 public ClassRoom() {
 //避免出现空指针异常
 stuList=new ArrayList();
 }
 public ClassRoom(String no) {
 this.no=no;
 //避免出现空指针异常
 stuList=new ArrayList();
 }
 public ClassRoom(String no, List stuList, double total) {
 super();
 this.no = no;
 this.stuList = stuList;
 this.total = total;
 }
 public String getNo() {
 return no;
 }
 public void setNo(String no) {
 this.no = no;
 }
 public List getStuList() {
 return stuList;
 }
 public void setStuList(List stuList) {
 this.stuList = stuList;
 }
 public double getTotal() {
 return total;
 }
 public void setTotal(double total) {
 this.total = total;
 }
 }
 3.创建测试类,统计班级平均分
 package Map;
 import cn.bjsxt.Collection.SxtLinkedList;
 import java.util.*;
 public class Demo02 {
 public static void main(String[] args) {
 Demo02 test=new Demo02();
 test.view(test.count(test.exam()));
 }
 //模拟考试输入学生成绩
 public List exam(){
 List list=new ArrayList();
 list.add(new Student(“depp”,“a”,90));
 list.add(new Student(“depp”,“a”,80));
 list.add(new Student(“depp”,“a”,70));
 list.add(new Student(“jack”,“b”,70));
 return list;
 }
 //统计分析数据
 public Map<String,ClassRoom> count(List list){
 Map<String,ClassRoom> map =new HashMap<String,ClassRoom>();
 for(Student stu:list){
 String no=stu.getNo();
 double score=stu.getScore();
 ClassRoom room=map.get(no);
 //不存在班级编号,新建一个
 if(room==null){
 room=new ClassRoom(no);
 map.put(no, room);
 }
 //存在则放入
 room.getStuList().add(stu);
 //计算总分
 room.setTotal(room.getTotal()+score);
 }
 return map;
 }
 //查看班级总分平均分
 public void view(Map<String,ClassRoom> map){
 Set keys=map.keySet();
 Iterator keysIt=keys.iterator();
 while(keysIt.hasNext()){
 String no=keysIt.next();
 ClassRoom room=map.get(no);
 double total=room.getTotal();
 double avg=Math.round(room.getTotal()/room.getStuList().size());
 System.out.println(“total=”+total+”,avg="+avg);
 System.out.println();
 }
 }
 }
相关知识
泛型相关用法(day3)
防治猫疱疹病毒:泛昔洛韦的使用方法和注意事项
宠物狗梳毛工具详细用法
部落冲突的英雄用法
【泛跑宠物俱乐部】泛跑宠物俱乐部电话,泛跑宠物俱乐部地址
猫泛白细胞减少症(猫瘟)全面治疗解析!
宠物狗梳毛工具的详细用法
国家定调:泛清真化=宗教极端
宠物湿巾的正确用法
宠物梳子(宠物狗梳毛工具详细用法)
网址: 泛型相关用法(day3) https://m.mcbbbk.com/newsview578469.html
| 上一篇: 【四二学堂】模板语法 | 
		下一篇: 喂狗吃辣子鸡博主回应争议,不接受 |