• Java基础知识二次学习--第六章 常用类


    第六章 常用类
     
    时间:2017年4月26日16:14:49~2017年4月26日16:56:02
    章节:06章_01节~06章_06节
    视频长度:20:57+1:15+8:44+1:26+11:28+8:28
    内容:String
    心得:
    String代表不可变的字符序列
    关于String的不可变 之前第3章关于final的整理中有专门提到
    这里补充一点小知识
     
    如果是直接2个字符串+ 用string没问题 
    比如String s= "haha" +“hello”
    但是如果是用到了String拼接的话效率就很低
    比如 
    String s ="haha";
    String b =s + "hello";
    这样效率就很低  原因是 String中 重载了"+"这个操作符 (事实上java中只允许对+操作符进行重载)
    内部实现是通过StringBuilder来实现的(可以通过反编译看出来 是通过Stringbuilder)
    api中的解释是使用StringBuilder or StringBuffer
    接着返回toString String类型
     
    第一种的+的话 直接在常量池作处理 不会牵扯到堆空间 而如果是第二种的+话 就会在堆内存不断的开new然后再迅速的不断销毁 效率就很低
     
    多个相同的String 指向常量池同一块地址 一种优化 当然这种优化是建立在不可变基础上的
     
    常用方法的

     

     
     
    两道练习题

     

     
    第一题
    思路:
    1.首先用charAt方法将string拆成字符,定义三个num1,num2,num3,分别用于记录大写英文,小写英文与其他
    2.接着遍历整个String里的字符 c=s.charAt(i) 再进行操作
    方法1:
    直接通过多个if
    条件分别是
    c>'a' && c<'z' //判断小写的
    c>'A' && c<'Z' //判断大写的
    else //非英文字符.
     
    方法2:
    通过string的indexof 方法 该方法返回 该字符在一个String字符串里的位置
    然后构造一个大写字符串SL="ABCD......Z" 再构造一个小写字符串SU="abcd......z"
    同样是遍历整个String里的字符 c=s.charAt(i)
    if(SL.indexOf(c) !=-1)//判断大写
    if(SU.indexOf(c) !=-1)//判断小写
    else//非英文字符
     
    方法3:
    直接利用字符类型的包装类里的方法
    Character.isLoverCase()和Character.isUpperCase() 
    来判断大小写
    else 判断非英文字符
     
    效率都差不多 主要是要理解利用charAt(i) 把里面的字符单独拿出来作比较
     
    练习题2
    思路:
    利用IndexOf 方法找到该字符串在总字符串的位置 然后记一次数
    接着利用subString方法 截断出一个新的字符串 依次循环即可
    需要注意的是 第一个字符 在indexOf 返回的是1 因为他返回的是索引位
    而 subString开始是从0 开始 所以要-1
     
    String s="javassssdddddjavancnncncnjava";
    String toFind="java";
    int count = 0;
    int index = -1;
    while((index = s.indexOf(toFind)) != -1){
    s = s.substring(index + sToFind.length());
    count ++;
    }
    System.out.println(count);
     
    时间:2017年4月26日16:57:25~2017年4月26日17:04:54
    章节:06章_07节
    视频长度:12:10
    内容:StringBuffer
    新的:
    Buffer是缓冲区的意思 先放在缓冲区 然后再放到其他地方 这称作缓冲区
    java.lang.StringBuffer 代表可变的字符序列
     
    与String类似,但是StringBuffer可以对其字符串作出改变
     
    常见构造方法
    StringBuffer() StringBuffer(String s)
     
    s1="h";
    s2="w";
    s=s1+s2;
    内存图(String的添加)

     

    常用方法
     
    而StringBuffer可以直接对地址进行改变
    使用StringBuffer append(...)
    里面有各种重载参数的方法
     
    insert() ,delete() 各类重载方法
     
    包括和String类似的一些方法 indexOf substring...
     
    特有的 reverse()方法//将字符序列进行逆序,返回修改后的该stringBuffer对象引用
     
    时间:2017年4月26日17:05:27~2017年4月26日17:09:08
    章节:06章_08节 06章_09节
    视频长度:09:22 + 12:59
    内容:基础数据类型的包装类
    心得:
    之前的章节有做过整理,这里简单介绍下
    基本类型在栈上 包装类在堆上 封装了一个相应的基本数据类型数值 并为其提供了一系列的操作 建议去api中去进行查阅
     
    时间:2017年4月26日17:09:30~2017年4月26日17:24:16
    章节:06章_10节 06章_11节
    视频长度:25:02 +11:23
    内容:Math 和 File 以及 递归列出目录结构
    心得:
    Math类
    java.lang.Math 提供了一系列静态方法用于科学计算 方法的参数与返回值类型一般是double类型
    这里截个图,详细可以去api中查看

     

     
    File类
    常用方法
    listFiles()子目录和子文件 放到一个file数组里
     
    构造方法
    public File(String pathname)
    以pathname为路径创建File对象,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储
    public File(String parent,String child)
    partent是父路径,child是子路径 创建file对象
     
    有一个方法separator 存储了当前系统的路径分割符 如果要跨平台的
    可以使用separator来操作(但是可以直接使用/,windows与linux都可以用)
     

     

    其他方法截图了
     
    注意写路径的时候是转义字符 要写\ 但是推荐使用/来操作(这样Linux也可以)
    或者使用最标准的 separator
     
     
    题目

     

     
    思路:
    因为之前做过类似的小程序
    利用isDirectory方法判断是不是文件夹 
    然后利用递归即可

     

     
    注意点 有一个level参数 代表着递归的层数
    这样打印出来的结构稍微有点层次感。。
     
    时间:2017年4月26日17:24:34~2017年4月26日17:29:06
    章节:06章_12节
    视频长度:08:25
    内容:Enum 枚举类型
    心得:
    类型 
    1.只能取特定值的一个
    2.使用enum关键字
    3.是Java.lang.Enum类型
    举例:TestEnum.java
     
    public enum MyColor{red , green ,blue}
     
    使用MyColor.red; 看起来有点类似于静态变量 类名.变量
     
    使用枚举类型的话 可以在编译期就做出一些限制
     
    时间:2017年4月26日17:29:45~2017年4月26日17:31:00
    章节:06章_13节
    视频长度:2:45
    内容:总结
    心得:
    第6章的知识点总结
    1.String相关
    2.基础类型包装类
    3.Math
    4.File--递归列出所以文件和目录
    5.枚举类型
  • 相关阅读:
    基于Vue.js的表格分页组件
    浅谈Vue.js
    利用js2image把代码压缩成圣诞树
    在AngularJS中的使用Highcharts图表控件
    使用Uploadify(UploadiFive)多文件上传控件遇到的坑
    iOS开源项目周报0323
    安卓开源项目周报0322
    前端开源项目周报0321
    iOS开源项目周报0316
    安卓开源项目周报0315
  • 原文地址:https://www.cnblogs.com/invoker-/p/6795169.html
Copyright © 2020-2023  润新知