第五章(1)、java常用类-Object、String和正则表达式

一、Object

        前面讲述面向对象接口的时候说过,Object是所有类的超类(父类或基类),所有的类都直接或间接的继承了这个类。

Object类中的成员方法(可在网上搜索java api文档进行查看)。

1)public int hashCode():返回对象的哈希码值,是根据哈希算法计算出来的值。

2)public final Class getClass():返回对象的运行时类。

结果:

 

3)public String toString():返回对象的字符串示例。

结果:

4)public boolean equals(Object o):比较对象之间是否相等。

        在前面有 == 这个比较符,在基本数据类型中,比较的是数值的大小,在引用数据类型中,比较的是地址值是否相同。 使用equals()方法,默认比较的是地址值,这个比较意义不大,所以要重写这个方法,重写这个方法也是使用开发工具自动生成,快捷键(alt+Insert)。一般重写equals()方法时,都是和hashCode()方法一起重写。

结果:

5)protected void finalize():由对象的垃圾回收期调用,用于回收垃圾对象,具体回收时机由系统决定。

6)protected Object clone():某个类实现了Cloneable接口,该方法就能“复制(克隆)”一个对象,然后重新给这个对象重新分配内存空间。

        克隆分为浅克隆和深克隆,浅克隆:基本数据类型属性完全重新创建,引用类型属性依然和原来的对象共用,称为浅克隆;深克隆:所有数据类型的属性都完全被创建,称为深克隆。

浅克隆代码:

结果:

 

深克隆代码:

结果:

二、String

        String称作字符串,它是由多个字符(char)组成的数据,可以看做是字符数组。

1)String的构造方法:

        public String():无参构造方法

        public String(byte[] bytes):把字节(byte)数组转成字符串

        public String(byte[] bytes,int index,int length):把字节(byte)数组的一部分(从索引index处到指定长度)转成字符串

        public String(char[] value):把字符(char)数组转成字符串

        public String(char[] value,int index,int count):把字符(char)数组的一部分(从索引index处到指定长度)转成字符串

        public String(String original):把字符串常量值(例如:"hello world")转成字符串

结果:

2)String的判断方法:

        boolean equals(Object obj):判断两个字符串的内容是否相同,区分大小写。例如:"hello"和"HELlo"是不一样的

        boolean equalsIgnoreCase(String str):判断字符串的内容是否相同,忽略大小写。例如:"hello"和"HELlo"是一样的

        boolean contains(String str):判断长的字符串中是否包含短的字符串。例如"helloworld"包含了"hello"

        boolean startsWith(String str):判断字符串是否以某个指定的字符串开头。例如"helloworld"是以"h"开头 或 "helloworld"是以"he"开头 或 "helloworld"是以"hel,,,"开头

        boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾。例如"helloworld"是以"d"结尾或 "helloworld"是以"ld"结尾 或 "helloworld"是以"...ld"结尾

        boolean isEmpty():判断字符串内容是否为空。

结果:

 

3 )String的转换方法:

        byte[] getBytes():把字符串转换为字节(byte)数组。

        char[] toCharArray():把字符串转换为字符(char)数组。

        static String valueOf(char[] chs):把字符(char)数组转成字符串。

        static String valueOf(int i):把int类型的数据转成字符串。

                   提示:String类的valueOf方法可以把任何类型的数据转成字符串。

结果:

 

        String toLowerCase():把字符串内容全部转成小写。

        String toUpperCase():把字符串内容全部转成大写。

        String concat(String str):把字符串拼接起来和“+”功能一样,但是它们之间是有区别的。

 

结果:

4) 替换功能:

        String replace(char old,char new):使用新的字符(char)替换旧的字符

        String replace(String old,String new)使用新的字符串(String)替换旧的字符串

        String trim(): 去除字符串两端空格    

结果:

 

5)按字典顺序比较两个字符串  

         int compareTo(String str):区别大小写

         int compareToIgnoreCase(String str):不区分大小写

 

结果:

 

6)String的截取方法:

        String substring(int beginIndex):从一个索引位置开始,截取剩下的所有字符;

        String substring(int beginIndex, int endIndex):返回两个索引位置之间(不包括第endIndex个字符)的所有字符;

7)String的分割方法:

        public String[] split(String regex):根据某种规则去分割字符串,得到的是一个String数组

结果:

注意:字符串一旦被赋值,就不能改变。字符串还有很多方法,可以上网搜索“java api”去查看这些方法的使用。

三、正则表达式

        正则表达式其实就是一种规则,它是由一些有特殊意义的字符(也称作元字符)组成,,例如:\d表示的是数字。在使用手机号码注册账号的时候,如果手机号码输入不正确,就会给出提示,这些一般都是用正则表达式去检查输入的手机号是否正确。

正则表达式规则:

1)字符

        x 字符 x。例如:'a'表示字符a

        \\ 反斜线字符。

        \n 新行(换行)符 ('\u000A')

        \r 回车符 ('\u000D')

    

2)边界匹配器

        ^ 行的开头

        $ 行的结尾

        \b 单词边界: 不是单词字符的地方。

 

3)字符类

        [abc] a、b 或 c

        [^abc] 任何字符,除了 a、b 或 c

        [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内

        [0-9] 0到9的字符都包括

    

4)预定义字符类

        . 任何字符。. 本来就是字符,如果想单独表示 . 就要使用\.进行转义

        \d 数字:[0-9]

        \w 单词字符:[a-zA-Z_0-9]

    

5)Greedy 数量词

        X? X,一次或一次也没有

        X* X,零次或多次

        X+ X,一次或多次

        X{n} X,恰好 n 次

        X{n,} X,至少 n 次

        X{n,m} X,至少 n 次,但是不超过 m 次

 

正则表达式提供了两个类: Pattern(正则表达式编译后的表现形式)和Matcher(通过字符串调用判断方法(boolean matches(String regex))返回值获得)

 

结果:

 

公众号二维码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第二次作业: 1. 编写点(Point),属性成员有x,y,都是double数据型。需要为Point编写构造函数。 编写直线(Line),需要提供两点确定一条直线的函数功能。 如果两点重合,可以返回异常或者返回null引用来解决这个问题。 直线的数据成员和函数成员请自行设计。 2. 给定文本文件,文件名称为a.txt,文件内容为一个8行8列的字符矩阵,内容为1和0字符, 请编程计算出该矩阵中水平方向或者垂直方向或者斜线方 向连续1最多的个数。 例如: 11001101 10110101 01010101 11001000 01010101 11001101 00011000 11110000 3. 编写程序求出1万以内的所有素数,并将这些素数输出到一个文本文件中,每行文本只包含一个素数数据。 该文本文件内容要求可以用记事本程序来查看。 4. 编写程序求出1万以内的所有素数,然后再判断这些素数中哪些是由素数拼接而成的。 例如素数23就符合条件,23本身是素数,其由素数2,和素数3拼接(连接)组成。 素数29就不满足条件,2是素数,而9不是素数。素数307不满足条件,不能忽略0. 7907这个素数符合条件,7是素数,907是素数。 需要把符合条件的拼接素数全部输出,并统计个数。 5. 要求从控制台输入英语单词及单词解释两项数据, 把录入的数据追加到文件中。要求提供单词查询功能。 用户输入单词后,从单词库文件中查找,如果存在则输出 该单词的解释。注意,单词不能有重复,如果重复则覆盖替换 以前的解释数据。 6. 通过命令行参数输入一个文件夹的路径名称,然后编写程序找出该文件夹下文件名称重复并且文件大小也一样的文件, 如果没有“重复文件”,则输出“没有重复文件”的提示,如果有,需要输出文件名称,和文件所在的文件夹路径(绝对路径)。 提示,需要遍历该文件夹下所有子文件夹,设计一个文件,属性包括文件名称,文件路径,文件大小,然后进行“重复” 判断,如果文件重复,则需要记录并输出,有可能有文件名重复,但是文件大小不一样,重复的文件可能不止2个,可能 在不同的子文件夹下有多个文件重复。 7. 霍夫曼编码实现压缩文本文件,见文件huffman.rar. 对文件数据读写等功能已经实现,程序在Q2Resources.zip中。 Q2Resources.zip中的文件禁止修改。请将TextZip.java文件所有未实现的函数按照要求给以实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值