第六章 常用类
 
时间: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.枚举类型

Java基础知识二次学习--第六章 常用类的更多相关文章

  1. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

  2. Java基础知识二次学习--第七章 容器

    第七章 容器   时间:2017年4月27日15:08:30 章节:07章01节~07章04节 视频长度:20:21 +12:38 +3:55 +2:57 内容:容器API 心得: Java API ...

  3. Java基础知识二次学习--第五章 数组

    第五章 数组 时间:2017年4月26日15:11:30~2017年4月26日15:15:54 章节:05章_01节  视频长度:09:30 内容:一维数组的内存分析 心得: Java中数组是引用类型 ...

  4. Java基础知识二次学习--第四章 异常

    第四章 异常处理   时间:2017年4月26日11:16:39~2017年4月26日11:28:58 章节:04章_01节 04章_02节 视频长度:20:46+01:16 内容:异常的概念 心得: ...

  5. Java基础知识二次学习-- 第一章 java基础

    基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一 ...

  6. Java基础知识二次学习-- 第二章 基础语法与递归补充

    第二章 基础语法与递归补充   时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...

  7. Java基础知识二次学习--第八章 流

    第八章 流   时间:2017年4月28日11:03:07~2017年4月28日11:41:54 章节:08章_01节 视频长度:21:15 内容:IO初步 心得: 所有的流在java.io包里面 定 ...

  8. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  9. java基础知识(二)

    java的布局管理: borderLayout:则将板块分为东西南北中五个方向,每添加一个组件就要指定组件摆放的方位,放置在东西南北四个方向的组件将贴边放置.当拉大Frame的时候,处在center( ...

随机推荐

  1. span表情输入框 --- Author: rose && lvyerose@163.com

        像QQ等社交聊天中,不可或缺的一部分就是我们常用的表情输入了,有时候有趣的表情同样能吸引住用户达到用户常驻的效果,当然,我们开发的时候不用去研究如何才能做到有趣,如何才能做到足够吸引用户,我们 ...

  2. Activity间传递数据

     1.从当前的Activity传递数据到下一个Activity: (1)发送方(当前的Activity): Bundle bundle = new Bundle(); bundle.putString ...

  3. Mybatis基础学习(三)—映射文件

    一.输入映射 1.parameterType     指定输入参数的Java类,可以使用别名或者类的全限定名.它也可以接受基本数据类型.POJO对象.HashMap.   (1)基本数据类型   (2 ...

  4. win10 如何配置 java jdk1.8环境变量(2017.2.24)

    win10 如何配置 java jdk 环境变量 这里的win10 为全新安装的系统 一.安装 下载 jdk 64位 windows 版本安装(默认安装) 默认安装的路径: C:\Program Fi ...

  5. lca最近公共祖先(模板)

    洛谷上的lca模板题--传送门 学了求lca的tarjan算法(离线),在洛谷上做模板题,结果后三个点超时. 又把询问改成链式前向星,才ok. 这个博客,tarjan分析的很详细. 附代码-- #in ...

  6. HYML / CSS部分

    1.什么是盒子模型? 在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个 ...

  7. 你想要的都在这里,ASP.NET Core MVC四种枚举绑定方式

    前言 本节我们来讲讲在ASP.NET Core MVC又为我们提供了哪些方便,之前我们探讨过在ASP.NET MVC中下拉框绑定方式,这节我们来再来重点看看枚举绑定的方式,充分实现你所能想到的场景,满 ...

  8. Linux下修改环境终端提示符

    Linux修改环境变量PS1(命令行提示符),可以使用vi编辑/etc/bashrc或/etc/profile文件,在最后加上: export PS1='[\u@\h \W]\$ ' 即可,其中\u显 ...

  9. (二)java多线程之synchronized

    本人邮箱: kco1989@qq.com 欢迎转载,转载请注明网址 http://blog.csdn.net/tianshi_kco github: https://github.com/kco198 ...

  10. PPT素才搜索简谈

    PPT已经是大部分公司工作汇报.培训.年度总结等不可缺少的办公软件.下面介绍一些关于PPT素才搜索的方法. 第一:模板    1.搜索大法--filetype:对应的文档格式 在关键词后添加这样一段文 ...