1.java异常
import java.util.Objects;
public class Demo {
public static void main(String[] args) {
Demo demo=new Demo();
//demo.nullText(null);
// B b=new B();
// demo.classText(b);
// demo.ArithmeticText(4,0);
// int[] arr=new int[]{1,2};
// demo.ArrayText(arr,3);
}
public void nullText(A a){
a.text();
}
public void classText(Object o){
A a=(A)o;
}
public void ArithmeticText(int a,int b){
System.out.println(a/b);
}
public void ArrayText(int[] arr,int index){
System.out.println(arr[index]);
}
}
- demo.nullText(null);因为传入数据为空,会出现NullPointerException
- demo.classText(b);因为把B类型的b强制转换为A类型的a,会出现ClassCastException
- demo.ArithmeticText(4,0);因为除数为0,会出现ArithmeticException
- int[] arr=new int[]{1,2};demo.ArrayText(arr,3);因为数组arr只有下标0,1,却去访问下标3会出现 ArrayIndexOutOfBoundsException
2.常用类String
package xiti22;
public class StringText {
public static void main(String[] args) {
String str = "xxx.yyy.zzz.mp3";
System.out.println(str);
StringText stringText = new StringText();
str = stringText.reName(str, "123456");
System.out.println(str);
}
/**
*重命名
* @param str 原文件名
* @param newStr 新文件名
* @return 新文件名(完整)
*/
public String reName(String str, String newStr) {
String[] strs = str.split("\\."); // 使用"."作为分隔符将str拆分成字符串数组
String suffix = "." + strs[strs.length - 1]; // 获取原始文件名的后缀
return newStr + suffix; // 将新的文件名和后缀拼接起来并返回
}
}
split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) 语法:str.split(str="",num=string.count(str))[n] 参数说明: str:表示为分隔符,默认为空格,但是不能为空(’’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素 num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量 [n]:表示选取第n个分片 注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略
3. 常用类Date
package xiti23.xiti1;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateText {
public static void main(String[] args) throws ParseException { // 主方法,可能会抛出ParseException异常
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 创建SimpleDateFormat对象,指定日期格式为"yyyy-MM-dd"
Date date = simpleDateFormat.parse("2022-11-11"); // 将字符串"2022-11-11"解析为Date对象
Calendar objCalendar = new GregorianCalendar();
objCalendar.setTime(date); // 将日期设置为objCalendar的时间
System.out.println("星期: " + (objCalendar.get(Calendar.DAY_OF_WEEK) - 1)); // 打印输出星期几的值
}
}
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
parse:将字符串转换成时间
Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
4.常用类Random
package xiti23.xiti2;
import java.util.ArrayList;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<Student>(); // 创建一个ArrayList对象,用于存储学生信息
boolean flag; // 定义一个boolean类型的变量flag,用于判断是否继续录入学生信息
do {
Student student = getStudent(); // 调用getStudent方法获取一个学生对象
students.add(student); // 将学生对象添加到ArrayList中
flag = isFlag(); // 调用isFlag方法判断是否继续录入学生信息
} while (flag);
for (int i = 0; i < students.size(); i++) { // 遍历ArrayList中的学生信息并输出
System.out.println("学号:" + students.get(i).getID() + ",姓名:" + students.get(i).getName() + ",年龄:" + students.get(i).getAge());
}
}
/**
* 判断是否继续录入学生信息
* @return 是否继续
*/
private static boolean isFlag() {
Scanner input = new Scanner(System.in);
System.out.println("是否继续?y(继续)/n(不继续)");
switch (input.next()) { // 使用switch语句判断用户输入的选项
case "n":
return false; // 如果用户输入"n",返回false,表示不继续录入
case "y":
return true; // 如果用户输入"y",返回true,表示继续录入
default:
System.out.println("没有这个选项,请重新输入");
return isFlag(); // 如果用户输入其他选项,提示重新输入,并递归调用isFlag方法
}
}
/**
* 获取学生信息
* @return 学生信息
*/
private static Student getStudent() {
Scanner input = new Scanner(System.in);
Student student = new Student(); // 创建一个Student对象
System.out.println("请输入姓名");
student.setName(input.next()); // 获取用户输入的姓名,并设置给学生对象的姓名属性
System.out.println("请输入年龄");
student.setAge(input.nextInt()); // 获取用户输入的年龄,并设置给学生对象的年龄属性
student.setID(); // 调用学生对象的setID方法,随机生成学号
return student;
}
}
Random random=new Random();(int)(random.nextFloat()*500);random.nextFloat()可以生成0-1的浮点随机数,*500可以生成0-500的浮点随机数,int可以使浮点数向上取整可以生成0-499的浮点整数
5.List集合
package xiti4;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Worker> list = new ArrayList<>(); // 创建一个ArrayList对象,用于存储工人信息
Worker worker1 = new Worker("zhang3", 18, 3000);
Worker worker2 = new Worker("li4", 25, 3500);
Worker worker3 = new Worker("wang5", 22, 3200);
list.add(worker1); // 将Worker对象添加到ArrayList中
list.add(worker2);
list.add(worker3);
Worker worker4 = new Worker("zhao6", 24, 3300);
list.add(1, worker4); // 在指定位置插入Worker对象
list.remove(3); // 在指定位置删除Worker对象
for (int i = 0; i < list.size(); i++) { // 利用for 循环遍历,打印List 中所有工人的信息
System.out.println("姓名:" + list.get(i).getName() + ",年龄:" + list.get(i).getAge() + ",工资:" + list.get(i).getSalary());
}
System.out.println();
for (Worker worker : list) { // 利用迭代遍历,对List 中所有的工人调用work 方法。
worker.work();
}
}
}
.什么是集合
1、 集合是Java API所提供的一系列类,可以用于动态存放多个对象。--`集合只能存对象`
2、 集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类)
3、 集合类可以自动扩容。
4、 集合类全部支持泛型,是一种数据安全的用法。
Collection的常用方法
1、 int size(); 返回此collection中的元素数。
2、 boolean isEmpty(); 判断此collection中是否包含元素。
3、 boolean contains(Object obj); 判断此collection是否包含指定的元素。
4、 boolean contains(Collection c); 判断此collection是否包含指定collection中的所有元素。
5、 boolean add(Object element); 向此collection中添加元素。
6、 boolean addAll(Collection c);将指定collection中的所有元素添加到此collection中
7、 boolean remove(Object element); 从此collection中移除指定的元素。
8、 boolean removeAll(Collection c); 移除此collection中那些也包含在指定collection中的所有元素。
9、 void clear(); 移除些collection中所有的元素。
10、boolean retainAll(Collectionc); 仅保留此collection中那些也包含在指定collection的元素。
11、Iterator iterator(); 返回在此collection的元素上进行迭代的迭代器。
12、Object[]toArray();把此collection转成数组。