2021.01.13 java第一阶段 08

一、System

1、System类型用于描述系统资源的类型,该类不创建对象,直接使用类名来调用静态内容即可
2、常用字段:
(1)System.out:标准输出流,默认关联到显示器(控制台)
(2)System.in:标注输入流,默认关联到键盘
(3)System.err:标准错误输出流,默认关联显示器(控制台),用于打印错误信息
3、常用方法:
(1)gc():强制垃圾回收器回收系统垃圾
(2)currentTimeMillis():获取当前时间的毫秒值表示形式。1秒等于1000毫秒。获取到的当前时间,是从1970年1月1日0时0分0秒到现在的时间,其中我国地处东八区,所以,我国的时间起点在1970年1月1日8时0分0秒。我们可以通过这个方法,在某段程序执行前获取时间,执行完毕获取时间,做差值,就能够得到我们程序执行的一个大致的耗时

二、Scanner

(一)Scanner概述
1、Scanner是一个扫描器,可以扫描指定设备中的基本数据类型和字符串
2、构造方法:
(1)Scanner(File source) 扫描器关联到指定的文件
(2)Scanner(InputStream source) 扫描器关联到指定的流,例如我们键盘录入,就是通过流关联的键盘
(3)Scanner(String source) 扫描器可以扫描参数字符串
(二)录入基本数据类型的方法
1、方法:
(1)nextByte()
(2)nextShort()
(3)nextInt()
(4)nextLong()
(5)nextFloat()
(6)nextDouble()
(7)nextBoolean()
2、注意:
(1)没有nextChar方法,因为一般都是录入字符串而不是录入字符
(2)一次录入多个数据,录入的每个数据之间可以使用空格隔开,在解析的时候,会以空格以外的部分作为解析的内容,匹配的顺序,就是键盘录入从上到下的顺序
(3)当录入float类型的时候,不需要加上F,因为键盘录入的数据,在扫描到Java代码之前,不属于Java代码,也就不用遵守Java语法规范
(三)录入字符串的方法
1、next() 可以录入下一个完整标记,返回一个字符串。通过空格来分割各个标记
2、nextLine() 可以录入下一个完整标记,返回一个字符串。通过换行符来分割各个标记
(四)Scanner类型键盘录入的小问题
1、问题:当先录入一个数据,使用的方法是可以将空格作为结束标志的方法,后录入一个数据,使用的是nextLine的时候,就会产生nextLine()方法无法录入的情况
2、问题的产生原因:
(1)当我们两个nextInt()连用的时候,在输入一个数据时,实际上输入的是【数据+换行符】,数据会被第一个nextInt()解析,换行符就留在了对象内部,等调用第二个nextInt()时,因为上一次有一个遗留的换行符,但是nextInt()无法解析换行符,所以会到换行符之后寻找内容
(2)当我们先用nextInt()方法后用nextLine()方法的时候,输入一个数据时,实际上输入的是【数据+换行符】,数据会被第一个nextInt()解析,换行符就留在了对象内部,等到nextLine()运行时,遗留在对象内部的换行符会直接将nextLine()消耗掉,因为nextLine()可以解析换行
3、解决办法:
(1)如果nextInt()方法和nextLine()方法连用,可以多写一个nextLine(),第一个nextLine()专门消耗nextInt()方法遗留下来的换行,第二个nextLine()调用的时候,因为对象内部没有内容,就可以重新录入了。
(2)如果nextInt()方法和nextLine()方法连用,可以创建两个扫描器对象,一个调用nextInt()方法,另一个调用nextLine()方法,nextInt()方法将换行符遗留在一个对象内,另一个对象内部不存在任何数据,就只能等待录入。
(3)一般情况下,推荐两个nextLine()方法连用,这样不会引发上述问题,录入数据之后,再讲数据解析成需要的数据类型,是常用手段

三、StringBuilder

(一)概述
1、StringBuilder是一个可变字符序列,又叫做字符串缓冲区、字符串生成器
2、常用方法是append和insert方法,就是在StringBuilder对象本身去追加或者插入新的字符
3、StringBuilder底层是一个私有的char[],用于存储字符,外界无法直接访问,但是提供了一些公开的
方法,用于操作可变字符序列
4、String和StringBuilder的区别:
(1)String是不可变字符序列,没有提供在其本身上进行操作的方法
(2)StringBuilder是可变字符序列,提供了在其本身上进行操作的方法,实际上StringBuilder的底
层是一个长度可变的字符数组
(二)构造方法
1、创建对象,将其他类型的数据可以添加到StringBuilder中
2、构造方法:
(1)StringBuilder() 创建一个StringBuilder对象,不包含任何字符,缓冲区初始大小是16
(2)StringBuilder(int capacity) 创建一个StringBuilder对象,不包含任何字符,初始大小由
capacity来指定
(3)StringBuilder(String str) 创建一个StringBuilder对象,初始化参数字符串内容,初始容量为
16+字符串长度
3、搭配使用的成员方法:
(1)capacity() 返回字符串缓冲区的容积
(2)length() 返回字符串缓冲区中的字符个数
(三)添加功能
1、append(任意类型) 可以将任意类型的数据追加到此可变字符序列上。计算容积的算法:在目前缓冲
区数组长度的基础上<<1 + 2
2、insert(int offset, 任意类型) 在当前的可变字符序列上,可以将任意类型的数据插入到指定的索引位
置上
(四)删除功能
1、deleteCharAt(int index) 删除当前sb对象中指定索引位置上的单个字符
2、delete(int start, int end) 删除当前sb对象中的一段字符,范围由参数指定[start, end)
(五)替换和反转功能
1、replace(int start, int end, String str) 使用str替换[start, end)表示的内容
2、reverse() 将sb对象的内容进行反转
六)Debug模式和加号拼接字符串原理
1、什么是Debug模式:就是我们程序员手动操作程序运行,用于代码排错的一个模式。在这个模式中,代码不会自动执行,需要我们点选按钮,代码根据点选的情况,点击一步,执行一步。在Debug模式中,我们可以清晰的看到每一个步骤获取到的每一个数据。
2、具体操作:
(1)甲虫状按钮:用于启动Debug模式
(2)红点:用于停止Debug模式
(3)step over:直接执行当前代码,跳转到下一行代码
(4)step into:跳入当前要执行的代码底层相关的内容
3、在Eclipse的右上角,可以从Debug透视图恢复到编辑代码的透视图
4、加号拼接字符串原理:
(1)获取到第一个拼串的参数
(2)【第一次创建对象】在底层调用StringBuilder相关的构造方法,创建对象,将第一个参数添加到当前StringBuilder对象中
(3)获取到第二个拼串参数,也追加到步骤(2)中创建的StringBuilder对象中
(4)【第二次创建对象】调用StringBuilder类中的toString()方法,toString()方法又调用了String类型的构造方法,将StringBuilder对象的char[]数组的有效内容,转为字符串String
(5)综上,一次加号拼接字符串,就需要创建2个对象,但是StringBuilder不论拼接多少内容,一共创建两个对象,所以StringBuilder拼接字符串效率远高于加号拼串
(七)StringBuilder和StringBuffer的区别
1、相同点:
(1)StringBuilder和StringBuffer都是字符串缓冲区
(2)所有的API完全一致
2、不同点:
(1)线程安全性不同:
StringBuilder线程不安全
StringBuffer线程安全
(2)效率不同
StringBuilder效率高
StringBuffer效率低
(3)出现版本不同
StringBuilder 1.5版本
StringBuffer 1.0版本

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值