JAVA自学日5(第五周)

一、字符串

创建字符串

String(char a[])该方法用一个字符数组a创建String对象

String(char a[],int offset,int length)该方法提取字符数组a中的一部分创建一个字符串对象,参数offset表示开始截取字符串的位置,length表示截取字符串的长度。

连接字符串

使用+运算符可以实现连接多个字符串的功能,+运算符可以连接多个String对象并产生一个新的String对象。

public class join{
    public static void main(String args[]){
            String s1=new String("春色绿千里");
            String s2=new String("马蹄香万家");
            String s=s1+"\n"+s2;
            System.out.println(s);
        }
}

连接其他数据类型

字符串也可以同其他基本数据类型进行连接,如果将字符串与其他数据类型数据进行连接,会将其他数据类型的数据直接转换成字符串。

获取字符串信息

str.length();获取字符串长度

返回字符串的长度(包括字符串中的空格)

字符串查找

str.indexOf(要搜索的字符串);

返回查找的字符在字符串中的索引位置,如果没有检索到字符串,则返回-1

str.lastIndexOf(要搜索的字符串)

该方法返回指定字符串最后一次出现的索引位置,当调用该方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回,如果没有检索到字符串str,则返回-1

如果lastIndexOf()方法中的参数是空字符串""(注意没有空格),则返回的结果与调用length()方法的返回结果相同。

获取指定索引位置的字符

str.charAt(int index)

获取字符串

        通过substring(int beginIndex)方法返回从指定的索引位置开始截取直到该字符串结尾的字串

        str.substring(int beginIndex);

重载方法substring(int beginIndex,int endIndex)返回从字符串某一索引位置开始到某一索引位置结束的字符串

去除空格

trim()方法返回字符串的副本,并且忽略掉前面的空格和尾部的空格

str.trim();

public class Blak{
    public static void main(String args[]){
            String str="    java   class    ";
            System.out.println("字符串原来的长度:"+str.length());
            //将str去掉前后空格后的长度输出
            //System.out.println("去掉空格后的长度:"+str.trim().length());
        }
}

字符串替换

str.replace(要替换的字符或字符串,替换的内容);

replace()方法可以将指定的字符或字符串替换成新的字符或字符串,返回的结果是一个新的字符串,如果旧的字符或字符串没有出现在该对象表达式中的字符串序列中,则将原字符串返回。

//将单词中的字母a替换成字母A
public class NewStr{
    public static void main(String args[]){
        String str="address";
        String newstr=str.replace("a","A");
        System.out.println(newstr);
    }
}

注意区分大小写。

判断字符串的开始与结尾

startsWith()方法和endsWith()方法分别用于判断字符串是否以指定的内容开始或结束,这两个方法的返回值都是boolean类型

判断字符串是否相等

对字符串对象进行比较不能简单的使用比较运算符“”==“”,因为比较运算符比较的是两个字符串的地址是否相同,即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回false。

equals()方法,用于比较两个字符串是否相同,区分大小写

equalslgnoreCase()方法,不区分大小写

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

compareTo()方法为按照字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数,如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数,如果这两个字符串相等,则结果为0

str.compareTo(String otherstr)

该方法只有在equals()方法返回true时,才返回0

//判断字幕b的位置
public class wordbook{
    public static void main(String args[]){
        String str=new String("b");
        String str2=new String("a");
        String str3=new String("c");
        System.out.println(str+"compareTo"+str3+":"+str.compareTo(str3));
    }
}

字母大小写转换

toLowerCase()方法,将字符串中的所有大写字母都转化成 小写,如果字符串中没有应该被转换的字符,则将原本的字符串返回,否则将返回一个新的字符串,将原字符串中每个大写字母都转换成小写,字符串长度不变

str.toLowerCase();

同理,toUpperCase()方法将所有小写字母变成大写

字符串分割

split(String sign)

该方法根据给定的分隔符对字符串进行拆分,如果想定义多个分隔符,可以使用符号“”|“”,例如“”,|=“”表示分隔符分别为“,”=“”

split(String sign,int limit)

该方法可根据给定的分隔符对字符串进行拆分,并限定拆分的次数

格式化字符串

日期和时间字符串格式化

日期格式化

//返回一个月中的天数
Date date=new Date();
String s=String.format("%te",date);
//上述代码中变量s的值是当前日期中的天数,如今天是3号,则s的值为3,%te是转换符

时间格式化

使用format()方法不仅可以完成日期的格式化,也可以实现时间的格式化,时间的格式化转换符要比日期你的格式化转换符更多,更精确,它可以将时间格式化为时分秒毫秒等

具体转换符可以查看相关书籍

常规类型格式化

使用正则表达式

StringBuilder类

创建成功的字符串对象,其长度是固定的,内容不能改变和编译,虽然使用“”+“”可以打到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象,如果重复地对字符串进行修改,将极大地增加系统开销,而JDk新增了可变序列StringBuilder类,大大提高了频繁增加字符串的效率。

        append()方法

        该方法用于向字符串生成器中追加内容,通过该方法的多个重载星矢,可实现接受任何类型的数据。

        insert(int offset,arg)方法

        该方法用于向字符串生成器中的指定位置插入数据内容。

        delete(int start,int end)

        移除此序列的子字符串中的字符,该子字符串从指定的start处开始,一直到索引end-1处的字符,如果不存在这种字符,则一直到序列尾部,如果start等于end,则不发生任何改变

StringBuffer类

        

StringBufferStringBuilder
StringBuffer已同步,即线程安全。这意味着两个线程不能同时调用StringBuffer的方法。StringBuilder是不同步的,即不是线程安全的。这意味着两个线程可以同时调用StringBuilder的方法。
StringBuffer的效率不如StringBuilder。StringBuilder比StringBuffer效率更高。

        二、常用库类

                日期时间类

                Date类

        

Date();//分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)
Date();
//分配Date对象并初始化此对象,以表示自标准基准时间(1970年1月1日00:00:00GMt起经过指定毫秒数的时
//间)
//使用Date类的第二种构造方法创建一个Date类对象
long timeMillis=System.currentTimeMillis();//当前系统时间所经历的毫秒数
Date date=new Date (timeMillis);
//System类的currenTimeMillis()方法主要用来获取当前系统时间距标准基准时间的毫秒数。
//创建Date对象时使用的是long型整数,而不是double型,这主要是因为double类型可能会损失精度。

after(Date when)//测试当前日期是否在指定日期之后
before(Date when)//测试当前日期是否在指定日期之前
getTime()//获得自1970年1月1日00:00:00GMT开始到现在所经过的毫秒数
setTime(long time)//设置当前Date对象所表示的日期时间值,该值用以表示自1970年1月1日00:00:00GMT以
//后time毫秒的时间点

日期的格式化

DateFormat类是日期时间格式化子类的抽象类,可以按照指定的格式对日期或时间进行格式化,DateFormat类提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间Formatter,格式化风格主要包括SHORT、MEDIUM、LONG、FULL四种

SHORT:完全为数字,12.13.12或3:30pm

MEDIUM:较长,如Jan 12,1999

LONG:更长,如January12,1999或2:30:32pm

FULL:完全指定,如Tuesday、APRIL12、1952AD或3:30:42pm PST

另外,使用DateFormat类还可以自定义日期时间的格式,要格式化一个当前语言环境下的日期,首先需要创建DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法getDateInstance()进行创建

DateFormat df=DateFormat.getDateInstance();

使用该方法获取的是所在国家或地区的标准日期格式,另外DateFormat类还提供了一些其他静态方法。

DateFormat df=DateFormat.getInstance();
System.out.println(df.format(new Date()));
//2022/6/4 上午 8:31

由于DateFormat类是一个抽象类,不能用new创建实例对象,因此,除了使用getXXXInstance()方法来创建对象外,还可以使用其子类,如SimpleDateFormat类,该类是一个以与语言环境相关的方式来格式化和分析日期的具体类。

SimpleDateFormat类提供了19个格式化字符,可以让开发者随意编写日期格式

具体可以自行查阅

三、集合类

        Collection接口

方法功能描述
add(E e)将指定的对象添加到该集合中
remove(Object o)将制定对象从该集合中移除
ifEmpty()        返回boolean值,用于判断集合是否为空
iterator()返回在此元素上进行迭代的迭代器,用于遍历集合中对象
size()返回int型值,获取元素个数

List集合

List集合继承了Collection接口,因此包含该接口中的所有方法

get(int index)

set(int idex,Object obj)

List<E> list=new ArrayLIst<>();

E为合法的java数据类型,可以是用户自己定义的类型

Set集合

Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但set集合中不能包含重复对象,Set集合由Set接口和Set接口的实现类组成,Set接口继承了Collection接口

Map集合

Map集合没有继承Collection接口,其提供的是key到value的映射,Map集合中不能包含相同的key,每个key只能映射一个value。

//输出Map集合中书号(key)和书名(value)
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapTest{
    public static void main(String[] args){
            Map<String,String>map=new HashMap<>();
            map.put("h-1","java教程");
            Set<String> set=map.keySet();
            Iterator<String> iset.iterator();
            System.out.println("key:");
            while(it.hasNext()){
                System.out.println(it.next()+" ");
            }
            Collection<String> coll=map.values();
            it=coll.iterator();
            System.out.println("\nvalue:";
            
            while(it.hasNext()){
                System.out.println(it.next()+" ");
            }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值