黑马程序员---Java API

本文详细介绍了Java中String类和StringBuffer类的基本操作,包括字符串的初始化、转换、替换、去除空格、截取、分割、判断、截取和分割等常用方法。此外,还讲解了日期时间类Date、Calendar、DateFormat的使用,以及如何格式化日期时间,解析日期时间字符串。通过示例代码展示了每个功能的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

----------------------ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


1.String类和StringBuffer类
    a.String类
        java中可以通过以下两种方法对String类进行初始化:
            1)使用字符串常量直接初始化一个String对象
                String str = "abc";
            2)使用String的构造方法初始化字符串对象
                构造方法                                     功能描述
                String()                            创建一个内容为空的字符串
                String(char[] value)        根据指定的字符数组创建对象
                String(String str)            根据指定的字符串内容创建对象
                Demo:

public class Demo {
    public static void main(String[] args) {
        String str1 = new String();
        String str2 = new String("abcd");
        char[] charArray = new char[]{'D','E','F'};
        String str3 = new String(charArray);
        System.out.println("a"+str1+"b");
        System.out.println(str2);
        System.out.println(str3);
    }
}
         String类的常见操作
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
                    方法声明                                                                                               功能描述
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            int indexOf(int ch)                                                   返回指定字符在此字符串中第一次出现处的索引
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            int lastIndex(int ch)                                                 返回指定字符在此字符串中最后一次出现的索引
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            char charAt(int index)                                            返回字符串中index位置上的字符,index取值为0-(字符串长度-1)
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            boolean endsWith(String suffix)                          判断此字符串是否以指定的字符串结尾
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            int length()                                                              返回此字符串的长度
       ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            boolean equals(Object anOject)                         将此字符串与指定的字符串比较
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            boolean isEmpty()                                                当且仅当字符串长度为0时返回true
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            boolean startsWith(String prefix)                        判断此字符串是否以指定的字符串开始
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            boolean contains(CharSequence cs)                判断此字符串是否包含指定的字符序列
       ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String toLowerCase()                                         将String中的所有字符转换为小写
       ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String toUpperCase()                                         将String中的所有字符转换为大写
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String valueOf(int i)                                             返回int参数的字符串表示形式
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            char[] toCharArray()                                           将此字符串转换为一个字符数组
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String repleace(CharSequence oldstr, CharSequence newstr)    用newstr替换此字符串中的所有oldstr,并返回新的
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String[] split(String regex)                                             根据regex将原来字符分割为若干个子字符串
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String substring(int beginIndex)                                    截取索引beginIndex后的字符串,并返回
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String substring(int beginIndex,int endIndex)           截取索引在beginIndex和endIndex之间的字符串,并返回
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
            String trim()                                                                    取出反字符串首尾的空格,并返回
        ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
        
        Demo:
            1)字符串的基本操作

public class StringDemo {
    public static void main(String[] args) {
        String s = "abcdedcba";
        System.out.println(s.length());
        System.out.println(s.charAt(0));
        System.out.println(s.indexOf('c'));
        System.out.println(s.lastIndexOf('c'));
    }
}
             2)字符串的转换操作
public class StringDemo {
    public static void main(String[] args) {
        String s = "abcd";
        char[] charArray = s.toCharArray();
        for(int i=0; i<charArray.length; i++){
            if(i != charArray.length - 1){
                System.out.print(charArray[i] + ",");
            }else{
                System.out.println(charArray[i]);
            }
        }
        System.out.println("将int值转化为String类型之后的结果为:" + String.valueOf(12));
        System.out.println("将字符串转化为大写之后结果为:" + s.toUpperCase());
    }
}
             3)字符串的替换和去除空格操作
public class StringDemo {
    public static void main(String[] args) {
        String s = "itcast";
        System.out.println("将it替换成cn.it的结果为:" + s.replace("it", "cn.it"));
        String s1 = " i t c a s t ";
        System.out.println("取出字符串中所有空格后的结果为:" + s1.replace(" ", ""));
    }
}
             4)字符串的判断操作
public class Demo {
    public static void main(String[] args) {
        String str = "abccdefcdh";
        String[] strs = str.split("c");
        for(String s : strs){
            System.out.println(s.toString());
        }    
        System.out.println(str.indexOf('v'));
        String str1 = "java";
        String str2 = "java";
        System.out.println(str1 == str2);
        String str3 = new String("han");
        String str4 = new String("han");
        String str5 = "han";
        StringBuffer str6 = new StringBuffer("han");
        System.out.println(str3 == str4);
        System.out.println(str3.equals(str4));
        System.out.println(str3.equals(str5));
        System.out.println(str3.equals(str6));
        System.out.println(str3.equals(str6.toString()));
        System.out.println(str6);
        
        String s1 = "String";
        String s2 = "Str";
        System.out.println("判断是否以字符串Str开头:" + s1.startsWith("Str"));
        System.out.println("判断是否以字符串ng开头:" + s1.endsWith("ng"));
        System.out.println("判断是否包含字符串tri:" + s1.contains("tri"));
        System.out.println("判断字符串是否为空:" + s1.isEmpty());
        System.out.println("判断两个字符串是否相等:" + s1.equals(s2));
    }
}
            5)字符串的截取和分割
public class Demo {
    public static void main(String[] args) {
        String str = "羽毛球-篮球-乒乓球";
        System.out.println("从第5个字符截取到末尾的结果:"+str.substring(4));
        System.out.println("从第5个字符截取到第6个字符的结果:"+str.substring(4, 6));
        System.out.print("分割后的字符串数组的元素依次为:");
        String[] strArray = str.split("-");
        for(int i=0; i<strArray.length; i++){
            if(i != strArray.length){
                System.out.print(strArray[i]+",");
            }else{
                System.out.println(strArray[i]);
            }
        }
    }
}
    b.StringBuffer类
        StringBuffer类和String类最大的区别在于他的内容和长度都是可以改变的。StringBuffer类似一个字符容器,挡在其中添加或删除字符时,并不会
        产生新的StringBuffer对象
        ---------------------------------------------------------------------------------------------------------------------------------------------------
                方法声明                                                                                      功能描述
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            StringBuffer append(char c)                                           添加参数到StringBuffer对象中
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            StringBuffer insert(int offset,String str)                          将字符串中的offset位置插入字符串str
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            StringBuffer deleteCharAt(int index)                             移除此序列指定位置的字符
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            StringBuffer delete(int start,int end)                          删除StringBuffer对象中指定范围的字符或字符串序列
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            StringBuffer replace(int start,int end,String s)         在StringBuffer对象中替换指定的字符或字符串序列
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            void setCharAt(int index,char ch)                             修改指定位置index处的字符序列
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            String toString()                                                         返回StringBuffer缓冲区中的字符串
        ---------------------------------------------------------------------------------------------------------------------------------------------------
            StringBuffer reverse()                                               将此字符串用其反转形式取代
        ---------------------------------------------------------------------------------------------------------------------------------------------------
        
        Demo:

public class StringBufferDemo {    
    public static void main(String[] args) {
        System.out.println("1、添加----------------------------------");
        add();
        System.out.println("2、删除----------------------------------");
        remove();
        System.out.println("3、修改----------------------------------");
        alter();
    }
    private static void add() {
        StringBuffer sb = new StringBuffer();
        sb.append("abcdefg");
        System.out.println(sb);
        sb.insert(2, "123");
        System.out.println(sb);
    }
    private static void remove() {
        StringBuffer sb = new StringBuffer("abcdefg");
        sb.delete(1,5);
        System.out.println(sb);
        sb.deleteCharAt(2);
        System.out.println(sb);
        sb.delete(0, sb.length());
        System.out.println(sb);
    }
    private static void alter() {
        StringBuffer sb = new StringBuffer("abcdef");
        sb.setCharAt(1, 'p');
        System.out.println(sb);
        sb.replace(1, 3, "qq");
        System.out.println(sb);
        System.out.println(sb.reverse());
    }
}
        注:String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。
            String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals方法。即如果对StringBuffer对象进行equals操作,使用的是Object类的equals方法,而Object中的equasl方法执行的==判断。
                    public boolean equals(Object obj) {
                        return (this == obj);
                    }        
            String类对象可以用操作符+进行连接,而StringBuffer类对象之间不能。
2.System类和Runtime类
    a.System类
        System类定义了一些与系统相关的属性和方法,他所提供的属性和方法都是静态的。
        1)getProperties()方法
            该方法用于获取当前系统的全部属性。
            Demo:

public class Demo {
    public static void main(String[] args) {
        Properties p = System.getProperties();
        Enumeration pNames = p.propertyNames();
        while(pNames.hasMoreElements()){
            String key = (String)pNames.nextElement();
            String value = System.getProperty(key);
            System.out.println(key+"---"+value);
        }
    }
}
         2)currentTimeMills()方法
            该方法返回一个long类型的值,该值表示当前时间与1970年1月1日0点0分0秒之间的时间差,单位时毫秒,习惯性的被称为时间戳。
        3)arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
            src                   表示源数组
            dest                 表示目标数组
            srcPos            表示源数组中拷贝元素的起始位置
            destPos         表示拷贝到目标数组的起始位置
            length             表示拷贝元素的个数
            Demo:

public class Demo {
    public static void main(String[] args) {
        int[] srcArray = {101,102,103,104,105,106};
        int[] destArray = {201,202,203,204,205,206,207};
        System.arraycopy(srcArray, 2, destArray, 3, 4);
        for(int i=0; i<destArray.length; i++){
            System.out.println(i+":"+destArray[i]);
        }
    }
}
    b.Runtime类
        Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。
            Runtime.getRuntime().availableProcessors();//得到处理器个数
            Runtime.getRuntime().freeMemory()/1024/1024;//空闲内存数量(M)
            Runtime.getRuntime().mexMemory()/1024/1024;//最大可用内存数量(M)
        Runtime类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令窗口中输入dos命令同样的效果。
            如Runtime.getRuntime().exec("notepad.exe");
3.Math类和Random类
    a.Math类
        Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括两个静态常量PI和E。
            abs           求绝对值
            ceil            求大于参数的最小整数,返回值为double类型
            floor          求小于参数的最大整数,返回值为double类型
            round        对小数四舍五入
            max          求两个数中最大值
            min           求两个数中最小值
            random    生成一个大于等于0.0小于1.0的随机数
    b.Random类
        该类可以在指定的取值范围内随机产生数字。构造方法如下:
            Random()                         用于生成一个伪随机生成器
            Random(long seed)        使用一个long类型的seed种子创建伪随机数生成器
            注:如果希望创建的多个Random实例对象产生相同序列的随机数,则可以在创建对象时调用第二个构造方法        
4.包装类
    java中提供了一系列的包装类,通过这些包装类可以将基本数据类型的值包装为引用数据类型的对象
    a.装箱

public class PackageDemo {
    public static void main(String[] args) {
        int a = 20;
        Integer in = new Integer(a);    //装箱操作
        System.out.println(in.toString());
    }
}
    b.拆箱
public class PackageDemo {
    public static void main(String[] args) {
        Integer num = new Integer(20);
        int x = num.intValue();        //拆箱操作
        System.out.println(x);
    }
}
    c.Integer类的基本用法
        1)包装类都重写了Object类中的toString()方法,以字符串的形式返回被包装的基本数据类型
        2)除了Character外,包装类都有valueOf(String str)方法,可以根据String类型的参数创建包装类对象,但参数字符串str不能为null,而且字符串必须是可以解析为相应的基本类型的数据。
        3)除了Character外,包装类都有parseXXX(String str)的静态方法,将字符串装换为对应的基本类型的数据。参数str不能为null,同时必须是可以解析为相应基本类型的数据。如:int i = Integer.parseInt("123");
5.Date类、Calendar类、DateFormat类
    a.Date类
        Date类位于java.util包中,用于表示日期和时间。但Date类中的大部分构造方法都已过时,只有两个构造方法建议使用。
            Date()                        用于创建当前日期时间的Date对象
            Date(long num)        其中num参数表示自1970年1月1日00:00:00以来的毫秒数。
        Demo:

public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date();    //创建表示当前时间的Date对象
        Date date2 = new Date(966666666666L);    //创建表示时间戳的Date对象
        System.out.println(date);
        System.out.println(date2);
    }
}
    b.Calendar类
        由于Date类在设计之初,没有考虑国际化的问题,因此从JDK1.1开始,Calendar类取代了Date类大部分功能。Calendar类用于完成日期和时间字段的操作。
        Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个calendar对象。
            Calendar c = Calendar.getInstance();
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            void get(int field)                                                     返回指定日历字段的值
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            void add(int field,int amount)                                 为指定的日历字段添加或减去指定的时间量
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            void set(int field,int value)                                      为指定日历字段设置指定值
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            void set(int year,int month,int date)                       设置Calendar对象的年、月、日三个字段的值
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            void set(int year,int month,int date,                       设置Calendar对象的年、月、日、时、分、秒六个字段的值
                           int hourOfDay,int minute, int second)
         -----------------------------------------------------------------------------------------------------------------------------------------------------
        
        Demo:

public class CalendarDemo {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println(c.get(Calendar.YEAR));
        System.out.println(c.get(Calendar.MONTH)+1);
        System.out.println(c.get(Calendar.DATE));
        System.out.println(c.get(Calendar.HOUR));
        System.out.println(c.get(Calendar.MINUTE));
        System.out.println(c.get(Calendar.SECOND));
    }
}
         注:获取Calendar.Month字段值需要加1才表示当前时间的月份。
        
        Demo:

public class CalendarDemo {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        c.set(2010, 9, 12);
        c.add(Calendar.YEAR, 4);
        c.add(Calendar.MONTH, -2);
        c.add(Calendar.DATE, -5);
        System.out.println(c.get(Calendar.YEAR));
        System.out.println(c.get(Calendar.MONTH));
        System.out.println(c.get(Calendar.DATE));
    }
}
        注:Calendar.Date表示的是天数。当天数类驾到当月最大值时,如果再继续累加一次,就会从1开始计数,同时月份值加1.
    c.DateFormat类
        DateFormat类专门用于将日期格式化为字符串或者用特定格式显示的日期字符串转换成一个Date对象。DateFormat是抽象类,不能被直接实例化,但它提供了静态方法,通过这些方法可以获取DateFormat类的实例对象。
        -----------------------------------------------------------------------------------------------------------------------------------------------------
            static DateFormat getDateInstance                           创建默认语言环境和格式化风格的日期格式器
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            static DateFormat getDateInstance(int style)            创建默认语言环境和指定格式化风格的日期格式器
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            static DateFormat getDateTimeInstance()                创建默认语言环境和格式化风格的日期/时间格式器
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            static DateFormat getDateInstance(int dateStyle,int timeStyle)    创建默认语言环境和指定格式化
                                                                                                                          风格的日期/时间格式器
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            String format(Date date)                                               将一个Date格式化为日期/时间字符串
         -----------------------------------------------------------------------------------------------------------------------------------------------------
            Date parse(String source)                                            将给定的字符串解析成一个日期
         -----------------------------------------------------------------------------------------------------------------------------------------------------
        
        Demo:

public class DateFormatDemo {
    public static void main(String[] args) throws Exception {
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateInstance();
        DateFormat fullDateFormat = DateFormat.getDateInstance(DateFormat.FULL);
        DateFormat longDateFormat = DateFormat.getDateInstance(DateFormat.LONG);
        DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
        DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
        System.out.println(dateFormat.format(date));
        System.out.println(fullDateFormat.format(date));    //完整格式
        System.out.println(longDateFormat.format(date));    //长格式
        System.out.println(mediumDateFormat.format(date));    //普通格式
        System.out.println(shortDateFormat.format(date));    //短格式        
        
        //格式化字符串
        String str = "2010年9月12日";
        System.out.println(longDateFormat.parseObject(str));
    }
}
    d.SimpleDateFormat
        SimpleDateFormat类是DateFormat类的子类。SimpleDateFormat类可以使用new关键字创建实例对象,他的构造方法接收一个格式字符串参数,表示日期格式模板。
        Demo:

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("Gyyyy年MM月dd日:今天是yyyy年的第D天,E");
        System.out.println(sdf.format(new Date()));
        //将指定格式的字符串解析为Date对象
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
        String str = "2013/09/03";
        System.out.println(sdf2.parse(str));
    }
}

----------------------ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值