黑马程序员技术交流社区

标题: 学习笔记(面向对象,API,集合,IO流) [打印本页]

作者: 528201154    时间: 2018-4-3 22:36
标题: 学习笔记(面向对象,API,集合,IO流)
面向对象编程思想
        1. 什么是面相对象编程思想
       
        2. Java语言用于描述现实生活中的事物
        事物:属性  行为
        类:成员变量  成员方法
       
        如何使用这个学生类
        类名 对象名 = new 构造方法名();
        对象名.成员...
       
        一个对象的内存图
        两个对象共用同一个方法区的内存图
        两个引用指向同一个对象的内存图
       
        private
                私有的
                修饰成员变量 、 成员方法
                被private关键字所修饰的内容只能够在本类中可以使访问
       
        被private修饰的成员变量,一般都会对外界提供公有的访问方式,如:setXxx()、getXxx()方法
                注意:setXxx()、getXxx()方法是否有参数列表、返回值类型
       
        成员变量和局部变量同名时,局部变量采用就近原则。
       
        this关键字:
                当前对象的引用
                哪个对象来调用我,我就代表哪个对象
       
        JavaBean对象中的成员方法内部都隐藏了一个this。表示哪个对象中的方法。       
         
面向对象的特征
        封装
                原则:将不需要对外暴露的内容隐藏。
                        隐藏实现细节,对外提供公有的访问方式。
               
                好处:
                        提高代码的安全性(外界不能直接访问)、复用性(重复使用特性,比如:方法)
       
                封装就是private么? 不是。private仅仅是封装的一种体现形式。
               
        构造方法:
                格式:
                        修饰符 类名(){}
               
                构造方法格式的注意事项:
                        是否可以有return?            可以
                        是否可以有返回值?                  不可以
                        是否可以有void?                  不可以
                        方法名必须与类名一致么?  必须一致
               
                构造方法的注意事项:
                        1、类中没有定义任何构造方法,系统会默认提供空参构造
                        2、类中有定义有参构造,但没有定义空参构造,系统不会免费提供空参构造
                        3、构造方法可以重载
               
                成员变量赋值:
                        1. setXxx()
                        2. 调用构造方法(注意:一旦调用构造方法,表示重新创建新对象,并不能够代表修改成员变量的值。 表示:杀人)
                       
        标准的JavaBean对象:
                必须要提供:
                        成员变量
                        构造方法
                        成员方法

sc.nextLine() 获取字符
数组(字符数组)->字符串:String s1 = new String(数组)
截取数组(字符数组):String s1 = new String(数组,开始截取的下标,截取多少个)

s1.equals 判断字符串值是否相等
s1.equalsIgnoreCase :忽略大小写比较
s1.startsWith()
s1.endWith()判断是否以某个字符串开头或结尾

s1.length()  获取字符串长度(字母个数)
s1.charAt(字符串索引)  获取指定索引处的某个字符
s1.indexOf(字符串):获取S1中,第一次出现参数中字符串的位置索引,如果没有,返回-1,
s1.substring(索引):从索引处截取字符串,一直截取到最后
s1.substring(索引,end):从索引出开始,到end处进行截取,包括索引,不包括end对应的字符

s1.toCharArray() :字符串变成字符数组
s1.toLowerCase();小写
s1.toUpperCase():大写

s1.trim():去掉左右两端的空格(不包括中间的) 小红   
s1.split(某个字符串):根据某个字符串,把原字符串分割成数组


StringBuilder sb = new StringBuilder()

sb.capacity() 获取sb容器的容量(理论值)
sb.length():获取里面字符串的长度

sb.append(内容):向字符串中追加数据(返回的是对象)
sb.reverse():字符串翻转

StringBuilder转成字符串
sb.toString();返回一个字符串
字符串转换成StringBuilder
new的时候,直接把字符串放进去就好了
new StringBuilder(字符串/字符串变量)

sb. charAt(int index) :获取指定索引处的某个字符
sb.  delete(int start, int end) 删除

ArrayList<E>
*    <E>:在出现E的地方我们使用引用数据类型替换即可
*   
* 格式:
*    ArrayList<String> 变量名 = new ArrayList<String>();
*    调方法:array.add();
*   
* 添加元素:
*   public  boolean add(E,e):添加元素
*   public void add(int index,E element):在指定的索引处添加一个元素
*   
* 获取元素:
*   public E get(int index):返回指定索引处的元素
* 集合长度:
*   public int size():返回集合中的元素的个数
* 删除元素:
*   public boolean remove(Object o):删除指定的元素,返回删除是否成功
*   public E remove(int index):删除指定索引处的元素,返回被删除的元素
* 修改元素:
*   public E set(int index,E elememt):修改指定索引处的元素,返回被修改的元素

集合类 sh = new 集合类(参数)、
ArrayList<对象(对象名字和字符串对象)> array = new ArrayList<对象>();
array.size()获取长度(元素个数)

array.add("内容"):向这个ArrayList中添加内容
array.add(索引,内容):向指定所以处添加内容,原来的内容被挤到后面一个元素去了

array.get(索引):得到索引处对应的值---(相当于charAt)

* FileWriter:(写数据)
*  //(反斜线):需要两个     \(正斜线):需要一个
*  
* 1.FileWriter fw = new FileWriter("文件名")
*   抛出异常
*   1>.与文件相关联
*   2>.让IO流引用指向这个对象
*   3>.如果系统中没有这个文件,通过输出流对象会帮我们自动创建该文件
*      如果系统中有这个文件,会把之前的文件清空,再重新写入新的内容
*
* 2.变量名.write("内容");
*
* 3.变量名.flush();
*
* 4.变量名.close();
*
* 输出流写数据的步骤:
*    A:创建输出流对象
*    B:调用输出流对象的写数据方法,并刷新缓冲区
*    C:释放资源
*   
* 相对路径:相对当前项目而言,在项目的根目录下
* 绝对路径:以盘符开始的路径
*
* close()和flush()方法的区别:
*   flush():刷新缓冲区.该流对象可以继续使用
*   close():先刷新缓冲区,然后通知系统释放资源.该流对象不可以在继续使用
*  
* FileWriter方法:
*    void write(String str):写一个字符串数据
*    void write(String str,int index, int len):写一个字符串中的一部分数据
*    void write(int ch):写一个字符数据
*      int类型的好处:可以写char类型的数据,也可以写char对应的int类型的值
*    void write(char[] chs):写一个字符数组数据
*    void write(char[] chs.int index,int len):写一个字符数组的一部分数据
*
* 如何实现换行:("\n")
*   Windows:\r\n
*   Linux:\n
*   Mac:\r
*   
* 如何实现数追加写入:
*   FileWriter(String fileName,boolean append)
*   
* FileReader:(读数据 --> 输入流)
*    FileReader(String fileName):传递文件名称
*   
* 输入流读文件的步骤:
*   A:创建输入流对象
*   B:调用输入流对象读数据方法
*   C:资源释放
*   
* 异常:java.io.FileNotFoundException: fr.txt(系统找不到指定的文件)
*
* 文件复制:
*
* 数据源:FileWriterDemo.java  ---读数据-- FileReader
*
* 目的地:Copy.java   ---写数据-- FileWriter
*
* FileReader fr = new FileReader("DemoIO.java");
      
       FileWriter fw = new FileWriter("Copy.java");
      
       int ch;
       while((ch = fr.read()) != -1){
               fw.write(ch);
       }
       fw.close();
       fr.close();
*
* 一次读取一批:
* FileReader fr = new FileReader("Test.java");
       char[] ch = new char[1024];
      
       int len;
       while((len = fr.read(ch)) != -1){
               System.out.println(len);
               System.out.print(new String(ch,0,len));
       }
      
       fr.close();
*
*  BufferedWriter(new FileWriter("Test.java");
*  BufferedReader(new FileReader("c.txt");
*  
*  缓冲流的特殊功能:
*  BufferedWriter:
*     void newLine():
       写一个换行符,这个换行符由系统决定,不同的操作系统newLine()方法使用的换行符不同
*     
*  BufferedReader:
*     String readLine():
       一次读取一行数据,但是不读取换行符
作者: 小浙姐姐    时间: 2018-4-6 14:17

越努力越幸运




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2