javaSE内容总结

文档注释:-- 功能性注释
格式: /** … */
作用的位置:
1. 类的上方
2. 方法的上方
3. 常量的上方
String类 – 字符串
String对象是不可变的,本质是字符数组 char[]
String对象的创建 – 所有的对象都保存在堆中

方式一: new String(“a”)
– 保存在堆中
方式二: String str = “a”; //字符串字面量
- 常量池:
- 字符串字面量是保存于常量池中的
- 常量池中保存的其实是对象的引用

面试题:
String str = new String(“hello”); //创建了2个字符串对象
第一个对象:“hello”
第二个对象: new String("")

String str = new String("a"+"b"); //创建了2个字符串对象
    --考察点:字符串字面量之间的拼接会在编译期完成,保存到.class文件中的代码是: String str = new String("ab");

常用方法:

length():获取字符串的长度
indexof(String):int 获取指定字符串在目标字符串中第一次出现的位置
indexof(String,int start):int 获取指定字符串在目标字符串中从start位置开始第一次出现的下标
lastIndexof(String):int 获取指定字符串在目标字符串中最后一次出现的位置
substring(int start):String 从目标字符串中指定位置开始截取到结尾
substring(int start,int end):String 从目标字符串中start开始,截取到end结束
注意:包头不包尾
trim(): 去除字符串开头和结尾的空白字符
charAt(int):char 获取指定位置的字符
startsWith(String):boolean 判断字符串是否以指定内容开头
endsWith(String):boolean 判断字符串是否以指定内容结束
toUpperCase():转换为大写
toLowerCase():转换为小写
valueOf(int/double):将其他类型的数据转换为字符串类型
StringBuilder – 用于操作字符串的
经常被用于修改字符串
构造方法:

new StringBuilder():内容为空
new StringBuilder(String):builder对象的内容为指定的字符串
方法:

append(String):拼接指定的字符串 – 返回值是StringBuilder类型
delete(int start,int end):删除从start开始,到end结束的字符串(包头不包尾)
返回值类型:StringBuilder
insert(int offset,String str):在指定位置插入指定的字符串 – 返回值依然是StringBuilder
replace(int start,int end ,String str):用给定的字符串str替换掉从start开始,到end结束的内容 – 返回值类型 - StringBuilder
toString() - String

问题:String和StringBuilder有什么区别?
String–字符串对象 – 是不可变的
StringBuilder – 用于操作字符串的类 – 经常用于拼接大量字符串

StringBuilder和StringBuffer的区别:
二者功能一样,方法api几乎都一样,区别:StringBuider是非线程安全的,StringBuffer是线程安全的。
正则表达式–regex
作用:用于校验用户输入的字符串内容格式是否正确的
正则表达式:本质就是一个字符串
如何写:

如何表示一位字符[]

[abc]
[a-z]
[^abc]
[0-9]
[a-zA-Z0-9_]
预定义字符

. 任意字符
\d 任意数字
\D 非任意数字
\s 空白字符
\S 非空白字符
\w 单词字符 [a-zA-Z0-9_]
\W 非单词字符串

若想使用正则中具有特殊意义的字符的本意,需要进行转义
java中 \具有特殊意义,所以若想使用\的本意,还需转义 \
数量词:

x? 0或1次
x+ 1次以上
x* 任意次
x{n} 正好出现n次
x{m,} 至少出现m次
x{m,n} 至少出现m次,最多出现n次
强调:若想使用正则中具有特殊意义的字符,需要转义,常见的这些字符有: . ? + * [] 注意: ; , 不是特殊字符

分组() :经常和|一起配合使用

场景:若想将多个部分看成一个整体,这些部分他们之间是多选一的关系,此时就是可以使用分组,多选一的关系用|拼接

(\+86|0086)
边界匹配符 : ^ $

由于Java中的matches(regex),自带边界匹配符,所以Java中我们写正则表达式可以省略边界匹配符。
String类对正则的支持:

matches(regex)
split(regex)
replaceAll(String regex,String replacement)
Object:
是所有类的父类,超类
方法:

toString():String
- Object类中:返回值一个字符串 格式:xxxx@xxx
- 通常都会在子类中重写该方法 – Java建议的
- 重写后的效果: 返回值: 对象中各个属性值的拼接

equals(obj):boolean
- Object类中,作用是用于判断2个对象之间是否相等
- Java中强烈建议重写,使其具有实际意义
- eg: Person(id)
- 2个Person对象的比较实际上要根据id字段值比较,所以此时需要重写equals方法,重写时用eclipse提供的生成器生成,选择根据id判断

-- 关于这2个方法的重写:
    --自定义的类,自己重写
    -- Java已经定义好的类,已经重写好了

包装类:
Java中有8种基本数据类型,但是Java是面向对象的开发语言,基本数据类型不是对象,所以无法参与面向对象开发,Java为了让基本数据类型参与面向对象开发,提供了包装类
包装类:

byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
数字类型的包装类 – Integer

数字类的包装类都有一个公共的父类 - Number
方法:

parseInt(String):int 将字符串表示的数字转换为int
intValue():int 通过Integer对象调用 Integer -->int
valueOf(int):Integer int -->Integer
各个包装类中的api方法基本都相似

自动拆装箱操作:

从JDK1.5开始提供的,是编译器认可并完成的

Integer i = 5; 自动装箱 编译器调用方法完成 valueOf(int):Integer
int a = i; 自动拆箱 编译器调用方法完成 intValue():int
File – 文件操作类,可以完成对文件的操作,不可以访问文件的数据
构造方法:

new File(String path)
方法:

createNewFile():boolean 创建文件
mkdir():boolean 创建目录
mkdirs():boolean 创建多级目录
delete():boolean 删除文件/目录
getName():String 获取文件/目录的名称
length(): 获取文件中内容的长度
listFiles() :File[] 获取某目录下的所有子文件/子目录
listFiles(FileFilter) :File[] – 经常使用匿名内部类的方式
FileFilter:接口–文件过滤器

File[] files = listFiles(new FileFilter(){
    public boolean accept(File f){
        return f.isFile();
    }
})

判断方法:
isFile()
isDirectory()
RandomAccessFile – 基于指针的文件操作类,可以对文件内容数据进行访问(读写)
构造方法:

new RandomAccessFile(File/String dest,String mode):
mode: r rw
方法:

  1. 读写单位是字节
    1. write(int)
    2. read():int
    3. write(byte[])
    4. read(byte[])
  2. 读写的是字符串
    1. write(“hello”.getBytes(“utf-8”))

    2. read(byte[])

      1. 还原成字符串: new String(byte[],“utf-8”)

      案例:复制文件

  3. 基于指针的方法
    1. getFilePointer():long 获取文件中指针的位置
    2. seek(long pos):移动当前指针到指定位置
  4. 可以读写基本类型数据
    1. writeInt(int)
    2. readInt():int
      IO流
      分类:

按照流向分:
输入流:读取数据
输出流:写数据
低级,高级:
低级流:节点流(直接连接数据源)
高级流
流:

  • 字节流

    • 抽象基类:

      • InputStream
      • OutputStream
    • 文件流:

      • FileOutputStream

        • 构造方法:
          • FileOutputStream(File/String dest)
          • FileOutputStream(File/String dest,boolean append)
            - 是否追加写入数据
        • 方法:写
          • write(int b)
          • write(byte[])
      • FileInputStream

        • 构造方法
          • FileInputStream(File/String dest)
        • 方法
          • read():int
          • read(byte[]):int

        案例:复制文件(任意类型文件)按照单个字节复制/字节数组(块)复制

    • 字节缓冲流:Buffered

      • BufferedOutputStream
        • 构造方法:
          • BufferedOutputStream(OutputStream)
            • new BufferedOutputStream(new FileOutputStream(dest))
        • 方法:
          • write(int)
          • write(byte[])
          • flush():刷出缓存
      • BufferedInputStream
        • 构造方法
          • BufferedInputStream(InputStream)
            • new BufferedInputStream(new FileInputStream(dest))
        • 方法:
          • read()
          • read(byte[])
  • 字符流 – 只能操作文件类型文件;可以直接读写字符数据

    • 抽象基类:
      • Writer
      • Reader
    • 转换流
      • OutputStreamWriter

        • 构造方法
          • OutputStreamWriter(OutputStream)
            • new OutputStreamWriter((new FileOutputStream(dest)))
          • OutputStreamWriter(OutputStream,“utf-8”)
        • 方法:
          • write(String)
      • InputStreamReader

        • 构造方法
          • InputStreamReader(InputStream)
          • InputStreamReader(InputStream,charset)
        • 方法
          • read():int (char)
          • read(char[])

        案例:复制文本文件

    • 字符缓冲流:Buffered —新特点: 按行读写数据
      • PrintWriter - 特点:自动行刷新功能,需要通过构造方法开启
        • PrintWriter(Writer,Boolean autoflush)
        • 方法:
          • println(String):
            • 行自动刷新功能只有调用该方法有效
          • print(String)
      • BufferedReader:
        • 构造方法
          • BufferedReader(Reader)
        • 方法:
          • readLine()
  • 对象流: 可以读写对象数据

    • 注意:若某对象向用于持久化到磁盘,或用于网络传输,所属的类一定是可序列化的
    • 序列化:
      • 实现:类 implements Serializable
        • 生产序列版本号 – 避免后期的反序列化失败
      • transient关键字:
        • 若某对象中的某个属性的值不想用被序列化,此时可以在属性前加transient
    • ObjectOutputStream
      • 构造方法
        • ObjectOutputStream(OutputStream)
      • 方法:
        • writeObject(obj)
    • ObjectInputStream
      • 构造方法:
        • ObjectInputStream(InputStream)
      • 方法:
        • readObject():Object
          • 注意返回类型是Object类,所以若要得到指定的对象,需要强转
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值