<pre class="java" name="code">package cn.itcast;
/** 四大皆空:*       第一空:变量根本就没有值   不能使用*         第二空:变量有值,但是值为null常量    该变量可以调用方法     但是会产生空指针异常*      第三空:变量有值,值是一个空字符串对象, 该变量可以调用方法,也不会产生空指针异常,但是该对象的值是空的*        第四空:null常量不可以直接打印,返回值为void的方法调用后不可以直接打印*/
public class Demo01_4null {public static void main(String[] args) {//第一空:变量可能根本就没有值  不能使用
//      String s;
//
//      boolean b = true;
//
//      if(b) {
//          s = "酷爱java!";
//      }
//      else {
//          s = "大爱java!";
//      }//     System.out.println(s);//第二空:变量有值,但是值为null常量    该可以调用方法     但是会产生空指针异常
//      String s = null;
//      s.length();//第三空:变量有值,值是一个空字符串对象, 该变量可以调用方法,也不会产生空指针异常,但是该对象的值是空的
//      String s = "";
//      System.out.println(s.length());
//      System.out.println(s.isEmpty());//
//      String s = null;
//      System.out.println(s);
//      System.out.println(null);System.out.println(method());
//      System.out.println(method2());}public static int method() {return 10;}public static void method2() {return;}
}

package cn.itcast_01;import java.io.FileInputStream;import java.io.IOException;/* * 字节流读取中文可能出现的小问题: */public class FileInputStreamDemo {public static void main(String[] args) throws IOException {// 创建字节输入流对象FileInputStream fis = new FileInputStream("a.txt");// 读取数据// int by = 0;// while ((by = fis.read()) != -1) {// System.out.print((char) by);// }byte[] bys = new byte[1024];int len = 0;while ((len = fis.read(bys)) != -1) {System.out.print(new String(bys, 0, len));}// 释放资源fis.close();}}

</pre><p>递归(理解) (1)方法定义中调用方法本身的现象  举例:老和尚给小和尚讲故事,我们学编程 (2)递归的注意事项;  A:要有出口,否则就是死递归  B:次数不能过多,否则内存溢出  C:构造方法不能递归使用 (3)递归的案例:  A:递归求阶乘  B:兔子问题  C:递归输出指定目录下所有指定后缀名的文件绝对路径  D:递归删除带内容的目录(小心使用)   </p><p>:字符流(掌握) (1)字节流操作中文数据不是特别的方便,所以就出现了转换流。    转换流的作用就是把字节流转换字符流来使用。 (2)转换流其实是一个字符流  字符流 = 字节流 + 编码表 (3)编码表  A:就是由字符和对应的数值组成的一张表  B:常见的编码表   ASCII   ISO-8859-1   GB2312   GBK   GB18030   UTF-8  C:字符串中的编码问题   编码    String -- byte[]   解码    byte[] -- String (4)IO流中的编码问题  A:OutputStreamWriter   OutputStreamWriter(OutputStream os):默认编码,GBK   OutputStreamWriter(OutputStream os,String charsetName):指定编码。  B:InputStreamReader   InputStreamReader(InputStream is):默认编码,GBK   InputStreamReader(InputStream is,String charsetName):指定编码  C:编码问题其实很简单   编码只要一致即可 (5)字符流  Reader   |--InputStreamReader    |--FileReader   |--BufferedReader  Writer   |--OutputStreamWriter    |--FileWriter   |--BufferedWriter (6)复制文本文件(5种方式)</p><p>2:IO流小结(掌握) IO流  |--字节流   |--字节输入流    InputStream     int read():一次读取一个字节     int read(byte[] bys):一次读取一个字节数组         |--FileInputStream     |--BufferedInputStream   |--字节输出流    OutputStream     void write(int by):一次写一个字节     void write(byte[] bys,int index,int len):一次写一个字节数组的一部分          |--FileOutputStream     |--BufferedOutputStream  |--字符流   |--字符输入流    Reader     int read():一次读取一个字符     int read(char[] chs):一次读取一个字符数组          |--InputStreamReader      |--FileReader     |--BufferedReader      String readLine():一次读取一个字符串   |--字符输出流    Writer     void write(int ch):一次写一个字符     void write(char[] chs,int index,int len):一次写一个字符数组的一部分          |--OutputStreamWriter      |--FileWriter     |--BufferedWriter      void newLine():写一个换行符            void write(String line):一次写一个字符串。</p><p>1:打印流(掌握)PrintWriter /PrintStream (1)特点:  A:打印流可以输出任意类型数据。  B:如果启用了自动刷新,在调用println()方法的时候,可以自动刷新并换行。  C:可以直接操作文件。   哪些流对象可以直接操作文件呢?   看其构造方法,同时有File和String构造参数的。 (2)案例:  通过打印流改进文本文件的复制。</p><p>  BufferedReader br = new BufferedReader(new FileReader("a.txt"));  PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);</p><p>  String line = null;  while((line=br.readLine())!=null) {   pw.println(line);  }</p><p>  pw.close();  br.close();</p><p>  printf(String fomat,Object... o);</p><p>2:Properties(理解) (1)是Hashtable的子类。内置了IO流的操作。 (2)特有功能:  A:添加   Object setProperty(String key, String value)   B:获取   String getProperty(String key)     String getProperty(String key, String defaultValue)     Set<String> stringPropertyNames() 相当于以前的keySet() (3)和IO流结合的功能:  A:list 把集合中的数据写到文本文件。只能使用打印流。  B:load 把文本文件中的数据加载到集合。  C:store 把集合中的数据写到文本文件。 (4)案例:  键:blood  值:1200</p><p>  键:magic  值:1000</p><p>3:序列化流(理解) (1)就是把对象按照流一样的操作。方便网络传输。 (2)序列化流和反序列化流  ObjectOutputStream   writeObject(Object obj)  ObjectInputStream   readObject() (3)什么是序列化?如何实现序列化?什么是反序列化? (4)实现序列化接口的类是可以被序列化流操作的。    在这里面可以给定一个序列化id值。这样做简单的操作对写过的数据没有影响。</p><p>4:其他流PPT简单回顾即可。</p><p> </p><pre class="java" name="code">

:字符流(掌握)
 (1)字节流操作中文数据不是特别的方便,所以就出现了转换流。
    转换流的作用就是把字节流转换字符流来使用。
 (2)转换流其实是一个字符流
  字符流 = 字节流 + 编码表
 (3)编码表
  A:就是由字符和对应的数值组成的一张表
  B:常见的编码表
   ASCII
   ISO-8859-1
   GB2312
   GBK
   GB18030
   UTF-8
  C:字符串中的编码问题
   编码
    String -- byte[]
   解码
    byte[] -- String
 (4)IO流中的编码问题
  A:OutputStreamWriter
   OutputStreamWriter(OutputStream os):默认编码,GBK
   OutputStreamWriter(OutputStream os,String charsetName):指定编码。
  B:InputStreamReader
   InputStreamReader(InputStream is):默认编码,GBK
   InputStreamReader(InputStream is,String charsetName):指定编码
  C:编码问题其实很简单
   编码只要一致即可
 (5)字符流
  Reader
   |--InputStreamReader
    |--FileReader
   |--BufferedReader
  Writer
   |--OutputStreamWriter
    |--FileWriter
   |--BufferedWriter
 (6)复制文本文件(5种方式)

2:IO流小结(掌握)
 IO流
  |--字节流
   |--字节输入流
    InputStream
     int read():一次读取一个字节
     int read(byte[] bys):一次读取一个字节数组
    
     |--FileInputStream
     |--BufferedInputStream
   |--字节输出流
    OutputStream
     void write(int by):一次写一个字节
     void write(byte[] bys,int index,int len):一次写一个字节数组的一部分
     
     |--FileOutputStream
     |--BufferedOutputStream
  |--字符流
   |--字符输入流
    Reader
     int read():一次读取一个字符
     int read(char[] chs):一次读取一个字符数组
     
     |--InputStreamReader
      |--FileReader
     |--BufferedReader
      String readLine():一次读取一个字符串
   |--字符输出流
    Writer
     void write(int ch):一次写一个字符
     void write(char[] chs,int index,int len):一次写一个字符数组的一部分
     
     |--OutputStreamWriter
      |--FileWriter
     |--BufferedWriter
      void newLine():写一个换行符
      
      void write(String line):一次写一个字符串

package cn.itcast_01;/** 递归:方法定义中调用方法本身的现象* * 方法的嵌套调用,这不是递归。* Math.max(Math.max(a,b),c);* * public void show(int n) {*         if(n <= 0) {*           System.exit(0);*        }*      System.out.println(n);*         show(--n);* }* * 注意事项:*      A:递归一定要有出口,否则就是死递归*      B:递归的次数不能太多,否则就内存溢出*         C:构造方法不能递归使用* * 举例:*         A:从前有座山,山里有座庙,庙里有个老和尚和小和尚,老和尚在给小和尚讲故事,故事是:*          从前有座山,山里有座庙,庙里有个老和尚和小和尚,老和尚在给小和尚讲故事,故事是:*                从前有座山,山里有座庙,庙里有个老和尚和小和尚,老和尚在给小和尚讲故事,故事是:*                    从前有座山,山里有座庙,庙里有个老和尚和小和尚,老和尚在给小和尚讲故事,故事是:*                        ...*                    庙挂了,或者山崩了*      B:学编程  -- 高薪就业 -- 挣钱 -- 娶媳妇 -- 生娃娃 -- 放羊 -- 挣学费*             学编程  -- 高薪就业 -- 挣钱 -- 娶媳妇 -- 生娃娃 -- 放羊 -- 挣学费*                 学编程  -- 高薪就业 -- 挣钱 -- 娶媳妇 -- 生娃娃 -- 放羊 -- 挣学费*                  学编程  -- 高薪就业 -- 挣钱 -- 娶媳妇 -- 生娃娃 -- 放羊 -- 挣学费*                      ...*                    娶不到媳妇或者生不了娃娃    */
public class DiGuiDemo {// public DiGuiDemo() {// DiGuiDemo();// }
}
package cn.itcast_02;/** 需求:请用代码实现求5的阶乘。* 下面的知识要知道:*       5! = 1*2*3*4*5*        5! = 5*4!* * 有几种方案实现呢?*        A:循环实现*         B:递归实现*             a:做递归要写一个方法*            b:出口条件*             c:规律*/
public class DiGuiDemo {public static void main(String[] args) {int jc = 1;for (int x = 2; x <= 5; x++) {jc *= x;}System.out.println("5的阶乘是:" + jc);System.out.println("5的阶乘是:"+jieCheng(5));}/** 做递归要写一个方法:*      返回值类型:int*       参数列表:int n* 出口条件:*       if(n == 1) {return 1;}* 规律:*      if(n != 1) {return n*方法名(n-1);}*/public static int jieCheng(int n){if(n==1){return 1;}else {return n*jieCheng(n-1);}}
}

【黑马程序员】集合二相关推荐

  1. 黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

    ------- android培训.java培训.期待与您交流! ---------- 黑马程序员-----集合框架类(四) 高级for循环.方法的可变参数及静态导入 1.1 高级for循环(示例1) ...

  2. 黑马程序员——集合框架(二)

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ package com.yang.ex; /*------Set:不包含重复 ...

  3. 黑马程序员——集合Collection:体系详述

    ------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...

  4. 黑马程序员——集合框架

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类集是一个动态对象数组,不受对象数组长度的限制. List集合里面的内容允许重复,Set集合不允 ...

  5. 黑马程序员————集合框架1(day14)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 集合框架1 l  体系概述 l  共性方法 l  迭代 ...

  6. 黑马程序员————集合2(day17)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 集合2 l  Collections – sort l ...

  7. 黑马程序员-集合(Map)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 区分map集合和collectio ...

  8. 黑马程序员入学Java知识——精华总结

    黑马程序员入学Java知识--精华总结 J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结! 一.黑马程序员-java概述与基础知识 6 1.何为编程? 6 2.Java语言 ...

  9. 黑马程序员——总集篇

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 本人编写技术博客的时候只是针对章节的一些比较重要的知识点来编写的: 个人感觉质量 ...

  10. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

最新文章

  1. 斩草除根-修复被剪断的鼠标引线
  2. Android Hander机制的理解
  3. 人工机器:Jetson Nano 安装Qt5
  4. 计算机控制系统的稳态误差,计算机控制系统的稳态误差
  5. C++笔记------模版
  6. 超图Cesium量算
  7. MFC开发IM-第十篇、MFC改变static text颜色
  8. JAVA秒杀mysql层实现_一文搞懂MySQL的Join,聊一聊秒杀架构设计
  9. 开源月刊(Open Source)
  10. 如何通过ip访问服务器文件共享,通过ip访问云服务器文件共享
  11. 西点军校的经典法则[转]
  12. html canvas drawrect 变形,canvas图形变换
  13. 免费抖音短视频素材网站分享
  14. F28335中断系统
  15. 做视频后期剪辑用什么软件好?4款常用软件推荐
  16. 测序数据量,测序深度和测序覆盖度
  17. IE下载时中文文件名乱码解决
  18. 职场学习、员工管理-怎样做企业最受欢迎的员工
  19. Java计算连续自交杂合概率代系变化
  20. java年轻代和年老代默认比值_JAVA中的GC以及年轻代,年老代,持久代的认识

热门文章

  1. IT外包服务业各领域的未来前景和趋势
  2. 华为年报透露员工收入:2016年平均薪酬近60万
  3. 【工作日报】2019年7月 前端开发工作日报汇总
  4. 关于生活,你可以选择-转自网络
  5. 手机和电脑如何快速传大文件
  6. PDF怎么提取图片,这三个方法你肯定不知道
  7. 英寸和厘米的换算python_OJ实例:厘米换算英尺英寸
  8. angular2 路由ajax,angular2路由切换改变页面title的示例代码
  9. 获取小程序页面跳转链接
  10. 内存带宽测试程序——stream2-C语言版