java基础知识(三)

一、JAVA常用类

Math类

包含了用于执行基本数学运算的属性和方法。

方法描述
abs(int i)求整数的绝对值
max(int i1,int i2)求两个整数中最大数
round(float f)求最靠近f的整数
min(int i1,int i2)求两个整数中最小数
double random()产生0~1之间的随机数
double floor(double d)不大于d的最大整数

String类

Java 提供了 String 类来创建和操作字符串。

  • 是对象类型不是原始类型.
  • 为不可变对象,一旦被创建,就不能修改它的值.
  • 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
  • String 是final类,是不可被继承的.
方法描述
int length()长度
byte[] getBytes()String 解码为字节序列
boolean equals(Object anObject)判断指定对象是否相同
int indexOf(String str)返回第一次出现的str在此字符串中的索引
String substring(int beginIndex, int endIndex)字符串截取
String[] split(String regex)拆分此字符串
  • 练习
  1. 获取一个字符串在另一个字符串中出现的次数。
    比如:获取“ ab”在 “abkkcadkabkebfkabkskab”
    中出现的次数.
  2. 将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”

StringBuffer类

对字符串进行修改。
StringBuffer 线程安全 StringBuilder 线程不安全

方法描述
strings.append(String s)将s追加到strings字符序列。
strings.insert(8,“java”)将java字符添加到strings字符第八个位置开始,其他的往后移动
string.delete(5,8)将strings字符从第五个字符删到第八个字符
toString()转换成String
setCharAt(int n, char ch)将字符序列 n 处的字符用参数 ch 指定的字符替换,n 的值必须是非负的,并且小于当前对象中字符串序列的长度。
replace(int n, int m, String str)用 str 替换对象中的字符序列,被替换的子字符序列由下标 n 和 m 指定。

二、IO

I/O指程序与外部设备或其他计算机进行交互的操作。
(Stream)是指在计算机的输入输出操作中各部件之间的数据流动。按照数据的传输方向,流可分为输入流与输出流
分类

  • 按操作数据单位不同分为:字符流、字节流。
  • 按数据流的流向不同分为:输入流、输出流。
  • 按流的角色不同分为:节点流、处理流。

文件(字符)流
FileInputStream:从一个对象读取出字节数据;
FileOutputStream:将字节数据写入一个对象文件中。

File类

  • java.io.File类:文件和目录路径名的抽象表示形式,与平台无关
  • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
  • File对象可以作为参数传递给流的构造函数
方法描述
public File(String pathname)创建File类对象,传入完整路径
public boolean createNewFile()创建新文件
public boolean delete()删除文件
public boolean exists()判断文件是否存在
public long length()返回文件的大小
public boolean isDirectory()判断给定的路径是否在一个目录
public String[] list()列出指定目录的全部内容,只是名称
public File[] listFiles()列出指定目录的全部内容,会有路径
public Boolean mkdir()创建一个目录
public Boolean renameTo(File dest)为已有的文件重命名

字节输入流

方法功能
close()关闭输入流
read()从输入流中当前位置读入一个字节的二进制数据,以此数据为低位字节,补足16位的整型量(0~255)后返回,若输入流中当前位置没有数据,则返回-1
read(byte b[])从输入流中的当前位置连续读入多个字节保存在数组中,并返回所读取的字节数
read(byte b[], int off, int len)从输入流中当前位置连续读len长的字节,从数组第off+1个元素位置处开始存放,并返回所读取的字节数
void reset()将读取位置返回到标记处
void mark()标记输入流的当前位置

字节输出流

方法功能
void close()关闭输出流
void flush()强制清空缓冲区并执行向外设输出数据
void write(int b)将参数b的低位字节写入到输出流
void write(byte b[])按顺序将数组b[]中的全部字节写入到输出流
void write(byte b[], int off, int len)按顺序将数组b[]中第off+1个元素开始的len个数据写入到输出流

字符输入流

字符输出流

  • 练习

自学缓冲流的相关内容然后编写程序,实现文件复制功能;
要求:

  1. 可以复制TXT文档、音乐、视频文件;
  2. 100M大小的文件复制的速度不得超过两秒;

三、集合

Java 集合可分为 Collection 和 Map 两种体系

  • Collection接口:
    1. Set:元素无序、不可重复的集合 —类似高中的“集合”
    2. List:元素有序,可重复的集合 —”动态”数组
  • Map接口:具有映射关系“key-value对”的集合 —类似于高中的“函数” y = f(x) (x1,y1) (x2,y2)

(一)collection

Collection 接口是 List和Set接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 集合。

方法描述
add(E e)确保collection包含指定元素
clear()移除collection中的所有元素
contain()如果collextion包含指定元素则返回true
equals()比较此collection与指定对象是否相等
hashCode()返回此collection的哈希值
isEmpty()如果此collection不包含元素,则返回true
remove()从此collection中一处指定元素的单个实例
size()返回此collection中的元素数
toArray()返回此collection中的所有元素

1、List接口

  • Java中数组用来存储数据的局限性(为什么?)
  • List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
  • List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
  • JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。
ArrayList实现类
  • ArrayList 是 List 接口的典型实现类
  • 本质上,ArrayList是对象引用的一个变长数组
  • ArrayList 是线程不安全的,而 Vector 是线程安全的,即使为保证 List 集合线程安全,也不推荐使用Vector
LinkedList实现类

对于频繁的插入或删除元素的操作,使用LinkedList效率较高

  • 新增方法:
    void addFirst(Object obj)
    void addLast(Object obj)
    Object getFirst()
    Object getLast()
    Object removeFirst()
    Object removeLast()

2、Set接口

  • Set接口是Collection的子接口,set接口没有提供额外的方法
  • Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败。
  • Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法
HashSet实现类
  • HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。
  • HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。

HashSet 具有以下特点:

  1. 不能保证元素的排列顺序
  2. HashSet 不是线程安全的
  3. 集合元素可以是 null
  • 当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值决定该对象在 HashSet 中的存储位置。
  • HashSet 集合判断两个元素相等的标准:两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。
LinkedHashSet实现类
  • LinkedHashSet 是 HashSet 的子类
  • LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
  • LinkedHashSet插入性能略低于 HashSet,但在迭代访问 Set 里的全部元素时有很好的性能。
  • LinkedHashSet 不允许集合元素重复。

(二)Map

  • Map接口的常用实现类:HashMap、TreeMap和Properties。
    HashMap是 Map 接口使用频率最高的实现类。

1、HashMap接口

  • 允许使用null键和null值,与HashSet一样,不保证映射的顺序。
  • HashMap 判断两个 key 相等的标准是:两个 key 通过 equals() 方法返回 true,hashCode 值也相等。
  • HashMap 判断两个 value相等的标准是:两个 value 通过 equals() 方法返回 true。
LinkedHashMap
  • LinkedHashMap 是 HashMap 的子类
  • 与LinkedHashSet类似,LinkedHashMap 可以维护 Map 的迭代顺序:迭代顺序与 Key-Value 对的插入顺序一致
  • 练习
  1. 自学TreeSet内容,并实现功能:从键盘随机输入10个整数保存到List中,并按倒序、从大到小的顺序显示出来
  2. 自学TreeMap内容,并实现功能:把学生名与考试分数录入到Map中,并按分数显示前三名成绩学员的名字。
  3. 打印E盘所有文件和文件夹。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值