Java常用类

本文详细介绍了Java中String类的常用方法,包括获取长度、查找子串、截取子串等,并探讨了字符串不可变性的概念。此外,还讲解了StringBuilder类的使用,包括追加、插入和转换为String的方法,以及其在多线程环境下的优势。同时,提到了字符串与基本数据类型的转换,包装类的装箱和拆箱操作,以及Math类的随机数生成等实用方法。
摘要由CSDN通过智能技术生成

String类

String类常用方法
方法说明
int length()返回当前字符串的长度
int indexOf(int ch)查找ch字符在该字符串中第一次出现的位置
int indexOf(String str)查找str字符串在该字符串中第一次出现的位置
int lastIndexOf(int ch)查找ch字符在在该字符串中最后一次出现在的位置
int lastIndexOf(String str)查找str字符串在该字符串中最后一次出现的位置
String substring(int beginIndex)获取从beginIndex位置开始到结束的字符串
String substring(int beginIndex,int endIndex)获取从beginIndex位置开始到endIndex位置的字符串
String trim()返回去除了前后空格的字符串
boolean equals(Object obj)将该字符与指定对象比较,返回true或false
String toLowerCase()将字符串转换为小写
String toUpperCase()将字符串转换为大写
char charAt(int index)获取字符串中指定位置的字符
String[] split(String regex,int limit)将字符串分割为子字符串,染回字符串数组
byte getBytes()将该字符串转换为byte数组
注意
  • 字符串的下标是从0开始的,范围是从0到变量名.length()-1

  • 使用indexOf进行字符或者字符串查找时,如果匹配返回位置下标;如果没有匹配结果则返回-1

  • 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

示例一:
package com;

import org.junit.Test;

import java.util.Arrays;

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

        //字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1
        String str = "Thisis JAVA 编程";
        //打印字符串长度
        System.out.println("当前字符串长度:" + str.length());

        //查找字符的位置
        char c = '编';
        System.out.println("当前字符串“编”的位置:" + str.indexOf(c));

        //查找JAVA的位置
        System.out.println("当前字符串“JAVA”的位置:" + str.indexOf("JAVA"));

        //查找“test”的位置,如果不存返回-1
        System.out.println("当前字符串中test的位置:" + str.indexOf("test"));

        //按空格把字符拆分成一个数组,并输出每个元素
        String[]  arr = str.split(" ");
        System.out.println("按空格把字符拆分成数组:" + Arrays.toString(arr));

        //获取索引位置[3,7]之间的子串
        //使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符
        System.out.println(str.substring(3,7));

    }

    @Test
    public  void test(){
        /**
         * 功能:
         * 判断 Java 文件名是否正确
         * 判断邮箱格式是否正确。
         * 其中:合法的文件名应该以 .java 结尾;
         * 合法的邮箱名中至少要包含 “@” ,
         * 并要求 “@” 在 “.” 之前
         */

        // Java文件名
        String fileName = "HelloWorld.java";
        // 邮箱
        String email = "laurenyang@imooc.com";

        //获取文件名中最后一次出现"."号的位置
        int index = fileName.lastIndexOf(".");

        // 获取文件的后缀
        String prefix = fileName.substring(index + 1,fileName.length());
        if(index != -1 && index != 0 && prefix.equals("java")){
            System.out.println("该文件名正确");
        }else{
            System.out.println("该文件名不正确");
        }

        //获取@的位置
        int index2 = email.indexOf("@");
        //获取.的位置
        int index3 = email.indexOf(".");
        if (index2 != -1 && index3 > index2){
            System.out.println("邮箱格式合法");
        }else {
            System.out.println("邮箱格式不合法");
        }
    }
}
“==” 和 equals() 的区别
  • ==:判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象
  • equals():比较存储在两个字符串对象中的内容是否一致
示例二:
/**
     * 功能:统计指定字符串中字符 ‘a’ 出现的次数
     * 分析:可以通过循环遍历字符串中的每一个字符,判断是否是字符 a ,如果是,则累加统计出现的次数
     */
    @Test
    public void test2(){
        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";
        int sum = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'a'){
                sum = sum+1;
                //sum++
            }
        }
        System.out.println("字符a出现的次数:"+ sum);
    }

StringBuilder类

除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串

String、StringBuffer与StringBuilder的区别
StringStringBufferStringBuilder
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量可变类,速度更快
不可变可变可变
线程安全线程不安全
多线程操作字符串单线程操作字符串

定义 StringBuilder 类的对象

package com.UsedClass;

public class DemoStringBuilder {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("This is StringBuilder Test");
        System.out.println(stringBuilder);
    }
}
StringBuilder 类常用方法
方法说明
StringBuilder append(参数)追加内容到当前StringBuilder对象的末尾
StringBuilder insert(位置,参数)将内容插入到StringBuilder对象的指定位置
String toString()将StringBuilder对象转换为String对象
int length()获取字符串的长度
示例:
package com.UsedClass;

public class DemoStringBuilder {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("This is StringBuilder Test");

        //在字符串后面追加字符串
        stringBuilder.append("testappend");
        System.out.println(stringBuilder);

        //在指定位置插入内容
        stringBuilder.insert(12,"!!");
        System.out.println(stringBuilder);

        //转换为String类型
        String str = stringBuilder.toString();
    }

    /**
     * 功能:将一个由英文字母组成的字符串转换成指定格式---从右边开始每三个字母用逗号分隔的形式。
     */
    public void test(){
        // 创建一个空的StringBuilder对象
        StringBuilder str = new StringBuilder();

        // 追加字符串
        str.append("jaewkjldfxmopzdm");

        // 从后往前每隔三位插入逗号
        for(int i = str.length()-3;i>0;i=i-3){
            str.insert(i,',');
        }
        
        // 将StringBuilder对象转换为String对象并输出
        System.out.print(str.toString());
    }
}

包装类

可以像操作对象一样操作基本数据类型

包装类主要提供的两大类方法

  • 将本类型和其他基本类型进行转换的方法
  • 将字符串和本类型及互相转换的方法
包装类的装箱和拆箱
装箱
  • 把基本数据类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

    //定义一个int的基本类型
    int i = 10;
    Integer x = new Integer(i);//手动装箱
    Integer y = i; //自动装箱
    
拆箱
  • 和装箱相反,把包装类对象转换为基本类型的值,又可分为手动拆箱和自动拆箱

    //定义一个Integer类型的包装类对象
    Integer i = new Integer(10); 
    int j = i.intValue(); //手动拆箱,转为int类型
    int y = i;//自动拆箱,转换为int类型
    
toString类
  • 基本类型转为字符串的方法

    //将基本类型转换为字符串
    int i =10;
    String str = Integer.toString(i);//方法一
    String str2 = String.valueOf(i);//方法二
    String str3 = i + "";//方法三
    
  • 将字符串转为基本类型

    //将字符串转为基本类型
    String str= "10";
    int i = Integer.parseInt(str);//方法一
    int j = Ingeger.valueOf(str);//方法二
    

Data和SimpleDateFormat类

  • SimpleDateFormat 来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。

    // 使用format()方法将日期转换为指定格式的文本
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
    SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
  • format()方法:将日期转换为指定格式的文本

    // 创建Date对象,表示当前时间
    Date now = new Date();
            
    // 调用format()方法,将日期转换为字符串并输出
    System.out.println(sdf1.format(now));
    System.out.println(sdf2.format(now));
    System.out.println(sdf3.format(now));
    
  • parse() 方法: 将文本转换为日期

    // 使用parse()方法将文本转换为日期
    String d = "2014-6-1 21:05:36";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            
    // 调用parse()方法,将字符串转换为日期
    Date date = sdf.parse(d);
            
    System.out.println(date);
    

Math类

该类所有的方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名

常用方法
返回值方法名解释
longround()返回四舍五入的整数
doublefloor()返回小于参数的最大整数
doubleceil()返回大于参数的最小整数
doublerandom()返回[0,1]之间的随机浮点数
示例:
public class HelloWorld {
    /**
    *功能:定义一个包含 10 个元素的整型数组,通过随机产生 10 以内的随机数,给数组中的每个元素赋值,并输出结果。
    */
    public static void main(String[] args) {
        
        // 定义一个整型数组,长度为10
		int[] nums = new int[10];
        
        //通过循环给数组赋值
		for (int i = 0; i < nums.length; i++) {
            // 产生10以内的随机数
			int x = (int)(Math.random() * 10);
            
			nums[i] = x;// 为元素赋值
		}
        
		// 使用foreach循环输出数组中的元素
		for (int num : nums) {
			System.out.print(num + " ");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MoRis._

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

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

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

打赏作者

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

抵扣说明:

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

余额充值