前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java匹马行天下之JavaSE核心技术——工具类

Java匹马行天下之JavaSE核心技术——工具类

作者头像
泰斗贤若如
发布2019-06-18 18:38:58
5390
发布2019-06-18 18:38:58
举报
文章被收录于专栏:泰斗贤若如泰斗贤若如

Java常用工具类

一、Object类

java.lang.Object

Object类是所有类直接或间接的父类

常用的方法:

toString():以字符串形式返回对象的文本信息;

hashCode():返回该对象的哈希值;

getClass():返回对象的类类型;  

equals(Object obj):比较两个对象是否相等

代码语言:javascript
复制
package Practice_Anything;

public class String_demo {
    public static void main(String[] args) {
        String s = new String("你好");
        String s1 = new String("世界");

        Class<?> c = s.getClass();//返回对象的类类型
        System.out.println(c);


        boolean flag = s.equals(s1);//比较两个对象是否相等
        System.out.println(flag);

        int hash = s.hashCode();//返回该对象的哈希值
        int hash1 = s1.hashCode();
        System.out.println(hash+" "+hash1);

        String s2 = s.toString();//以字符串形式返回对象的文本信息
        String s3 = s1.toString();
        System.out.println(s2+s3);
        
    }
}
代码语言:javascript
复制
运行结果:

class java.lang.String
false
652829 649718
你好世界

二、包装类

装箱与拆箱

以Byte为例

java.lang.Byte

public final class Byte extend Number

Byte 类将基本类型 byte 的值包装在一个对象中。一个 Byte 类型的对象只包含一个类型为 byte 的字段。 

代码语言:javascript
复制
package Practice_Anything;

public class Box_Demo {
    public static void main(String[] args) {
        byte b =1;//基本数据类型
        System.out.println(b);

        Byte b1 = new Byte(b);//包装类的对象
        System.out.println(b1);

        Byte b2 = b;//自动装箱,把基本数据类型转为对象
        System.out.println(b2);

        byte b3 = new Byte(b);//自动拆箱,把对象转为基本数据类型
        System.out.println(b3);
        
    }
}
代码语言:javascript
复制
运行结果:

1
1
1
1

三、Number类

java.lang.Number

public abstract class Number extends Object implements Serializable

抽象类 NumberBigDecimalBigIntegerByteDoubleFloatIntegerLongShort 类的超类。

Number 的子类必须提供将表示的数值转换为 bytedoublefloatintlongshort 的方法。 

以Integer为例

java.lang.Integer

public final class Integer extends Number

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。

此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

常用的方法:

  • 构造方法;
  • compareTo():在数字上比较两个 Integer 对象。
  • valueOf():返回一个表示指定的 int 值的 Integer 实例。
  • toString():返回一个表示该 Integer 值的 String 对象。
代码语言:javascript
复制
package Practice_Anything;

public class Integer_Demo {
    public static void main(String[] args) {

        Integer i = new Integer(2);//构造一个新分配的 Integer 对象,它表示指定的 int 值。
        System.out.println(i);

        Integer i2 = new Integer("3");//构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
        System.out.println(i2);
//如果该 Integer 等于 Integer 参数,则返回 0 值;如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值;
//如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值(有符号的比较)。
        int i3 = i.compareTo(i2);
        System.out.println(i3);

        String s = "5";
        Integer i4 = Integer.decode(s);//将 String 解码为 Integer。
        System.out.println(i4);

        Integer i5 = Integer.valueOf(6);//返回一个表示指定的 int 值的 Integer 实例。
        System.out.println(i5);

        Integer i6 = Integer.valueOf(s);//返回保存指定的 String 的值的 Integer 对象。
        System.out.println(i6);

        String s1 = i.toString();//返回一个表示该 Integer 值的 String 对象。
        System.out.println(s1);

        String s2 =Integer.toString(i);//返回一个表示指定整数的 String 对象。
        System.out.println(s2);


    }
}
代码语言:javascript
复制
运行结果:

2
3
-1
5
6
5
2
2

四、Character类

java.lang.Character

public final class Character extends Object

Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。

此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。

常用的方法:

valueOf():返回一个表示指定 char 值的 Character 实例

toString():返回表示此 Character 值的 String 对象。

isDigit():判断是否为数字

isLetter():判断是否为字母

isUpperCase():判断是否为大写字母

isLowerCase():判断是否为小写字母

isWhitespace():判断是否为空格

toUpperCase():转为大写字母

toLowerCase():转为小写字母

代码语言:javascript
复制
package Practice_Anything;

public class Character_Demo {
    public static void main(String[] args) {
        Character c = new Character('d');//构造方法
        System.out.println(c);

        char c1 = c.charValue();//返回此 Character 对象的值。
        System.out.println(c);

        char c2 = Character.valueOf(c);//返回一个表示指定 char 值的 Character 实例
        System.out.println(c);

        String s = c.toString();//返回表示此 Character 值的 String 对象。
        System.out.println(s);

        boolean b = Character.isDigit(c);//判断指定字符是否为数字。
        System.out.println(b);

        boolean b1 = Character.isLetter(c);//判断指定字符是否为字母
        System.out.println(b1);

        boolean b2 = Character.isUpperCase(c);//判断是否为大写字母
        System.out.println(b2);

        boolean b3 = Character.isLowerCase(c);//判断是否为小写字母
        System.out.println(b3);

        boolean b4 = Character.isWhitespace(c);//判断是否为空格
        System.out.println(b4);

        char c3 = Character.toUpperCase(c);//转为大写字母
        System.out.println(c3);

        char c4 = Character.toLowerCase(c3);//转为小写字母
        System.out.println(c4);


    }
}
代码语言:javascript
复制
运行结果:

d
d
d
d
false
true
false
true
false
D
d

五、String类

java.lang.String

public final class String extends Object

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

String对象为什么不可变?

字符串常量池是java堆内存中一个特殊的存储区域,当创建一个String对象,假如此字符串值已经存在于常量池中,则不会创建一个新的对象,而是引用已经存在的对象。

代码如下:

  String s1 = "ABC";

  String s2 = "ABC";

在java中内存分为堆内存和栈内存,堆内存存放的是对象,栈内存存储对象的引用,字符串“ABC”存放在堆内存中,而s1,s2作为对象的引用则存放在栈内存中,原理如下:

      堆内存       栈内存

 String对象  "ABC"______ s1  String变量的引用

                     |______ s2

假设:字符串对象允许改变,那么将会导致各种逻辑错误。比如改变一个对象却影响到另外一个独立的对象。

常用方法

  • charAt(int  i):返回指定索引处的字符;
  • length():返回字符串的长度;
  • contains(CharSequence  c):判断字符串中是否包含指定的字符序列;CharSequence是一个接口,String是它的一个实现类
  • startsWith(String s):判断字符串是否以指定的前缀开始;
  • endsWith(String s):判断字符串是否以指定的后缀结束;
  • indexOf(char c):返回指定字符在字符串中第一次出现的索引;
  • lastIndexOf(char c):返回指定字符在字符串中最后一次出现的索引;
  • isEmpty():当且仅当字符串长度为0时,返回true;
  • replace(char old,char new):把字符串中的old字符替换为new字符,然后返回一个新字符串;
  • split(String s):根据指定的规则拆分字符串,返回字符串数组;
  • subString(int begin,int end):按照指定的索引截取字符串,从begin(包含)开始,到end(不包含)结束;
  • toLowerCase():把字符串的英文字母全部转为小写;
  • toUpperCase():把字符串的英文字母全部转为大写;
  • trim():清除字符串前后的空白字符;
  • valueOf():把指定类型的数据转为字符串类型;
  • toCharArray():把字符串转为字符数组;
代码语言:javascript
复制
package Practice_Anything;

public class String_Demod {
    public static void main(String[] args) {
        String s = new String("ZhangYuxian");

        int i = s.length();//返回字符串的长度;
        System.out.println("s的长度:"+i);

        char c = s.charAt(5);//返回指定索引处的字符;
        System.out.println("索引值为5的字母:"+c);

        boolean flag = s.contains("xian");//判断字符串中是否包含指定的字符序列
        System.out.println("字符串s中是否存在xian:"+flag);

        boolean flag1 = s.startsWith("Z");//判断字符串是否以指定的前缀开始
        System.out.println("s字符串是否以Z开始:"+flag1);

        boolean flag2 = s.endsWith("n");//判断字符串是否以指定的后缀结束
        System.out.println("s字符串是否以n结束:"+flag2);

        int i1 = s.indexOf('Y');//返回指定字符在字符串中第一次出现的索引
        System.out.println("字符Y在字符串s中第一次出现的索引:"+i1);

        int i2 = s.lastIndexOf('n');//返回指定字符在字符串中最后一次出现的索引
        System.out.println("字符n在字符串s中最后一次出现的索引:"+i2);

        boolean flag3 = s.isEmpty();// 当且仅当 length() 为 0 时返回 true。
        System.out.println("字符串s的长度是否为零:"+flag3);

        //把字符串中的old字符替换为new字符,然后返回一个新字符串;
        String s1 = s.replace('x','t');
        System.out.println("把s字符串中的x替换为t后的新字符串为:"+s1);

        String[] s2 = s.split("n");//根据指定的规则拆分字符串,返回字符串数组;

        System.out.print("用指定的n拆分字符串s,得到字符串数组:");
        for(String s3:s2){
            System.out.print(s3+" ");
        }
        System.out.println();

        String s3 = s.substring(5);//按照指定的索引截取字符串
        System.out.println("从字符串s中索引为5的字符截取生成新的字符串:"+s3);

        String s4 = s.substring(0,5);//按照指定的索引截取字符串,从begin(包含)开始,到end(不包含)结束;
        System.out.println("从字符串s中截取索引值[0,5)的字符组成新的字符串"+s4);

        String s5 = s.toLowerCase();//把字符串的英文字母全部转为小写;
        System.out.println("把字符串s中的英文字母全部转为小写:"+s5);

        String s6 = s.toUpperCase();//把字符串的英文字母全部转为大写;
        System.out.println("把字符串s中的英文字母全部转为大写:"+s6);

        String s7 ="               Z h a ng    ";
        System.out.println("原始状态:"+s7);

        String s8 = s7.trim();//清除字符串前后的空白字符;
        System.out.println("清除字符串前后空格后的状态:"+s8);

        char[] chars = {'Z','y','x'};
        String s9 = String.valueOf(chars);//把指定类型的数据转为字符串类型;
        System.out.println("把char类型的数组转化为字符串类型:"+s9);

        String s10 = s.toString();// 返回此对象本身(它已经是一个字符串!)。
        System.out.println(s10);

        char[] s11 = s.toCharArray();//把字符串转为字符数组;
        System.out.print("遍历字符数组:");
        for(char c1:s11){
            System.out.print(c1+" ");
        }

    }
}
代码语言:javascript
复制
s的长度:11
索引值为5的字母:Y
字符串s中是否存在xian:true
s字符串是否以Z开始:true
s字符串是否以n结束:true
字符Y在字符串s中第一次出现的索引:5
字符n在字符串s中最后一次出现的索引:10
字符串s的长度是否为零:false
把s字符串中的x替换为t后的新字符串为:ZhangYutian
用指定的n拆分字符串s,得到字符串数组:Zha gYuxia 
从字符串s中索引为5的字符截取生成新的字符串:Yuxian
从字符串s中截取索引值[0,5)的字符组成新的字符串Zhang
把字符串s中的英文字母全部转为小写:zhangyuxian
把字符串s中的英文字母全部转为大写:ZHANGYUXIAN
原始状态:               Z h a ng    
清除字符串前后空格后的状态:Z h a ng
把char类型的数组转化为字符串类型:Zyx
ZhangYuxian
遍历字符数组:Z h a n g Y u x i a n 

 六、日期类

 Date类

java.util.Date

public class Date extends Object

Date 表示特定的瞬间,精确到毫秒。 

Calendar类

java.util.Calendar

public abstract class Calendar extends Object

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected

与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。CalendargetInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:

Calendar rightNow = Calendar.getInstance();

Calendar 对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值,例如,日语-格里高里历,日语-传统日历。Calendar 定义了某些日历字段返回值的范围,以及这些值的含义。例如,对于所有日历,日历系统第一个月的值是 MONTH == JANUARY。其他值是由具体子类(例如 ERA)定义的。有关此内容的细节,请参阅每个字段的文档和子类文档。 

Format类 

java.text.Format

public abstract class Format extends Object

Format 是一个用于格式化语言环境敏感的信息(如日期、消息和数字)的抽象基类。

Format 定义了编程接口,用于将语言环境敏感的对象格式化为 String(使用 format 方法)和将 String 重新解析为对象(使用 parseObject 方法)。

通常,一个 format 的 parseObject 方法必须能解析任何由其 format 方法格式化的字符串。不过,也可能存在不能解析的异常情况。例如,format 方法可能创建中间无分隔符的两个相邻整数,在这种情况下,parseObject 无法判断哪个数字属于哪个数。 

DateFormat类

java.text.DateFormat

public abstract class DateFormat 

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java常用工具类
  • 一、Object类
  • 二、包装类
    • 装箱与拆箱
    • 三、Number类
    • 四、Character类
    • 五、String类
    •  六、日期类
    •  Date类
    • Calendar类
    • Format类 
    • DateFormat类
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档