Java 初学 day15

news/2024/10/19 10:09:35

java 15

1、Collections

Collections:是java针对集合操作专门提供的一个工具类

静态方法

public static <T> void sort(List<T> list)
public static <T> int binarySearch(List<?> list,T key)
public static <T> T max(Collection<?> coll)
public static void reverse(List<?> list)
public static void shuffle(List<?> list)

运用示例

public class CollectionsDemo1 {public static void main(String[] args) {ArrayList<Integer> list1 = new ArrayList<>();list1.add(34);list1.add(7);list1.add(12);list1.add(734);list1.add(38);list1.add(29);System.out.println(list1);System.out.println("-------------------------------");//public static <T> void sort(List<T> list)Collections.sort(list1); // 底层是调用了Arrays工具类中的sort方法System.out.println(list1);//public static <T> int binarySearch(List<?> list,T key)// 二分查找【前提是序列是有序的】//[7, 12, 29, 34, 38, 734]System.out.println(Collections.binarySearch(list1, 100));//public static <T> T max(Collection<?> coll) 求集合中最大值System.out.println(Collections.max(list1));ArrayList<String> list2 = new ArrayList<>();list2.add("hello");list2.add("world");list2.add("java");list2.add("apple");list2.add("hadoop");System.out.println(Collections.max(list2));//public static void reverse(List<?> list)Collections.reverse(list1);System.out.println(list1);System.out.println("===========================");//public static void shuffle(List<?> list)  随机打乱元素Collections.shuffle(list1);System.out.println(list1); // [34, 734, 38, 7, 12, 29]  [34, 12, 7, 38, 29, 734]}
}
我们在说Vector类的时候,说到即便是安全的,我们也不会用它。使用Collections工具类可以将任意一个不安全的集合类变成一个线程安全的集合类

Collections.synchronizedList()

public class CollectionsDemo2 {public static void main(String[] args) {ArrayList<Integer> list1 = new ArrayList<>();Vector<Integer> v1 = new Vector<>();//        List<Integer> list2 = Collections.synchronizedList(list1);
//        list2.add(1);
//        list2.add(1);
//        list2.add(1);
//        for (Integer i : list2) {
//            System.out.println(i);
//        }}
}

2、递归

递归:方法定义时内部调用自身的现象

fun1().fun2() 这叫方法的链式调用
fun1(show1()) 这叫方法的嵌套调用

写递归需要考虑的东西

1、开始条件
2、出口

递归故事:

1、从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容:  1从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容:    2从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容:   3从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事,讲的故事内容: 4....结束条件:山倒了,老和尚圆寂了。2、来数加学习大数据,找工作,挣钱,娶老婆,生娃:来数加学习大数据,找工作,挣钱,娶老婆,生娃:来数加学习大数据,找工作,挣钱,娶老婆,生娃:...结束条件:挣不到钱,没有生娃...

需求:使用递归实现一个数的阶乘

public class DiGui {public static void main(String[] args) {int n = 4;System.out.println(n+"的阶乘为"+JieChen(n));}public static int JieChen(int n){if(n==1){return 1;}else{return n*JieChen(--n);}}
}

3、异常处理

什么叫异常

异常:java程序编译或运行过程中出现的问题
Throwable:Error: 表示非常严重的问题,自己无法解决的问题Exception:除了RuntimeException其它异常【编译时期异常】: 一般指的是异常尚未处理就编译了RuntimeException【运行时期异常】: 运行过程中报错了,一般情况下是因为语法逻辑不正确导致JVM遇到问题时,默认的处理方案是:停止程序,抛出错误。

异常的处理方案

1、try...catch...finally
try...catch使用注意事项
1、当try中出现异常时,JVM会对应创建一个异常类对象
2、自上而下会与catch中的异常进行匹配,若匹配上就相当于处理了,执行catch中的逻辑
3、若try中有多个异常,当第一个异常触发时,try中的其它后续代码都不会执行,JVM会对应创建一个异常类对象进行第二步匹配
4、可以直接写一个catch里面是所有异常的父类、
5、若存在多个catch匹配,需要将父类异常往后写
6、若使用jdk新特性的写法的话,异常类之间不能存在继承关系
public class ExceptionDemo2 {public static void main(String[] args) {int[] arr = {11, 22, 33, 44, 55};//        try {
//            System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/3); // new ArithmeticException()
//            System.out.println("江川比李刚帅!");
//        }catch (ArrayIndexOutOfBoundsException e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦!!");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误!!");
//        }//        try {
//            System.out.println(arr[2]); // new ArrayIndexOutOfBoundsException()
//            System.out.println(10/0); // new ArithmeticException()
//            System.out.println("江川比李刚帅!");
//        }catch (ArithmeticException e){
//            System.out.println("除0错误!!");
//        }catch (Exception e){ // = new ArrayIndexOutOfBoundsException()
//            System.out.println("出错啦!!");
//        }try {System.out.println(arr[8]); // new ArrayIndexOutOfBoundsException()System.out.println(10 / 3); // new ArithmeticException()System.out.println("江川比李刚帅!");} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) { // = new ArrayIndexOutOfBoundsException()System.out.println("出错啦!!");}System.out.println("李刚真帅!");}
}
打印异常printStackTrace()
public class ExceptionDemo3 {public static void main(String[] args) {int[] arr = {11, 22, 33, 44, 55};//        System.out.println(arr[8]);
//        System.out.println(3/0);try {
//            System.out.println(arr[8]);System.out.println(3/0);// new ArrayIndexOutOfBoundsException()} catch (Exception e) { // = new ArrayIndexOutOfBoundsException()
//            System.out.println(e.getMessage());
//            System.out.println(e.toString());//void printStackTrace()//将此throwable和其追溯打印到标准错误流。e.printStackTrace();}System.out.println("李刚是世界首富!!");}
}

finally

无论try中的代码是否出错,finally都会执行。
finally一般来说,用作释放资源的作用。
public class ExceptionDemo4 {public static void main(String[] args) {int[] arr = {11, 22, 33, 44, 55};try {System.out.println(3/2);// new ArrayIndexOutOfBoundsException()} catch (Exception e) { // = new ArrayIndexOutOfBoundsException()e.printStackTrace();} finally {System.out.println("数加666");}System.out.println("李刚是世界首富!!");}
}

throw

 在方法的定义上抛出异常类, throws本身是不会处理异常的,只是当时方法内部不用处理了,但是当调用者调用有问题的方法时,需要调用者进行处理throw: 抛出在方法内部抛出异常对象,表示一个确定的异常注意:当调用者调用抛出运行时期异常的方法时,可以选择不去处理,也能运行。当调用者调用抛出编译时期异常的方法是,必须要进行处理,否则编译不通过无法运行。小故事理解 throw throws try...catch 的使用:江川是一个快乐的小矿工,有一天他挖到了一个远古炸弹💣【throw】,往洞外运输【throws】,运输给了矿厂管理人员管理员对炸弹💣进行处理【try..catch】
public class ThrowsDemo1 {public static void main(String[] args){
//        try {
//            fun1();
//        }catch (Exception e){
//            e.printStackTrace();
//        }//        fun1();
//
//        System.out.println("hello world");//        try {
//            fun2();
//        }catch (Exception e){
//            e.printStackTrace();
//        }//        fun1();try{fun3();}catch (Exception e){e.printStackTrace();}}public static void fun3() throws Exception{int i= 0;if(i==0){throw new ArithmeticException();}else {System.out.println(5/i);}}public static void fun2() throws IOException {FileInputStream fis = new FileInputStream("");}public static void fun1() throws ArithmeticException{int[] arr = {11, 22, 33, 44, 55};System.out.println(3 / 0);// new ArrayIndexOutOfBoundsException()System.out.println("李刚是世界首富!!");}
}

4、IO流

File【文件】:

是计算机中所有文件的抽象表示, 将来File对象目标可能存在,也可能不存在。

构造方法:
public File(String pathname)
public File(String parent,String child)
public File(File parent,String child)
路径:
绝对路径【完整路径】:D:\projects\IdeaProjects\bigdara32\java\src\com\shujia\day15\ketang\a1.txt
相对路径:java/src/com/shujia/day15/ketang/a1.txt
public class FileDemo1 {public static void main(String[] args) {//public File(String pathname)
//        File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang\\a1.txt");
//        System.out.println(f1);
//        File f2 = new File("java/src/com/shujia/day15/ketang/a1.txt");
//        System.out.println(f2);//public File(String parent,String child)
//        File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang","a1.txt");
//        System.out.println(f1);//public File(File parent,String child)File file = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang");File f1 = new File(file, "a1.txt");System.out.println(f1);}
}
创建功能
public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()
删除功能
public boolean delete()
重命名功能
public boolean renameTo(File dest)
public class FileDemo2 {public static void main(String[] args) throws Exception{File file = new File("java/src/com/shujia/day15/ketang/a1.txt");//public boolean createNewFile()
//        System.out.println(file.createNewFile());//public boolean mkdir() 创建单极文件夹
//        System.out.println(file.mkdir());//public boolean mkdirs() 创建多极文件夹
//        System.out.println(file.mkdirs());//public boolean delete() 只能删除空文件夹,或一个文件
//        System.out.println(file.delete());//public boolean renameTo(File dest)
//        File file2 = new File("java/src/com/shujia/day15/ketang/李刚.txt");
//        System.out.println(file.renameTo(file2));}
}
判断功能
public boolean isDirectory()
public boolean isFile()
public boolean exists()
public boolean canRead()
public boolean canWrite()
public boolean isHidden()
public class FileDemo3 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang/李刚.txt");// public boolean isDirectory()System.out.println(file.isDirectory());//public boolean isFile()System.out.println(file.isFile());//public boolean exists()System.out.println(file.exists());//public boolean canRead() 是否可读System.out.println(file.canRead());//public boolean canWrite() 是否可写System.out.println(file.canWrite());//public boolean isHidden() 是否被隐藏System.out.println(file.isHidden());}
}
基本获取功能
public String getAbsolutePath()
public String getPath()
public String getName()
public long length()
public long lastModified()
public class FileDemo4 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang/李刚.txt");// public String getAbsolutePath() 获取绝对路径System.out.println(file.getAbsolutePath());//public String getPath() 获取相对路径System.out.println(file.getPath());//public String getName() 获取文件或文件夹的名字System.out.println(file.getName());//public long length() 获取文件中字节数System.out.println(file.length());//public long lastModified() 获取上一次修改的时间戳【毫秒级别的】
//        System.out.println(file.lastModified());String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date(file.lastModified()));System.out.println("上一次修改的时间:"+time);}
}
高级获取功能
public String[] list()
public File[] listFiles()
public class FileDemo5 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang");//public String[] list() 将目录下所有的文件以及文件夹的名字放到一个数组中返回String[] nameList = file.list();if(nameList!=null){for (String s : nameList) {System.out.println(s);}}//        assert nameList!=null;
//        for (String s : nameList) {
//            System.out.println(s);
//        }//public File[] listFiles() 将目录下所有的文件以及文件夹都封装成一个一个的File对象放到一个数组中File[] files = file.listFiles();if(files!=null){for (File file1 : files) {System.out.println(file1);}}}
}
需求:获取ketang目录下所有.txt后缀的文件
public class FileDemo6 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang");//获取当前目录下所有的文件或者文件夹的集合File[] files = file.listFiles();if(files!=null){for (File file1 : files) {if(file1.isFile() && file1.getName().endsWith(".txt")){System.out.println(file1.getName());}}}}
}
public String[] list(FilenameFilter filter) //这个方法返回一个字符串数组,包含满足过滤器条件的文件名。如果没有满足条件的文件,返回一个空数组。
public File[] listFiles(FilenameFilter filter) //这个方法返回一个File对象数组,包含满足过滤器条件的文件和文件夹。如果没有满足条件的文件或文件夹,返回一个空数组
public class FileDemo7 {public static void main(String[] args) {File file = new File("java/src/com/shujia/day15/ketang");//public File[] listFiles(FilenameFilter filter)File[] files = file.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {// 当这里返回true的时候,表示将文件放到数组中// dir表示当前目录,name表示文件或者文件夹名字File f = new File(dir, name);return f.isFile() && f.getName().endsWith(".txt");}});if(files!=null){for (File file1 : files) {System.out.println(file1);}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73354.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统命令3

1、df 查看磁盘使用情况Filesystem:代表该文件系统时哪个分区,所以列出的是设备名称。 1K-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变单位大小,也可以用-B来设置。 Used:已经使用的空间大小。Available:剩余的空间大小。 Use%:磁盘使用率。如果使用率在90%以上…

线性表学习1

线性结构 若结构是非空有限集,则有且仅有一个开始结点和一个终端结点,并且除了首尾节点外所有结点都最多只有一个直接前趋和一个直接后继。 可表示为:(a1,a2,a3,...) 特点:只有一个首结点和尾结点 本质特征:除首尾结点外,其他结点只有一个直接前驱和一个直 接后继。 简言…

学习 gradle 基础

简介 Gradle 的优势一款最新的,功能最强大的构建工具,用它逼格更高 使用 Groovy 或者 Kotlin 代替 XML,使用程序代替传统的 XML 配置,项目构建更灵活 丰富的第三方插件,让你随心所欲使用 完善 Android,Java 开发技术体系下载和安装 官网地址 https://services.gradle.org…

AutoResetEvent双向信号(生产者和消费者)例子

AutoResetEvent是一个非常有用的线程同步机制,尤其是在处理生产者和消费者问题的时候,尤其适用。本随笔记录下生产者和消费者一对一问题的两种写法并进行代码执行逻辑的分析,来加深对AutoResetEvent的理解。 写法一:internal class Program {public static AutoResetEvent …

数据采集和融合技术作业1

作业① 1)用requests和BeautifulSoup库方法定向爬取给定网址的数据,屏幕打印爬取的大学排名信息。 a、主要代码解析 该函数从获取的JSON数据中提取前 num 名大学的信息,并将这些信息存储到 ulist 列表中,同时格式化输出这些大学的排名信息 def printUnivList(ulist, html, …

沃顿商学院商业人工智能笔记-六-

沃顿商学院商业人工智能笔记(六) P46:12_简介.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 嗨,我是迈克尔罗伯茨。我是威廉H罗伯茨教授。 我是宾夕法尼亚大学沃顿商学院的金融学劳伦斯教授。 在这一系列视频中,我们将讨论金融、机器学习。以及人工智能。因此,当我想到金…

沃顿商学院商业人工智能笔记-九-

沃顿商学院商业人工智能笔记(九) P82:19_更广泛的隐私和伦理问题.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 所以让我们讨论一下关于使用数据科学和人工智能的一些更广泛的问题。一般来说,在工作场所管理人际关系。这些是伦理问题,也是隐私问题。 所以让我们谈谈这些问…

沃顿商学院商业人工智能笔记-三-

沃顿商学院商业人工智能笔记(三) P123:22_AI的风险.zh_en - GPT中英字幕课程资源 - BV1Ju4y157dK 在这次讲座中,我们将讨论AI的一些风险。我将以一个简单的统计风险开始,它有重要的管理意义。 然后我会谈论社会和伦理风险。 所以我想讨论的第一个风险是过拟合风险。 现在,…