黑马Java——异常、File、综合案例

目录

一、异常

1、异常的分类

1.1、Error

1.2、Exception

1.3、小结

2、编译时异常和运行时异常

2.1、编译时异常

2.2、运行时异常

2.3、为什么异常要分成编译时异常和运行时异常?

2.4、小结(运行时异常和编译时异常的区别)

3、异常的作用

3.1、查看bug的关键参考信息

3.2、作为方法内部的一种特殊返回值

4、JVM默认的处理方式

5、try…catch(捕获异常)

5.1、示例代码

6、灵魂四问

6.1、灵魂一问:如果try中没有遇到问题,怎么执行?

6.2、灵魂二问:如果try中可能会遇到多个问题,怎么执行?

6.3、灵魂三问:如果try中遇到的问题没有被捕获,怎么执行?

6.4、灵魂四问:如果try中遇到了问题,那么try下面的其它代码还会执行吗?

6.5、小结

7、异常中的常见方法

7.1、示例代码

7.2、System.err

8、抛出异常

8.1、示例代码

8.2、小结

9、综合练习

10、自定义异常

二、File

1、File的概述

1.1、路径

1.2、File常见的构造方法

1.2.1 根据文件路径创建文件对象

1.2.2根据父路径名字符串和子路径名字符串创建文件对象

1.2.3根据父路径对应文件对象和子路径名字符串创建文件对象

2、File的常见成员方法

2.1、创建、删除

1.createNewFile() 创建一个新的空的文件,创建成功返回true

2.mkdir   make Directory,文件夹(目录)

3.mkdirs   创建多级文件夹

 4.delete() 删除文件、空文件夹

2.2、获取并遍历

2.3、判断、获取

三、综合练习

1、File类相关的API练习题

1.1、在aaa文件夹中创建一个a.txt文件

1.2、找某一个文件夹中,是否有以avi结尾的电影(不考虑子文件夹)

1.3、找某一个文件夹中,是否有以avi结尾的电影(考虑子文件夹)

1.4、删除一个多级文件夹

1.5、统计一个文件夹的总大小

1.6、统计一个文件夹中每个文件的个数并打印


一、异常

 误区:不是让我们以后不出异常,而是出现异常了之后,如何去处理

1、异常的分类

1.1、Error

1.2、Exception

1.3、小结

2、编译时异常和运行时异常

2.1、编译时异常

2.2、运行时异常

2.3、为什么异常要分成编译时异常和运行时异常?

在编译阶段,Java不会运行代码,只会检查语法是否错误,或者做一些性能的优化

编译时异常更多的是提醒程序员检查本地的信息

运行时异常的核心在于提醒,而是代码出错导致程序出现的问题

2.4、小结(运行时异常和编译时异常的区别)

3、异常的作用

3.1、查看bug的关键参考信息

3.1.1

 

 3.1.2

 

3.2、作为方法内部的一种特殊返回值

 

4、JVM默认的处理方式

 示例代码:

异常:

5、try…catch(捕获异常)

5.1、示例代码

Console:

6、灵魂四问

6.1、灵魂一问:如果try中没有遇到问题,怎么执行?

顺序执行,没有问题,自然就不会触发捕获异常

6.2、灵魂二问:如果try中可能会遇到多个问题,怎么执行?

6.3、灵魂三问:如果try中遇到的问题没有被捕获,怎么执行?

6.4、灵魂四问:如果try中遇到了问题,那么try下面的其它代码还会执行吗?

6.5、小结

7、异常中的常见方法

7.1、示例代码

添加异常处理

7.2、System.err

在控制台中红色打印

 

 

8、抛出异常

8.1、示例代码

package com.yaqi.a01myexception;public class ExceptionDemo12 {public static void main(String[] args) {
/*throws:写在方法定义处,表示声明一个异常。告诉调用者,使用本方法可能会有哪些异常。throw :写在方法内,结束方法。手动抛出异常对象,交给调用者。方法中下面的代码不再执行了。需求:定义一个方法求数组的最大值
*/int[] arr = null;int max = 0;try {max = getMax(arr);} catch (NullPointerException e) {System.out.println("空指针异常");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("索引越界异常");}System.out.println(max);}public static int getMax(int[] arr)/* throws NullPointerException,ArrayIndexOutOfBoundsException*/{if(arr == null){//手动创建一个异常对象,并把这个异常交给方法的调用者处理//此时方法就会结束,下面的代码不会再执行了throw new NullPointerException();}if(arr.length == 0){//手动创建一个异常对象,并把这个异常交给方法的调用者处理//此时方法就会结束,下面的代码不会再执行了throw new ArrayIndexOutOfBoundsException();}System.out.println("看看我执行了吗?");int max = arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i] > max){max = arr[i];}}return max;}}

 

8.2、小结

9、综合练习

 

异常

  /*** 设置* @param name*/public void setName(String name) {int len = name.length();if(len<3||len>10){throw new RuntimeException();}this.name = name;}/*** 设置* @param age*/public void setAge(int age) {if(age<18||age>40){throw new RuntimeException();}this.age = age;}

 

package com.yaqi.test1;import java.util.Scanner;public class Test {public static void main(String[] args) {/*需求:键盘录入自己心仪的女朋友姓名和年龄。姓名的长度在 3 - 10之间,年龄的范围为 18 - 40岁,超出这个范围是异常数据不能赋值,需要重新录入,一直录到正确为止。提示:需要考虑用户在键盘录入时的所有情况。比如:录入年龄时超出范围,录入年龄时录入了abc等情况*///1.创建键盘录入对象Scanner sc =new Scanner(System.in);//2.创建女朋友对象GirlFriend gf = new GirlFriend();while (true) {//3.接收女朋友姓名try {System.out.println("请输入你心仪的女朋友的名字");String name = sc.nextLine();gf.setName(name);//4.接收女朋友的年龄System.out.println("请输入你心仪的女朋友的年龄");String ageStr = sc.nextLine();int age = Integer.parseInt(ageStr);gf.setAge(age);//如果所有的数据都是正确的,那么跳出循环break;} catch (NumberFormatException e) {System.out.println("年龄的格式有误,请输入数字");//continue;}catch(RuntimeException e){System.out.println("姓名的长度或者年龄的范围有误");//continue;}}//5.打印System.out.println(gf);}
}

 

 

10、自定义异常

NameFormatException.java: 

package com.yaqi.test2;public class NameFormatException extends RuntimeException{//技巧://NameFormat:当前异常的名字,表示姓名格式化问题//Exception:表示当前类是一个异常类//运行时:RuntimeException 核心 就表示由于参数错误而导致的问题//编译时:Exception 核心 提醒程序员检查本地信息public NameFormatException() {}public NameFormatException(String message) {super(message);}
}

 AgeOutOfBoundsException.java:

package com.yaqi.test2;public class AgeOutOfBoundsException extends RuntimeException{public AgeOutOfBoundsException() {}public AgeOutOfBoundsException(String message) {super(message);}
}

Student类(部分代码):

   /*** 设置* @param name*/public void setName(String name) {int len = name.length();if(len < 3 || len > 10){throw new NameFormatException(name + "格式有误,长度应该为:3~10");}this.name = name;}/*** 设置* @param age*/public void setAge(int age) {if(age < 18 || age > 40){throw new AgeOutOfBoundsException(age + "超出了范围");}this.age = age;}

测试类:

package com.yaqi.test2;import java.util.Scanner;public class Test {public static void main(String[] args) {/*需求:键盘录入自己心仪的女朋友姓名和年龄。姓名的长度在 3 - 10之间,年龄的范围为 18 - 40岁,超出这个范围是异常数据不能赋值,需要重新录入,一直录到正确为止。提示:需要考虑用户在键盘录入时的所有情况。比如:录入年龄时超出范围,录入年龄时录入了abc等情况*///1.创建键盘录入的对象Scanner sc = new Scanner(System.in);//2.创建女朋友的对象GirlFriend gf = new GirlFriend();while (true) {//3.接收女朋友的姓名try {System.out.println("请输入你心仪的女朋友的名字");String name = sc.nextLine();gf.setName(name);//4.接收女朋友的年龄System.out.println("请输入你心仪的女朋友的年龄");String ageStr = sc.nextLine();int age = Integer.parseInt(ageStr);gf.setAge(age);//如果所有的数据都是正确的,那么跳出循环break;} catch (NumberFormatException e) {e.printStackTrace();} catch (NameFormatException e) {e.printStackTrace();}catch (AgeOutOfBoundsException e) {e.printStackTrace();}}//5.打印System.out.println(gf);}
}

 

二、File

1、File的概述

  • File对象就表示一个路径,可以是文件路径、也可以是文件夹路径
  • 这个路径可以是存在的,也允许不存在的

1.1、路径

1.2、File常见的构造方法

1.2.1 根据文件路径创建文件对象
//1.根据字符串表示的路径,变成File对象String str = "C:\\Users\\alienware\\Desktop\\a.txt";File f1 = new File(str);System.out.println(f1);//C:\Users\alienware\Desktop\a.txt
1.2.2根据父路径名字符串和子路径名字符串创建文件对象
//2.父级路径:C:\Users\alienware\Desktop//子级路径:a.txtString parent = "C:\\Users\\alienware\\Desktop";String child = "a.txt";File f2 = new File(parent,child);System.out.println(f2);//C:\Users\alienware\Desktop\a.txt

 在Java中 \ 表示转义字符,\\才能正确表示路径分隔符

File f3 = new File(parent + "\\" + child);System.out.println(f3);//C:\Users\alienware\Desktop\a.txt

1.2.3根据父路径对应文件对象和子路径名字符串创建文件对象
//3.把一个File表示的路径和String表示路径进行拼接File parent2 = new File("C:\\Users\\alienware\\Desktop");String child2 = "a.txt";File f4 = new File(parent2,child2);System.out.println(f4);//C:\Users\alienware\Desktop\a.txt

1.3、小结

2、File的常见成员方法

2.1、创建、删除

delete方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站

1.createNewFile() 创建一个新的空的文件,创建成功返回true

//1.createNewFile 创建一个新的空的文件//细节1:如果当前路径表示的文件是不存在的,则创建成功,方法返回true//      如果当前路径表示的文件是存在的,则创建失败,方法返回false//细节2:如果父级路径是不存在的,那么方法会有异常IOException//细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件File f1 = new File("D:\\aaa\\ddd");boolean b = f1.createNewFile();System.out.println(b);//true

2.mkdir   make Directory,文件夹(目录)

//细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false//细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹。File f2 = new File("D:\\aaa\\aaa\\bbb\\ccc");boolean b = f2.mkdir();System.out.println(b); //false

3.mkdirs   创建多级文件夹

//3.mkdirs   创建多级文件夹//细节:既可以创建单级的,又可以创建多级的文件夹File f3 = new File("D:\\aaa\\ggg");boolean b = f3.mkdirs();System.out.println(b);//true

 4.delete() 删除文件、空文件夹

细节:

如果删除的是文件,则直接删除,不走回收站。
如果删除的是空文件夹,则直接删除,不走回收站
如果删除的是有内容的文件夹,则删除失败
//1.创建File对象File f1 = new File("D:\\aaa\\eee");//2.删除boolean b = f1.delete();System.out.println(b);

2.2、获取并遍历

listFIles() 获取当前路径下所有内容(重点掌握,其它了解) 

 

 

listFiles()方法的细节: 

 

listRoots() 获取系统中所有的盘符

 

 list() 获取当前该路径下所有内容(仅仅能获取名字)

通过listFiles()实现文件过滤器的效果:

list(FilenameFilter filter)  利用文件名过滤器获取当前该路径下的所有内容

listFiles(FilenameFilter filter)  利用文件名过滤器获取当前该路径下的所有内容 

2.3、判断、获取

代码示例:

 //1.length  返回文件的大小(字节数量)
        //细节1:这个方法只能获取文件的大小,单位是字节
        //如果单位我们要是M,G,可以不断的除以1024
        //细节2:这个方法无法获取文件夹的大小
        //如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起。

package com.yaqi.a01myfile;import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;public class FileDemo3 {public static void main(String[] args) {/*public long length()                返回文件的大小(字节数量)public String getAbsolutePath()     返回文件的绝对路径public String getPath()             返回定义文件时使用的路径public String getName()             返回文件的名称,带后缀public long lastModified()          返回文件的最后修改时间(时间毫秒值)*///1.length  返回文件的大小(字节数量)//细节1:这个方法只能获取文件的大小,单位是字节//如果单位我们要是M,G,可以不断的除以1024//细节2:这个方法无法获取文件夹的大小//如果我们要获取一个文件夹的大小,需要把这个文件夹里面所有的文件大小都累加在一起。File f1 = new File("D:\\aaa\\a.txt");long len = f1.length();System.out.println(len);//12File f2 = new File("D:\\aaa\\bbb");long len2 = f2.length();System.out.println(len2);//0System.out.println("====================================");//2.getAbsolutePath 返回文件的绝对路径File f3 = new File("D:\\aaa\\a.txt");String path1 = f3.getAbsolutePath();System.out.println(path1);File f4 = new File("myFile\\a.txt");String path2 = f4.getAbsolutePath();System.out.println(path2);System.out.println("====================================");//3.getPath 返回定义文件时使用的路径File f5 = new File("D:\\aaa\\a.txt");String path3 = f5.getPath();System.out.println(path3);//D:\aaa\a.txtFile f6 = new File("myFile\\a.txt");String path4 = f6.getPath();System.out.println(path4);//myFile\a.txtSystem.out.println("====================================");//4.getName 获取名字//细节1://a.txt://      a 文件名//      txt 后缀名、扩展名//细节2://文件夹:返回的就是文件夹的名字File f7 = new File("D:\\aaa\\a.txt");String name1 = f7.getName();System.out.println(name1);File f8 = new File("D:\\aaa\\bbb");String name2 = f8.getName();System.out.println(name2);//bbbSystem.out.println("====================================");//5.lastModified  返回文件的最后修改时间(时间毫秒值)File f9 = new File("D:\\aaa\\a.txt");long time = f9.lastModified();System.out.println(time);//1667380952425//如何把时间的毫秒值变成字符串表示的时间呢?//课堂练习://yyyy年MM月dd日 HH:mm:ssSimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");Date date = new Date(time);System.out.println(sdf.format(date));//1970年01月01日 08:00:00}
}

三、综合练习

1、File类相关的API练习题

1.1、在aaa文件夹中创建一个a.txt文件

 

import java.io.File;
import java.io.IOException;public class Test1 {public static void main(String[] args) throws IOException {//需求:在当前模块下的aaa文件夹中创建一个a.txt文件//1.创建a.txt的父级路径File file = new File("myfile\\aaa");//2.创建父级路径//如果aaa是存在的,那么此时创建失败的。//如果aaa是不存在的,那么此时创建成功的。file.mkdirs();//3.拼接父级路径和子级路径File src = new File(file,"a.txt");boolean b = src.createNewFile();if(b){System.out.println("创建成功");}else{System.out.println("创建失败");}}
}

 

1.2、找某一个文件夹中,是否有以avi结尾的电影(不考虑子文件夹)

package com.yaqi.a02test;import java.io.File;public class Test2 {public static void main(String[] args) {/*需求:定义一个方法找某一个文件夹中,是否有以avi结尾的电影。(暂时不需要考虑子文件夹)*/File file = new File("D:\\aaa\\bbb");boolean b = haveAVI(file);System.out.println(b);}/** 作用:用来找某一个文件夹中,是否有以avi结尾的电影* 形参:要查找的文件夹* 返回值:查找的结果  存在true  不存在false* */public static boolean haveAVI(File file){// D:\\aaa//1.进入aaa文件夹,而且要获取里面所有的内容File[] files = file.listFiles();//2.遍历数组获取里面的每一个元素for (File f : files) {//f:依次表示aaa文件夹里面每一个文件或者文件夹的路径if(f.isFile() && f.getName().endsWith(".avi")){return true;}}//3.如果循环结束之后还没有找到,直接返回falsereturn false;}
}

 

1.3、找某一个文件夹中,是否有以avi结尾的电影(考虑子文件夹)

import java.io.File;public class Test3 {public static void main(String[] args) {/* 需求:找到电脑中所有以avi结尾的电影。(需要考虑子文件夹)套路:1,进入文件夹2,遍历数组3,判断4,判断*/findAVI();}public static void findAVI(){//获取本地所有的盘符File[] arr = File.listRoots();for (File f : arr) {findAVI(f);}}public static void findAVI(File src){//"C:\\//1.进入文件夹srcFile[] files = src.listFiles();//2.遍历数组,依次得到src里面每一个文件或者文件夹if(files != null){for (File file : files) {if(file.isFile()){//3,判断,如果是文件,就可以执行题目的业务逻辑String name = file.getName();if(name.endsWith(".avi")){System.out.println(file);}}else{//4,判断,如果是文件夹,就可以递归//细节:再次调用本方法的时候,参数一定要是src的次一级路径findAVI(file);}}}}
}

 

1.4、删除一个多级文件夹

 

package com.yaqi.a02test;import java.io.File;public class Test4 {public static void main(String[] args) {/*删除一个多级文件夹如果我们要删除一个有内容的文件夹1.先删除文件夹里面所有的内容2.再删除自己*/File file = new File("D:\\aaa\\src");delete(file);}/** 作用:删除src文件夹* 参数:要删除的文件夹* */public static void delete(File src){//1.先删除文件夹里面所有的内容//进入srcFile[] files = src.listFiles();//遍历for (File file : files) {//判断,如果是文件,删除if(file.isFile()){file.delete();}else {//判断,如果是文件夹,就递归delete(file);}}//2.再删除自己src.delete();}}

1.5、统计一个文件夹的总大小

package com.yaqi.a02test;import java.io.File;public class Test5 {public static void main(String[] args) {/*需求:统计一个文件夹的总大小*/File file = new File("D:\\aaa\\src");long len = getLen(file);System.out.println(len);//4919189}/** 作用:*       统计一个文件夹的总大小* 参数:*       表示要统计的那个文件夹* 返回值:*       统计之后的结果** 文件夹的总大小:*       说白了,文件夹里面所有文件的大小* */public static long getLen(File src){//1.定义变量进行累加long len = 0;//2.进入src文件夹File[] files = src.listFiles();//3.遍历数组for (File file : files) {//4.判断if(file.isFile()){//我们就把当前文件的大小累加到len当中len = len + file.length();}else{//判断,如果是文件夹就递归len = len + getLen(file);}}return len;}}

 

1.6、统计一个文件夹中每个文件的个数并打印

package com.yaqi.a02test;import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test6 {public static void main(String[] args) throws IOException {/*需求:统计一个文件夹中每种文件的个数并打印。(考虑子文件夹)打印格式如下:txt:3个doc:4个jpg:6个*/File file = new File("D:\\aaa\\src");HashMap<String, Integer> hm = getCount(file);System.out.println(hm);}/** 作用:*       统计一个文件夹中每种文件的个数* 参数:*       要统计的那个文件夹* 返回值:*       用来统计map集合*       键:后缀名 值:次数**       a.txt*       a.a.txt*       aaa(不需要统计的)*** */public static HashMap<String,Integer> getCount(File src){//1.定义集合用来统计HashMap<String,Integer> hm = new HashMap<>();//2.进入src文件夹File[] files = src.listFiles();//3.遍历数组for (File file : files) {//4.判断,如果是文件,统计if(file.isFile()){//a.txtString name = file.getName();String[] arr = name.split("\\.");if(arr.length >= 2){String endName = arr[arr.length - 1];if(hm.containsKey(endName)){//存在int count = hm.get(endName);count++;hm.put(endName,count);}else{//不存在hm.put(endName,1);}}}else{//5.判断,如果是文件夹,递归//sonMap里面是子文件中每一种文件的个数HashMap<String, Integer> sonMap = getCount(file);//hm:  txt=1  jpg=2  doc=3//sonMap: txt=3 jpg=1//遍历sonMap把里面的值累加到hm当中Set<Map.Entry<String, Integer>> entries = sonMap.entrySet();for (Map.Entry<String, Integer> entry : entries) {String key = entry.getKey();int value = entry.getValue();if(hm.containsKey(key)){//存在int count = hm.get(key);count = count + value;hm.put(key,count);}else{//不存在hm.put(key,value);}}}}return hm;}
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言(指针进阶)

指针 一.什么是字符指针二.使用指针数组模拟二维数组三.函数指针 一.什么是字符指针 字符指针&#xff1a;指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间&#xff0c;并有唯一确定的首地址。即将字符串的首地址赋值给字符指针&#xff0c;可让字符指针…

力扣---通配符匹配

题目描述&#xff1a; 给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。 * 可以匹配任意字符序列&#xff08;包括空字符序列&#xff09;。 判定匹配成功的充要条件是&#xff…

GoJS可视化JavaScript库讲解

1.简介 GoJS是一个可视化JavaScript库&#xff0c;用于浏览器中创建交互图形&#xff0c;&#xff08;比如流程图&#xff0c;树图&#xff0c;关系图&#xff0c;力导图等等&#xff09;。允许您为用户构建各种图表&#xff0c;从简单的流程图、组织图到图表、SCADA和BPMN图表…

配置 JDK 环境变量(最简单)

前言 在通过控制台使用 javac 命令编译 &#xff0c;java 命令运行 Java 程序时&#xff0c;会出现识别不了这两个命令的情况&#xff0c;如下所示&#xff1a; 这是没有配置环境变量导致的 在控制台输入的命令&#xff0c;操作系统会去一些特定的目录中去找&#xff0c;看看是…

[职场] 面试失败的解压方式是什么 #经验分享#职场发展#知识分享

面试失败的解压方式是什么 1、心态调整&#xff1a;自我暗示、找人吐槽发泄情绪都是极佳的心态调整办法&#xff1b; 2、策略调整&#xff1a;当面对同一个岗位多次不成功的时候&#xff0c;需要我们调整策略&#xff0c;尝试去应聘相近的工作岗位&#xff1b; 3、总结提升&…

数字的魅力之情有独钟的素数

情有独钟的素数 什么是素数 素数&#xff08;Prime number&#xff09;也称为质数&#xff0c;是指在非0自然数中&#xff0c;除了1与其本身之外不拥有其他因数的自然数。也就是说&#xff0c;素数需要满足两个条件&#xff1a; 大于1的整数&#xff1b;只拥有1和其自身两个…

Vue 全组件 局部组件

一、组件定义和使用 1、全局组件 定义 <template> <div> <h1>This is a global component</h1> </div> </template> <script lang"ts"> </script> <style></style> 导入 全局组件在main.ts&#xff…

[OPEN SQL] 新增数据

INSERT语句用于数据的新增操作 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航班用户(SCUSTOM) 该数据库表中的部分值如下所示 1.插入单条数据 语法格式 INSERT <dbtab> FROM <wa>. INSERT INTO <dbtab> VALUES <wa>. INSERT &…

windows vs 自己编译源码 leveldb 然后使用自己编译的文件

1 准备源码文件 1.1 第一种方法 git下载源码 vs项目中git leveldb源码和git third_party googletest-CSDN博客 1.2 第二种方法 手动下载 然后把第三方的源码下载 复制到 third_party 对应的文件夹中 没有文件夹 third_party -> powershell mkdir third_party 2 编译lev…

计算机网络——12DNS

DNS DNS的必要性 IP地址标识主机、路由器但IP地址不好记忆&#xff0c;不便于人类用使用&#xff08;没有意义&#xff09;人类一般倾向于使用一些有意义的字符串来标识Internet上的设备存在着“字符串”——IP地址的转换的必要性人类用户提供要访问机器的“字符串”名称由DN…

课时31:内容格式化_输出格式化_printf格式化

1.1.3 printf格式化 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 场景需求 虽然我们能够通过 echo的方式实现信息某种程度的格式化输出&#xff0c;但是很多信息的输出偏重于手工的干预&#xff0c;效率太慢。我们需要一种功能…

多进程面试题汇总

这里写目录标题 一、多进程1、进程的定义&#xff1a;2、单核多任务CPU执行原理3、进程的优点和缺点4、创建进程15、创建进程26、进程池6.1、进程池的作用6.2、原理图6.3、使用进程池的优点 7、进程间的通信&#xff08;Queue&#xff09;7.1、需求1&#xff1a;采用多进程将10…