Java学习打卡Day24

知识总结

泛型集合

  1. 概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致
  2. 特点:
    (1)编译时即可检查,而非运行时抛出异常
    (2)访问时,不必类型转换(拆箱)
    (3)不同泛型之间引用不能相互赋值,泛型不存在多态

泛型

  1. 概念:约束-规范类型
    (E代表通配,可以是任意类型,未指明类型前,为Object,泛型可以动态)
  2. 泛型的场景:
    (1) 实例泛型:
    类:创建对象时,为类所定义的泛型,进行参数化赋值;
    接口:实现接口时,为接口所定义的泛型,进行参数化赋值
    (2) 静态泛型:
    定义在方法的返回值类型前面,、、<T extends Comparable>、<T extends Comparable<? super T>>
    定义在方法的形参列表当中:<?>、<? extends Object>、<? super Integer>,不支持使用&

Collections工具类

概念:集合类工具,定义了除了存取以外的集合常用方法

  1. public static <T extends Comparable<? super T>>void sort(Listlist)排序,要求:必须实现Comparable,必须可与自身类型比,以及父类类型比
  2. public static void reverse(List<?>list)反转、倒置元素
  3. public static void shuffle(List<?>list)随机重置顺序

今日练习

  1. 有下面代码
interface IA{
	void ma();
}

class MyClass implements IA{
	public void ma(){}
	public String toString(){
		return "MyClass toString()";
	}
}
public class TestMyClass {

	public static void main(String[] args) {
		IA ia = new MyClass();
		System.out.println(ia);

	}

}

选择正确答案:
A.编译不通过,因为IA接口中没有定义toString方法
B.编译通过,输出:“IA@地址”
C.编译通过,输出:“MyClass toString()”
答:C

  1. 给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及数字组成。
    答:
import java.util.Scanner;

public class TestString {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入字符的长度:");
		int i = input.nextInt();
		java.util.Random r = new java.util.Random();
		String str = "";
		StringBuilder sBuilder = new StringBuilder(str);
		for(int j = 0 ; j < i ; j++) {
			int a = r.nextInt(123);
			if(a <= 9){
				sBuilder.append(a);
				continue;
			}
			if(a >= 65 && a <= 90){
				sBuilder.append((char)a);
				continue;
			}
			if(a >= 97 && a <= 122){
				sBuilder.append((char)a);
				continue;
			}else
				j--;
		}
		str = sBuilder.toString();
		System.out.println(str);
	}
}
  1. 给定一个字符串,判断该字符串中是否包含某个子串,求出子串的所有出现位置。
    答:
public class TestStringLocal {

	public static void main(String[] args) {
		String str = "abcd23abc34bcd";
		String str2 = "bc";
		char[] chr = str2.toCharArray();
		if(str.contains(str2)){
			for(int i = 0; i < str.length() ; i++){
				if(str.indexOf(chr[0],i) != (-1)){
					if(str.charAt(i+1) == chr[1]){
						i = str.indexOf(chr[0],i);
						System.out.println(i);
					}
				}
			}
		}else
			System.out.println("字符串中" + str + "未包含" + str2 + "字符");
	}
}

  1. 有如下Student对象
    在这里插入图片描述
    有如下List:
    List list = new ArrayList();
    list.add(new Student(“Tom”,18,100,“class05”));
    list.add(new Student(“Jerry”,22,70,“class04”));
    list.add(new Student(“Owen”,25,90,“class05”));
    list.add(new Student(“Jim”,30,80,“class05”));
    list.add(new Student(“Steve”,28,66,“class06”));
    list.add(new Student(“Kevin”,24,100,“class04”));
    在这个list的基础上,完成下列要求:
    (1)计算所有学生的平均年龄
    (2)计算各个班级的平均分
    答:
import java.util.*;

public class TestStudent {

	public static void main(String[] args) {
		List<Student> list = new ArrayList<Student>();
		list.add(new Student("Tom",18,100,"class05"));
		list.add(new Student("Jerry",22,70,"class04"));
		list.add(new Student("Owen",25,90,"class05"));
		list.add(new Student("Jim",30,80,"class05"));
		list.add(new Student("Steve",28,66,"class06"));
		list.add(new Student("Kevin",24,100,"class04"));
		double sumAge = 0;
		for(int i = 0 ; i < list.size() ; i++){
			sumAge += list.get(i).age;
		}
			System.out.println("所有学生平均年龄:" + sumAge/list.size());
		
		int j4 = 0 , j5 = 0 , j6 = 0;
		int sum4 = 0 , sum5 = 0 , sum6 = 0;
		for(int i = 0 ; i < list.size() ; i++){
			if(list.get(i).classNum.charAt(6) == '4'){
				j4++;
				sum4 += list.get(i).score;
			}
			if(list.get(i).classNum.charAt(6) == '5'){
				j5++;
				sum5 += list.get(i).score;
			}
			if(list.get(i).classNum.charAt(6) == '6'){
				j6++;
				sum6 += list.get(i).score;
			}
		}
		System.out.println("class04班的平均分为:" + sum4/j4);
		System.out.println("class05班的平均分为:" + sum5/j5);
		System.out.println("class06班的平均分为:" + sum6/j6);
	}
}

	

class Student{
	String name;
	int age;
	double score;
	String classNum;
	public Student(String name, int age, double score, String classNum) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
		this.classNum = classNum;
	}
	
}

发布了33 篇原创文章 · 获赞 3 · 访问量 911

猜你喜欢

转载自blog.csdn.net/qq_44952731/article/details/104679158