十二、十三天总结笔记


一:File
  1.1
 File:文件和目录(文件夹)路径名的抽象表示形式。
 
  1.2
 File的构造方法:
                File(String pathname):把一个路径名称封装成File对象
                File(String parent, String child):把一个父路径和一个子路径封装成一个File对象
                File(File parent, String child):把一个父路径File对象和一个子路径封装成一个File对象
 
                  
  1.3
   创建功能:
                A:创建文件
                         public booleancreateNewFile():如果文件不存在,就创建。否则,不创建。
                            需求:D盘下造一个文件a.txt
                B:创建目录
                         public boolean mkdir():如果目录不存在,就创建。否则,不创建。
                            需求:D盘下造一个文件夹test
                           public booleanmkdirs():如果目录不存在,就创建。否则,不创建。
                                                                                   即时父目录不存在,也可以连父目录一起创建。
                            需求:D盘下造一个文件夹(D:/aaa/bbb/ccc)
                            需求:D盘下造一个文件夹("D:\\ddd\\eee\\f.txt");
package com.edu_01;
 
import java.io.File;
import java.io.IOException;
 
/**
  1.1
 File:文件和目录(文件夹)路径名的抽象表示形式。
 
  1.2
 File的构造方法:
                File(String pathname):把一个路径名称封装成File对象
                File(String parent, String child):把一个父路径和一个子路径封装成一个File对象
                File(File parent, String child):把一个父路径File对象和一个子路径封装成一个File对象
 *
 */
public class FileDemo {
         publicstatic void main(String[] args) throws IOException {
                   //File(Stringpathname):把一个路径名称封装成File对象
                   //Filefile = new File("D://a.txt");
                   //System.out.println(file.createNewFile());//当文件不存在的时候,创建文件,如果文件存在,不创建
                  
                   System.out.println("------------");
                   //File(Stringparent, String child):把一个父路径和一个子路径封装成一个File对象
                   //Filefile = new File("D://test", "a.txt");
                   //java.io.IOException:系统找不到指定的路径,
                   //创建文件的时候一定要保证路径存在
                   //System.out.println(file.createNewFile());
                  
                   System.out.println("-----------------");
                   //File(Fileparent, String child):把一个父路径File对象和一个子路径封装成一个File对象
                   Filefile = new File("D://test");
                   Filefile2 = new File(file, "a.txt");
                   System.out.println(file2.createNewFile());
                  
         }
 
}
 
   注意事项:
                A:你要造什么东西,就应该用对应的方法。
 
        
  1.4
  删除功能:
                public boolean delete():既可以删除文件,又可以删除目录。
 
  路径问题:
                A:绝对路径     就是以盘符开始的路径(d:\\test\\aaa\\b.txt)
                B:相对路径     就是不以盘符开始的路径(a.txt)
                                            一般都是相对应当前的项目而言的。
 
  注意事项:
                A:Java程序的删除不走回收站。
                B:如果目录内还有内容就不能删除。
 
        
  1.5
  判断功能
 public boolean isDirectory():是否是目录
 public boolean isFile():是否是文件
 public boolean exists():是否存在
 public boolean canRead():是否可读
 public boolean canWrite():是否可写
 public boolean isHidden():是否隐藏
package com.edu_02;
 
import java.io.File;
import java.io.IOException;
 
/**
 *    1.5
  判断功能
 public boolean isDirectory():是否是目录
 public boolean isFile():是否是文件
 public boolean exists():是否存在
 public boolean canRead():是否可读
 public boolean canWrite():是否可写
 public boolean isHidden():是否隐藏
 */
public class FileDemo3 {
         publicstatic void main(String[] args) throws IOException {
                   //在D://a.txt
                   Filefile = new File("D://a.txt");
                   //System.out.println(file.createNewFile());
                   System.out.println("是否是目录:"+file.isDirectory());
                   System.out.println("是否是文件:"+file.isFile());
                   System.out.println("是否存在:"+file.exists());
                   System.out.println("是否可读:"+file.canRead());
                   System.out.println("是否可写:"+file.canWrite());
                   System.out.println("是否隐藏:"+file.isHidden());
                  
         }
 
}
 
 
 
  1.6获取功能
 public String getAbsolutePath():获取绝对路径
 public String getPath():获取相对路径
 public String getName():获取名称
 
 
二:字节流及字节高效流
2.1 I/O流的分类
 * IO流分类:
 *             流向:
 *                      输入流
 *                      输出流
 *             数据类型:
 *                      字节流
 *                               字节输入流
 *                               字节输出流
 *                      字符流
 *                               字符输入流
 *                               字符输出流
 *
 *             注意:一般我们在讨论IO的分类时,默认是按照数据类型分的。
 *
 * 字节流:
 *             字节输入流              InputStream(抽象类)
 *             字节输出流              OutputStream(抽象类)
 * 字符流:
 *             字符输入流              Reader
 *             字符输出流              Writer
 *
 * 学习习惯:
 *             字节流
 *             字符流
 *
 
 2.2
 * 需求:请用字节流往一个文本文件中写一句话:"helloworld"。
 * 分析:
 *             首先要知道是字节流
 *             写数据我们就应该知道是字节输出流
 *             所以最终选择了OutputStream
 *             而OutputStream是抽象类,所以我们应该找其子类
 *             文件这个单词是File,所以我们就大胆的猜测下:FileOutputStream存在否。
 *
 * 我们如何往一个文件写数据呢?
 * 或者说就是字节输出流的操作步骤是什么呢?
 * A:创建字节输出流对象
 * B:调用写数据的方法
 * C:释放资源
package cokm.edu_01;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 
/**
 *  2.2
 * 需求:请用字节流往一个文本文件中写一句话:"helloworld"。
 * 分析:
 *             首先要知道是字节流
 *             写数据我们就应该知道是字节输出流
 *             所以最终选择了OutputStream
 *             而OutputStream是抽象类,所以我们应该找其子类
 *             文件这个单词是File,所以我们就大胆的猜测下:FileOutputStream存在否。
 *
 * 我们如何往一个文件写数据呢?
 * 或者说就是字节输出流的操作步骤是什么呢?
 * A:创建字节输出流对象
 * B:调用写数据的方法
 * C:释放资源
 *
 */
public class OutputStreamDemo {
         publicstatic void main(String[] args) throws IOException {
                   /**
                    * 怎么使用文件输出流往文件中途写数据?
                    * 1.创建文件输出流对象
                    * 2.调用输出流对象的方法给文件中写数据
                    * 3.释放资源
                    */
                   //publicFileOutputStream(String name)
                   //publicFileOutputStream(File file)
                   //创建文件输出流对象
                   FileOutputStreamfos = new FileOutputStream("a.txt");
                  
                   //publicFileOutputStream(File file)
                   //Filefile = new File("a.txt");
                   //FileOutputStreamfos = new FileOutputStream(file);
                  
                   /**
                    * FileOutputStream fos = newFileOutputStream("a.txt");
                    * 做了那些事情?
                    * 1.创建fos对象指向文件a.txt
                    * 2.创建一个文件a.txt
                    */
                  
                   //调用输出流的写数据的方法给文件中写数据
                   //publicvoid write(byte[] b)
                   byte[]byf = "helloworld".getBytes();
                   fos.write(byf);
                  
                   //释放资源,关流操作
                   fos.close();
                  
                   //关流之后,我们还能继续往文件中写数据码
                   //这样是不行的。。
                   //fos.write("java".getBytes());//java.io.IOException:Stream Closed
                  
         }
 
}
 
做法:
A:  两个构造的区别?
                 FileOutputStream(File file)
                   FileOutputStream(Stringname)
                   FileOutputStreamfos  = newFileOutputStream("fos.txt");
                   请问上面这个操作做了哪几件事情?
                    * 1.创建了一个文件输出流fos,指向文件a.txt
                    * 2.创建了a.txt这个文件
                  
B:     fos.write("helloworld".getBytes());
 
C:               fos.close();关流
 
D:           fos.write("java".getBytes());
 
2.3
FileOutputStream写数据的方法
write(byte[] b)
write(int b) :一次写一个字节
write(byte[] b, int off, int len) :一次写一个字节数组的一部分
 
 
2.4
字节输入流:
具体操作步骤:
 * 字节输入流操作步骤:
 * A:创建字节输入流对象
 FileInputStream  fis = new FileInputStream("a.txt");
 
 * B:调用方法读取数据
 一次读取一个字节:read()-- 测试读取不到内容的时候的返回值(并且用循环改进)
 
 * C:释放资源
 fis.close
 
 * 练习:
 *             A:把a.txt的内容复制到b.txt中
 *             C:把d:\\复制视频文件
 
 * 数据源:
 *             IODemo.java   --       读取数据         --       InputStream    --       FileInputStream       --       一次读取一个字节
 * 目的地:
 *             Copy.java --       写出数据         --       OutputStream-- FileOutputStream -- 一次写一个字节
 
 
2.5
字节输入流:
具体操作步骤:
 * 字节输入流操作步骤:
 * A:创建字节输入流对象
 FileInputStream  fis = new FileInputStream("a.txt");
 
 * B:调用方法读取数据(一次读取一个字节数组,提升效率)
 一次读取一个字节数组:public int read(byte[] b):返回实际读取长度,数据被读取到数组中。
 -- 测试方法返回长度?根据String类的构造方法构造字符串
 * C:释放资源
 fis.close
 
 
 2.5
 * 字节缓冲区流(也叫高效流):
 *             BufferedInputStream(read() 一次读取一个字节,public int read(byte[] b):返回实际读取长度,数据被读取到数组中。)
 *             BufferedOutputStream(write(byte[]b))
 *
 * 流
 *             低级流: 基本的流,可以直接操作文件。
 *             高级流:是操作基本流的流。
 
 2.6
 * 字节流复制文件:
 * A:基本字节流一次读写一个字节             
 * B:基本字节流一次读写一个字节数组             
 * C:高效字节流一次读写一个字节             
 * D:高效字节流一次读写一个字节数组            
 
 获取时间的方法:
 System.currentTimeMillis()
 
 
 三:编码问题??
 
 *String中的编码和解码问题。
 *
 * 编码:
 *             把我们能够看懂的字符转换为看不懂的数据
 * 解码:
 *             把我们看不懂的数据转换为看得懂的字符
 *
 * 举例:
 *             电报/潜伏(余则成 深海)
 *
 *             编码表:
 *                      小本子,这个本子上记录了很多的汉字和对应的数据值。
 *
 *             延安:
 *                      今晚兴庆公园见
 *                     
 *                      发报员:
 *                               今晚兴庆公园见
 *                               转换成数据
 *             发送数据
 *            
 *             余则成:
 *                      接收数据
 *                      记录完毕后,就找出小本子,通过对应的数据值找到对应的字符
 *                      今晚兴庆公园见
 
 
 public byte[] getBytes(StringcharsetName)  按照给定的编码方式,编码字节数组(gbk,utf-8)
 String(byte[] bytes, String charsetName) 按照给定的编码方式解码字符数组
 
                 String s = "中国好";
                   byte[]bytes = s.getBytes("utf-8");
                   System.out.println(Arrays.toString(bytes));
                  
                   //String(byte[]bytes, String charsetName)
                   System.out.println(newString(bytes,"gbk"));
 
 结论:用什么编码,就必须用什么解码。。
 
 
异常:
1.1
异常:就是程序出现的不正常的情况。
 
 * 异常:
 *             错误:这是非常严重的问题,一般我们处理不了,一般在这里指的是硬件问题。
 *             异常:
 *                      编译时期异常         开始就必须要处理的,如果不处理,后面就走不了。
 *                      运行时期异常         开始可以不用处理。这种问题一旦发生,就是我们的程序问题,需要我们修改程序。
 *
 * 体系结构:
 *Throwable:
 *             Error:
 *             Exception:
 *               非RuntimeException:编译时期异常
 *                      RuntimeException:运行时期异常
 
 * 异常演示:
 *             除数不能为0
 *
 *java.lang.ArithmeticException: / by zero
 *
 * 针对异常,JVM默认的处理方案:
 *             一旦遇到程序出现了问题,就会把问题的类名,错误原因,错误的位置等信息打印在控制台,以便我们观察。
 *             并且,会自动从当前出问题的地方停止掉。
 *
 * 这种处理方案虽然可以,但是不够好。
 * 哪里不好呢?
 *             其实程序出问题,不应该直接停止,因为我们的程序可能是由多部分组成的,
 *             其中一个部分出问题了,不应该影响其他部分的执行。
 *             所以,我们应该想办法让其他的部分能够执行下去。
 
 1.2
 
 * 我们是如何处理异常,保证各个部分不影响的呢?
 * 两种方案:
 *             A:try...catch...finally
 *             B:throws
 *
 *try...catch...finally:
 *             try{
 *                      可能出现异常的代码
 *             }catch(异常类名 变量名) {
 *                      针对异常的代码处理
 *             }finally {
 *                      释放资源的地方
 *             }
 *
 * 我们简化一下第一个:
 *try{
 *             可能出现异常的代码
 *   }catch(异常类名 变量名) {
 *             针对异常的代码处理
 *   }
package com.edu_01;
/**
 *  * 我们是如何处理异常,保证各个部分不影响的呢?
 * 两种方案:
 *     A:try...catch...finally
 *     B:throws
 * 
 * try...catch...finally:
 *     try{
 *         可能出现异常的代码
 *     }catch(异常类名变量名) {
 *         针对异常的代码处理
 *     }finally{
 *         释放资源的地方
 *     }
 * 
 * 我们简化一下第一个:
 * try{
 *     可能出现异常的代码
 *  }catch(异常类名变量名) {
 *     针对异常的代码处理
 *  }
 *
 */
publicclass ExceptionDemo3 {
    publicstaticvoid main(String[] args) {
       System.out.println("start");
       int a= 10;
       int b = 0;
       try{
           //可能出现异常的代码
           System.out.println(a/b);//当除数为0的时候会抛出ArithmeticException这个异常
                                //接着程序会拿着这个异常和catch里面的异常类已经对比                  
       }catch(ArithmeticException e){
           //当程序抛出ArithmeticException这个异常之后给出的具体的处理方法
           System.out.println("你的除数不能为0");
       }
       System.out.println("end");
    }
 
}
 
 
 1.3
 * 多个异常的处理(演示数组索引越界异常,除数为0异常)
 * A:针对每一个出现问题的地方写一个try...catch语句
 * B:针对多个异常,采用一个try,多个catch的情况。
 *             try...catch...catch...
 *
 *             遇到try里面的问题,就自动和catch里面进行匹配。
 *             一旦匹配就执行catch里面的内容,执行完毕后,接着执行后面的代码。
 *
 *             注意:
 *                      如果异常间有子父关系,父必须在最后。
 
 1.4
 * 编译时期异常和运行时期异常的区别:
 * 编译时期异常:Java程序必须显示处理,否则程序就会发生错误,无法通过编译
 *             FileNotFoundException(文件未找到异常)
 * 运行时期异常:无需显示处理,也可以和编译时异常一样处理
 *             ArithmeticException
 
 1.5
 *Throwable中的方法:(演示除数为0异常)
 *printStackTrace():打印异常信息,程序从出问题的地方开始就会打印创建一个该异常对应的对象,
   该对象直接调用打印方法
 
 1.6(演示编译器异常,运行期异常)
 *try...catch 是直接进行了处理。
 * 而throws则是把异常处理的事情交给了调用者。
 *
 *throws用在方法上,声明方法有异常,交给调用者处理。
 * 但是呢,如果是编译时期异常,调用就必须处理。
 *              如果是运行时期异常,调用者可以处理,也可以不处理。
 
 1.7
 *throws:(演示文件未找到异常,除数为0异常)
 *             用在方法声明后面,跟的是异常类名
 *             可以跟多个异常类名,用,号隔开
 *             表示抛出异常,由该方法的调用者来处理
 *             throws表示出现异常的一种可能,并不一定会发生这些异常
 
 1.8
 * 异常处理:
 *try...catch...finally
 *
 *finally:一般用于释放资源。在数据库操作或者IO流比较常见。
 *
 * 特点:
 *             被finally控制的语句体一定会执行
 *
 *             特殊情况:在执行到finally之前jvm退出了(比如System.exit(0))
 
 1.9
 *finally相关的面试题:
 *final,finally的区别?
 *             final:最终的意思。可以修饰类,方法,变量。
 *                      修饰类,类不能被继承
 *                      修饰方法,方法不能被重写
 *                      修饰变量,变量是常量
 *             finally:
 *                      异常处理的一部分。被finally控制的代码一定会执行。
 *                      特殊情况:在执行到finally之前,jvm退出了。
 
 1.9.1
 * 注意:
 *             A:子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
 *             B:如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
                   C:如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws
                  
                   上述仅仅针对编译时期异常
                   与运行时期异常无关。
 
 1.9.2
 throw和throws的区别?
 *throws:
 *             用在方法声明后面,跟的是异常类名
 *             可以跟多个异常类名,用逗号隔开
 *             表示抛出异常,由该方法的调用者来处理
 *             throws表示出现异常的一种可能性,并不一定会发生这些异常
 *
 *throw:
 *             用在方法体内,跟的是异常对象名
 *             只能抛出一个异常对象名
 *             表示抛出异常,由方法体内的语句处理
 *             throw则是抛出了异常,执行throw则一定抛出了某种异常?
 
案例演示:演示编译时期异常(文件未找到异常)和运行时期异常(除数为0异常)使用上的区别
 *throw:
 *             如果throw的是编译时期异常,在方法声明上必须用throws进行标记
 *             如果throw的是运行时期异常,在方法声明上可以用throws进行标记,也可以不用。
package com.edu_03;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
 
/**
 *  throw和throws的区别?
 *throws:
 *             用在方法声明后面,跟的是异常类名
 *             可以跟多个异常类名,用逗号隔开
 *             表示抛出异常,由该方法的调用者来处理
 *             throws表示出现异常的一种可能性,并不一定会发生这些异常
 *
 *throw:
 *             用在方法体内,跟的是异常对象名
 *             只能抛出一个异常对象名
 *             表示抛出异常,由方法体内的语句处理
 *             throw则是抛出了异常,执行throw则一定抛出了某种异常?
 *
 */
public class ThrowDemo {
         publicstatic void main(String[] args) {
                   method();
                   try{
                            method2();
                   }catch (FileNotFoundException e) {
                            e.printStackTrace();
                   }
         }
 
         privatestatic void method2() throws FileNotFoundException{
                   try{
                            FileInputStreamfis = new FileInputStream("D://a.txt");
                   }catch(FileNotFoundExceptione){
                            //当遇见这个异常之后,直接抛出(这就是我给出的处理方法)
                            //如果【抛出的是编译时期异常的话,必须在方法声明上给予声明
                            thrownew FileNotFoundException();
                   }
 
         }
 
         privatestatic void method() throws ArithmeticException{
                   inta = 10;
                   intb = 2;
                   if(b==0) {
                            //在这里抛出的是运行时期异常,抛出这个异常的同时,可以在方法声明上给予声明,也可以不声明
                            thrownew ArithmeticException();
                   }else{
                            System.out.println(a/b);
                   }
         }
        
        
 
}
时间: 2024-10-25 20:15:30

十二、十三天总结笔记的相关文章

第二十一天到二十三天学习笔记

先是做了下一个小的导航栏 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> 3 &

值得收藏的十二条Jquery随身笔记

1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法. 2.jQuery对象与dom对象的转换 只有jquery对象才能使用jquery定义的方法.注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象. 普通的dom对象一般可以通过$()转换成jquery对象. 如:$(document.ge

十二、Hadoop学习笔记————Hive的基本原理

一般用户用CLI(命令行界面)接口,元数据库含有表结构 单用户.多用户.远程服务 生成db文件,只能单客户端使用数据库 多用户是最常用的使用模式 配置与多用户一致 数据格式用户自定义 所有的表都存于改配置路径下,除了外部表 外部表指定location则可,删除一个表只会删除元数据(元数据(Metadata),又称中介数据.中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置.历史数据.资源查找.文件记录等功能),表中的

猪猪的机器学习笔记(十二)支持向量机

支持向量机 作者:樱花猪   摘要: 本文为七月算法(julyedu.com)12月机器学习第十二次次课在线笔记.SVM是一种常见的分类器,在很长一段时间起到了统治地位.而目前来讲SVM依然是一种非常好用的分类器,在处理少量数据的时候有非常出色的表现. 引言: SVM是一个非常常见的分类器,在真正了解他的原理之前我们多多少少都有接触过他.本位将会详细的介绍SVM的原理.目标以及计算过程和算法步骤.我们针对线性可分数据和线性不可分数据介绍了线性支持向量机和非线性支持向量机,并在最后简单阐述非线性支

Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 这一章很多,但是很有趣,也是这书的最后一章知识点了,我现在还在考虑要不要写这个拼图和2048的案例,在此之前,我们先来玩玩Android5.X的新特性吧!

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先

42. 蛤蟆的数据结构笔记之四十二图的遍历之广度优先 本篇名言:"生活真象这杯浓酒 ,不经三番五次的提炼呵 , 就不会这样一来可口 ! -- 郭小川" 继续看下广度优先的遍历,上篇我们看了深度遍历是每次一个节点的链表是走到底的. 欢迎转载,转载请标明出处:http://write.blog.csdn.net/postedit/47029275 1.  原理 首先,从图的某个顶点v0出发,访问了v0之后,依次访问与v0相邻的未被访问的顶点,然后分别从这些顶点出发,广度优先遍历,直至所有的

第十二、十三周新总结

第十二.十三周总结 ——————————————王林 学科 WEB 数据结构 计算机网络基础 课外读物 进度 第十章.第十一章 第六章后半部分,第七章前半部分 项目6.项目7 <黑客攻防从新手到高手> <Flash MX> 主要内容 第十二周.第十三周主要学习了CSS3的知识.包括CSS3字体与文本的相关属性.设计立体文本.美化背景与边框.设置背景.边框设置.以及综合实例. 两周内.,重点学习了二叉树等. 十二周内,学习了无线局域网的基础知识.无线网络的硬件设备ji组网模式及认证I

《Programming in Lua 3》读书笔记(二十二)

日期:2014.8.6 PartⅣ The C API 26 Extending Your Application 使用Lua很重要的一点是用来做配置语言.配合主语言做一些功能的配置. 26.1 The Basics 有的时候程序需要配置一些功能信息,很多时候可能有许多别的方法比用lua做配置要更简单:如使用环境变量或者读取文件,读取文件涉及到文件的解析.如果使用Lua进行配置的话,相当于用lua文件替代了要读取的如csv.txt文件等. 使用Lua进行配置的时候,就需要使用Lua API去控制

SaltStack 学习笔记 - 第十二篇: SaltStack Web 界面

SaltStack 有自身的用python开发的web界面halite,好处是基于python,可以跟salt的api无缝配合,确定就比较明显,需要个性化对web界面进行定制的会比较麻烦,如果喜欢体验该界面的可以参考下面的文章  http://rfyiamcool.blog.51cto.com/1030776/1275443/ 我是运用另一个python+php来进行web开发,具体需要的工具有在我的另一篇文章里面介绍过,这里再重新进行整个开发介绍 首先介绍php 跟python通信的工具 pp

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];