Java中的常用类

Java中的常用类

一、String类

1.相关概念
(1)引用数据类型

▼String表示字符串类型,是引用数据类型,不属于基本数据类型。
▼String类在java.lang包中。

(2)字符串的标志

▼字符串的标志是双引号,而且字符串是常量,不可变。
▼在JDK中,字符串是存储在方法区字符串常量池中,为了提升开发效率高,并且Java中的垃圾回收器不会回收常量。

(3)字符串的并置运算

String s1="abc";
String s2="def"+"gfhi";

s1是字符串常量"abc"的引用,即abc的内存地址,即s1是存储地址的变量。
▼s2语句中实际在在常量池中生出三个字符串常量对象,“def”,“gfhi”,最后因为加号并置运算生成"defgfhi"对象,s2指向"defgfhi"。
▼在Java中无法输出引用,因为调用引用时自动调用重写(构造时已经重写)后toString()输出字符串。

(4)另一种创建方法
String s3=new String("xy");

可以采用类new创建方法,其构建原理如图所示,存储在堆中。

(5)同一个引用

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="hello";
        String s2="hello";
        System.out.println(s1==s2);
    }
}

打印输出为true,证明s1与s2指向同一个引用

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1=new String("hello");
        String s2=new String("hello");
        System.out.println(s1==s2);
    }
}

打印输出为false,证明在堆中s1与s2不是同一个类对象,而且说明字符串比较不应用==来比较

2.String类常用方法
(1)String构造方法
ackage string;

public class Stringtest {
    public static void main(String args[]){
        String s1="我爱你中国";

        String s2=new String("我爱你中国");

        char[] chas={'我','爱','你','中','国'};
        String s3=new String(chas);

        String s4=new String(chas,0,5);//起始下标,终点下标,左闭右开

        byte[] bytes={'a','b','c'};
        String s5=new String(bytes);

        String s6=new String(bytes,0,3);

        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println(s5);
        System.out.println(s6);
    }
}
(2)String.equals()方法

用于比较两个字符串是否相同,返回布尔值。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1=new String("hello");
        String s2=new String("hello");
        System.out.println(s1.equals(s2));
    }
}

与compareTo()方法不同,equals不能返回长度差,专一判断是否相同,执行效率更快。

拓展:String.equalsIgnoreCase()方法

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="ABCDE";
        String s2="abcde";
        System.out.println(s1.equalsIgnoreCase(s2));
    }
}

输出true,这忽略字母大小进行比较,也比较常用。

(3)String.length()方法

返回字符串长度

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1=new String("hello");
        System.out.println(s1.length());
    }
}

(3)String.charAt()方法
字符串索引,返回char型

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="我爱你中国";
        System.out.println(s1.charAt(1));
    }
}

输出字符"爱"。

(4)String.compareTo()方法

返回int型:
前>后,返回正值(不同长度返回长度差,相同长度返回字符集编码差)
前==后,返回0
前<后,返回负值(不同长度返回长度差,相同长度返回字符集编码差)

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="我爱你中国";
        String s2="我爱你中国";
        String s3="我爱你";
        String s4="我爱你中国我爱你中国";
        String s5="我爱你中华";
        System.out.println(s1.compareTo(s2));
        System.out.println(s1.compareTo(s3));
        System.out.println(s1.compareTo(s4));
        System.out.println(s1.compareTo(s5));
    }
}
package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="xyz";
        String s2="yxz";
        System.out.println(s1.compareTo(s2));
    }
}

输出-1,因为方法只比第一个字母,后面不比了。
▼字符串比较只能用compareTo()方法。

(5)String.contains()方法

判断字符串中是否包含指定子字符串,返回布尔值。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="我爱你中国";
        String s2="中国";
        System.out.println(s1.contains(s2));
    }
}

输出true

(6)String.endsWith()方法

判断字符串是否以指定子字符串结尾,返回布尔值。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="Test.class";
        String s2=".class";
        System.out.println(s1.endsWith(s2));
    }
}

输出true,这在批量处理文件中常用。

拓展:String.startsWith()方法
判断字符串是否以指定子字符串开头,返回布尔值。

(7)String.isEmpty()方法

判断字符串是否为空,返回布尔值。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="";
        System.out.println(s1.isEmpty());
    }
}

输出为true,该方法底层调用String.length。

3.字符串与字符
(1)String.toCharArray()方法

可以将字符串转为一个字符数组,方便对每个字符进行操作

package string;
import java.nio.charset.StandardCharsets;

public class Stringtest {
    public static void main(String args[]){
        String s1="ABCDE";
        char[] chars=s1.toCharArray();
        for(char i:chars) {
            System.out.println(i);
        }
    }
}

拓展1:String.getChars()方法
可以将字符串中子字符串转为一个字符数组,需要指定数组,起始下标,终点下标(左闭右开),以及数组开始存放单元的下标。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="中国人民从此站起来了";
        char[] arr=new char[7];
        s1.getChars(2,9,arr,0);
        for(char i:arr){
            System.out.println(i);
        }
    }
}

拓展2:String.getBytes()方法
将字符串转换为byte数组

package string;
import java.nio.charset.StandardCharsets;

public class Stringtest {
    public static void main(String args[]){
        String s1="ABCDE";
        byte[] bytes=s1.getBytes(StandardCharsets.UTF_8);
        for(byte i:bytes) {
            System.out.println(i);
        }
    }
}
(2)String.indexOf()方法

查看目标子字符串在字符串中的第一次出现的索引。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="pythonc++javac";
        System.out.println(s1.indexOf('a'));
    }
}

输出10
拓展:String.lastIndexOf()
查看目标子字符串在字符串中的最后一次出现的索引。

(3)String.replace()方法

用于替换字符串中的目标字符。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="https://www.baidu.com";
        String s2=s1.replace("baidu","google");
        System.out.println(s2);
    }
}

输出https://www.google.com

(3)String.spilt()方法

根据指定字符切分字符串。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="2020-10-01";
        String[] strings=s1.split("-");
        for(String i:strings)
        System.out.println(i);
    }
}
(4)String.substring()方法

截取字符串,需要指定开始下标,终点下标。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="2020-10-01";
        String s2=s1.substring(3,8);
        System.out.println(s2);
    }
}

输出0-10-。

(5)String.toLowerCase()方法

将字符串中的字符全传换小写

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="Mike";
        String s2=s1.toLowerCase();
        System.out.println(s2);
    }
}

输出为mike

拓展:String.toUpperCase()
将字符串中的字符全传换大写

(6)String.trim()方法

去除字符串的前后空白,中间的空白并不去除

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1="       Mike    Amy     John         ";
        System.out.println(s1.trim());
    }
}

输出Mike Amy John,在网站登录开发中常用。

4.字符串与基本数据类型转换
(1)String.valueOf()方法

基本数据类型转换成字符串,这个属于静态方法。

package string;

public class Stringtest {
    public static void main(String args[]){
        String s1=String.valueOf(true);
        String s2=String.valueOf(13);
        System.out.println(s1);
        System.out.println(s2);
    }
}

输出"true",“13”,该方法底层调用重写后的obj.toString。
实际上System.out.println()方法都是将对象转换为obj.toString方法再输出。

二、Date类

1.构造方法

获取系统当前时间,可以达到毫秒级别。

package date;
import java.util.Date;

public class DateTest {
    public static void main(String args[]) {
        Date date = new Date();
        System.out.println(date);
    }
}

输出是一个日期字符串

2.SimpleDateFormat

日期格式化类,使用时需要指定日期格式

package date;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
    public static void main(String args[]) {
        Date date = new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        //格式化后的日期字符串
        String nowTime=sdf.format(date);
        System.out.println(nowTime);
    }
}

输出为2021-12-24 21:21:05 980

3.String.format()方法
package date;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
    public static void main(String args[]) {
        Date date = new Date();
        String nowTime=String.format("%tY年%tm月%td日",date,date,date);
        System.out.println(nowTime);
    }
}

输出2021年12月24日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有几何

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值