<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Day23-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\InOut

      遞歸

      遞歸公式

      遞歸結(jié)束語(yǔ)句

      package com.recursion;
      
      public class RecursionTest1 {
          public static void main(String[] args) {
              test1();
          }
          public static void test1(){
              System.out.println("------test1------");
              test1();//直接方法遞歸
              //StackOverflowError 棧溢出
          }
          public static void test2(){
              System.out.println("------test2------");
              test3();
          }
          public static void test3(){
              test2();//間接遞歸
          }
      }
      

      直接遞歸(常用)

      間接遞歸

      package com.recursion;
      
      public class RecursionTest2 {
          public static void main(String[] args) {
              int f5 = f(5);
              System.out.println("5的階乘是"+f5);
              int f6 = f1(6);
              System.out.println("1到6的累加求和是"+f6);
          }
      
          public static int f(int n){
              //終結(jié)點(diǎn)
              if(n==1){
                  return 1;
              }else {
                  return f(n-1)*n;
          }
        }
        public  static int f1(int n){
              if(n==1){
                  return 1;
              }else  {
                  return f1(n-1)+n;
              }
        }
      }
      

      文件搜索

      package com.recursion;
      
      import java.io.File;
      import java.io.IOException;
      
      public class RecursionTest3 {
          public static void main(String[] args) throws IOException {
              searchFile(new File("C:/"),"aaa");
          }
      
          /**
           * 去目錄下搜索某個(gè)文件
           * @param dir 目錄
           * @param fileName 要搜索的文件名稱
           */
          public static void searchFile(File dir,String fileName) throws IOException {
              //1、先把非法的情況攔截
              if(dir == null||!dir.exists()||!dir.isDirectory()){
                  //? 原代碼此處有 bug:!dir.isFile() 會(huì)導(dǎo)致當(dāng) dir 是文件夾時(shí)也被攔截(因?yàn)槲募A的 isFile() 返回 false),導(dǎo)致搜索無(wú)法執(zhí)行。需修正為 !dir.isDirectory()(判斷是否為文件夾)。
                  return;//代表無(wú)法搜索
              }
              //2、dir不是null,存在,一定是目錄對(duì)象
              File[] files = dir.listFiles();
      
              //3、判斷當(dāng)前目錄下是否存在一級(jí)文件對(duì)象,以及是否可以拿到一級(jí)文件對(duì)象
              if(files!=null&&files.length>0){
                  //4、遍歷全部一級(jí)文件對(duì)象
                  for (File file : files) {
                      //判斷文件是否為文件,還是文件夾
                      if(file.isFile()){
                          if(file.getName().contains(fileName)){
                              System.out.println("找到了"+fileName+"的文件路徑:"+file.getAbsolutePath());
                              Runtime runtime = Runtime.getRuntime();//這兩行是文件啟動(dòng)程序,exec是啟動(dòng)
                              runtime.exec(file.getAbsolutePath());//這兩行是文件啟動(dòng)程序,gc是JVM執(zhí)行垃圾回收
      
                          }
                      }else if(file.isDirectory()){
                          //是文件夾,重復(fù)這個(gè)過(guò)程
                          searchFile(file,fileName);
                      }
                  }
              }
          }
      }
      

      ASCII字符集

      使用一個(gè)字節(jié)(8位)存儲(chǔ),首位是0,一共有2^7

      GBK字符集

      一個(gè)中文字符編碼成兩個(gè)字節(jié),GBK兼容了ASCII字符集,包含了兩萬(wàn)多個(gè)字符

      GBK規(guī)定:漢字的第一個(gè)字節(jié)的第一位必須是1,一共2^15,32768個(gè)

      Unicode字符集

      是國(guó)際組織制定的,可以容納世界上所有文字、符號(hào)的字符集

      UTF-32

      四個(gè)字節(jié)表示一個(gè)字符

      UTF-8

      可變長(zhǎng)度的編碼方案,共分為四個(gè)長(zhǎng)度區(qū):1個(gè)字節(jié)、2個(gè)字節(jié)、3個(gè)字節(jié)、4個(gè)字節(jié)

      1. 英文和數(shù)字等只占1個(gè)字節(jié)(兼容標(biāo)準(zhǔn)ASCII編碼),漢字字符占用3個(gè)字節(jié)
      2. image-20251025105228813
      3. image-20251025105948952

      IO流

      Input和Output

      image-20251025111858295

      image-20251025112637851

      FileInputStream(文件字節(jié)輸入流)

      以內(nèi)存為基準(zhǔn),可以把磁盤(pán)中文件的數(shù)據(jù)以字節(jié)的形式讀入到內(nèi)存中去

      每次只讀取一個(gè)字節(jié),讀取性能較差,并且讀取漢字輸出會(huì)亂碼

      image-20251025150053960

      package Basic.src.com.InOut;
      
      import javafx.application.Application;
      import javafx.stage.Stage;
      
      import java.io.*;
      
      public class FileInputStreamTest1  {
          public static void main(String[] args) throws IOException {
              //1、創(chuàng)建文件字節(jié)輸入流管道,與源文件接通
              //InputStream is = new FileInputStream(new File("Basic\\src\\itheima01.txt"));
              //下面是簡(jiǎn)化寫(xiě)法,推薦使用
              InputStream is = new FileInputStream("Basic\\src\\itheima01.txt");
      
      //        //2、開(kāi)始讀取文件的字節(jié)數(shù)據(jù)
      //        int b1 = is.read();
      //        System.out.println(b1);
      //        System.out.println((char)b1);
      //
      //        int b2 = is.read();
      //        System.out.println((char)b2);
      //
      //        int b3 = is.read();
      //        System.out.println(b3);//返回-1通知文件已經(jīng)讀完了
      //        System.out.println((char)b3);
      
              //3、使用循環(huán)改造上述
              int b;//用于記住上述代碼
              while ((b = is.read()) != -1) {
                  System.out.print((char)b);
              }
      
              //讀取數(shù)據(jù)的性能很差!
              //應(yīng)該盡量減少系統(tǒng)調(diào)用硬盤(pán)中的數(shù)據(jù)的頻次
              //讀取漢字輸出會(huì)亂碼!無(wú)法避免
              //流使用完畢后,必須關(guān)閉!釋放系統(tǒng)資源!
              is.close();
      
          }
      }
      

      釋放內(nèi)存

      try-catch-finally

      在finally區(qū)釋放內(nèi)存,無(wú)論try中的程序是正常執(zhí)行了還是出現(xiàn)異常,最后都一定會(huì)執(zhí)行finally區(qū),除非JVM終止

      一般用于在程序執(zhí)行完成后進(jìn)行資源的釋放操作(專(zhuān)業(yè)做法)

      package Basic.src.com.InOut;
      
      import java.io.*;
      
      public class Test2 {
          public static void main(String[] args)  {
              InputStream is = null;
              OutputStream os =null;
              try {
                  //在is和os被賦值之前出現(xiàn)異常的話會(huì)使得is和os在null的情況下被close,出現(xiàn)空指針異常
                  //需求:復(fù)制照片
                  //1、創(chuàng)建一個(gè)字節(jié)輸入管道與源文件接通
                  is = new FileInputStream("Basic\\src\\itheima03.txt");
                  //2、創(chuàng)建一個(gè)字節(jié)輸出管道與目標(biāo)字節(jié)接通
                  os = new FileOutputStream("Basic\\src\\itheima03copy.txt");
                  //3、創(chuàng)建一個(gè)字節(jié)數(shù)組專(zhuān)用字節(jié)數(shù)據(jù)
                  byte[] buffer = new byte[1024];//1KB
                  //4、從字節(jié)輸入流中讀取字節(jié)數(shù)據(jù),寫(xiě)出去到字節(jié)輸出流中,讀多少寫(xiě)出去多少
                  int len;//記住每次讀取多少個(gè)字節(jié)
                  while((len = is.read(buffer))!=-1){
                      os.write(buffer,0,len);
                  }
                  
                  //后創(chuàng)建的流要先關(guān)掉,先創(chuàng)建的流要后關(guān)掉
                  System.out.println("復(fù)制完成");
              } catch (IOException e) {
                  throw new RuntimeException(e);
              } finally {
                  try {
                      if (os!=null)os.close();//避免因?yàn)閕s和os被賦值前出現(xiàn)異常導(dǎo)致的提前調(diào)用
                  } catch (IOException e) {
                      throw new RuntimeException(e);
                  }
                  try {
                      if (is!=null)is.close();
                  } catch (IOException e) {
                      throw new RuntimeException(e);
                  }
              }
          }
      }
      

      try-with-resource

      開(kāi)始于JDK7

      把要用的流對(duì)象放在try后面的( )里面,可以不需要使用finally

      ( )內(nèi)只能放置資源,否則報(bào)錯(cuò),資源指的是最終實(shí)現(xiàn)了AutoCloseable接口,重寫(xiě)了close()方法

      package Basic.src.com.InOut;
      
      import java.io.*;
      
      public class Test3 {
          public static void main(String[] args) throws Exception {
              try(
                      //在is和os被賦值之前出現(xiàn)異常的話會(huì)使得is和os在null的情況下被close,出現(xiàn)空指針異常
                      //需求:復(fù)制照片
                      //1、創(chuàng)建一個(gè)字節(jié)輸入管道與源文件接通
                      InputStream is = new FileInputStream("Basic\\src\\itheima03.txt");
                      //2、創(chuàng)建一個(gè)字節(jié)輸出管道與目標(biāo)字節(jié)接通
                      OutputStream  os = new FileOutputStream("Basic\\src\\itheima03copy.txt");
      
                      //這里只能放置資源型對(duì)象(比如流對(duì)象)
                      //什么是資源呢?資源都是會(huì)實(shí)現(xiàn)AutoCloseable接口
                      //用完之后會(huì)自動(dòng)被調(diào)用close方法完成釋放資源的操作
                      //public abstract class OutputStream implements Closeable, Flushable
                      //public interface Closeable extends AutoCloseable
                      MyConnection connection = new MyConnection()//因?yàn)镸yconnection類(lèi)實(shí)現(xiàn)了AutoCloseable接口并重寫(xiě)了close()方法,被視為資源型
                      ) {
                  //在is和os被賦值之前出現(xiàn)異常的話會(huì)使得is和os在null的情況下被close,出現(xiàn)空指針異常
                  //3、創(chuàng)建一個(gè)字節(jié)數(shù)組專(zhuān)用字節(jié)數(shù)據(jù)
                  byte[] buffer = new byte[1024];//1KB
                  //4、從字節(jié)輸入流中讀取字節(jié)數(shù)據(jù),寫(xiě)出去到字節(jié)輸出流中,讀多少寫(xiě)出去多少
                  int len;//記住每次讀取多少個(gè)字節(jié)
                  while((len = is.read(buffer))!=-1){
                      os.write(buffer,0,len);
                  }
      
                  //后創(chuàng)建的流要先關(guān)掉,先創(chuàng)建的流要后關(guān)掉
                  System.out.println("復(fù)制完成");
                  System.out.println(connection);
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      
      package Basic.src.com.InOut;
      
      public class MyConnection implements AutoCloseable{
      
          @Override
          public void close() throws Exception {
              System.out.println("釋放了與某個(gè)硬件的連接資源");
          }
      }
      

      字符流

      適合讀寫(xiě)文本文件的內(nèi)容

      FileReader

      把文件(磁盤(pán)或網(wǎng)絡(luò))中的數(shù)據(jù)以字符的形式讀取到內(nèi)存中

      image-20251025192439555

      package Basic.src.com.InOut.FileReaderWriter;
      
      import java.io.FileNotFoundException;
      import java.io.FileReader;
      import java.io.Reader;
      
      public class FileReaderTest1 {
          public static void main(String[] args) throws Exception {
              try (
                      //創(chuàng)建一個(gè)文件字符輸入流管道與源文件接通
                   Reader fr = new FileReader("Basic\\src\\com\\InOut\\FileReaderWriter\\itheima01.txt");
                   ){
      //            //2、讀取文本文件的內(nèi)容
      //            int c;
      //            while ((c = fr.read()) != -1) {//read返回的是int
      //                System.out.print((char)c);
      //            }
                  //3、每次讀取多個(gè)字符
                  char[] buffer = new char[3];
                  int len;
                  while((len = fr.read(buffer))!= -1) {
                      String str = new String(buffer, 0, len);
                      System.out.print(str);
                  }
                  //性能是比較不錯(cuò)的!
              } catch (Exception e) {
                  e.printStackTrace();;
              }
          }
      }
      
      posted @ 2025-10-25 19:47  David大胃  閱讀(4)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 苍井空毛片精品久久久| 久久久久人妻一区二区三区 | 国产av普通话对白国语| 国产一区精品在线免费看| 毛片网站在线观看| 久久99久久99精品免观看| 国产精品久久久久影院| 九九热在线精品视频九九| 国产一区二区不卡自拍| 亚洲V天堂V手机在线| 日韩免费无码视频一区二区三区 | 成人h动漫精品一区二区无码| 国产日女人视频在线观看| 亚洲欧美国产日韩天堂区| 国产综合精品一区二区三区| 日本国产精品第一页久久| 午夜毛片不卡免费观看视频| 男人的天堂av社区在线| 亚州中文字幕一区二区| 熟妇无码熟妇毛片| 九九热精品在线观看视频| 亚洲熟女乱综合一区二区| 亚洲第一最快av网站| 无码 人妻 在线 视频| 最近中文字幕国产精品| 亚洲AV无码一二区三区在线播放| 欧美性猛交xxxx富婆| 2021亚洲va在线va天堂va国产| 少妇无套内谢免费视频| 久久婷婷五月综合97色直播| japanese无码中文字幕| 中国女人内谢69xxxx| 加勒比中文字幕无码一区| 久久国产成人av蜜臀| 忻城县| 亚洲女同在线播放一区二区| 亚洲精品久久久久久下一站| 亚洲欧美日韩久久一区二区| 国产精品自拍午夜福利| 少妇xxxxx性开放| 亚洲天堂男人天堂女人天堂|