javaSE<String和StringBuffer和StringBuider>day11

String

String 类代表字符串,Java程序中的所有字符串字面意思(“abc”)都作为类的实例实现。换句话说,程序出现的类中这样的字符串都是String类的对象。

字符串是常量,他们的值在创建之后不能更改。

StringBuffer支持改变字符串的内容。


String类提供了很多操作字符串的方法。

String的构造方法

》 提供我们用各种方式操作字符串

  • String()
  • String(byte [] bytes)
  • String(char[] chars)
  • .String(String original)

String()

String(byte [] bytes)

String(char [] chars )

String(String str)

     // 创建空字符串
        String s = new String();
        String s2 = "";
        System.out.println(s);
        // byte数据传输用
        byte[]bytes = {65,66,67};
        String s3 = new String(bytes);
        System.out.println(s3);
        // 拼接char类型的字符,拷贝
        char [] chars = {'我','想',"",'你','吃'};
        String s4 = new String(chars);
        System.out.println(s4);
        
        String abc = new String("abc");

🍎方法:

构造方法

查找类的方法
char charAt(int index)
返回指定索引处的 char 值。
int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
int lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引。

// 查找方法
 public static void testFind(){
     // char (根据下标找字符)
     System.out.println("java".charAt(2));
     // int (根据字符找下标) 返回第一次出现的
     // 应用场景查找是否包含字符或字符串
     System.out.println("java".indexOf("v"));
     // 查找最后一次出现的字符下标
     System.out.println("java".lastIndexOf("a"));

 }

判断类的方法
boolean contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回 true
boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
boolean equals(Object anObject)
将此字符串与指定的对象比较。
boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
boolean isEmpty()
当且仅当 length() 为 0 时返回 true。

private static void testJudgment() {
  // 判断此字符串中是否包含指定的char
   System.out.println("java".contains("a"));
     // 判断以指定的字符开头
     System.out.println("he".startsWith("h"));
     // 判断以指定的字符结尾
     System.out.println("Hello.java".endsWith("java"));
     // equals,将此字符串于指定的字符串比较。
     System.out.println("java".equals("java"));
     // 忽略大小写比较
    	 				System.out.println("java".equalsIgnoreCase("JAVA"));
     // 是否为空字符串
     System.out.println("".isEmpty());
     /**
            * null 是一个空对象
            * "" 是Sting对象,只不过这个字符串是空。
         */

    }

转换类
byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
char[] toCharArray() 将此字符串转换为一个新的字符数组。
String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写
String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。

static String valueOf(boolean b)
返回 boolean 参数的字符串表示形式。

// 转换方法
    private static void testTransfer() {
        // 使用默认字符,把String 编码为byte,存储到一个行的byte的对象中
       byte [] bytes = "abc".getBytes(StandardCharsets.UTF_8);
        System.out.println(bytes);
        // 将String中的所有转换为小写
        System.out.println("JAVA".toLowerCase(Locale.ROOT));
        // 将String转为字符数组
        char [] chars = "java".toCharArray();
        System.out.println(chars);
        // 转为大写
        System.out.println("java".toUpperCase());
        // 任何类型转为字符串
        String s = String.valueOf(1);
    }

字符截取
String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
字符替换
String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的 String replaceAll(String regex, String replacement)

 private static void test() {
        // 截取字符串中的子字符串返回一个新的字符串中
        System.out.println("javaBigData".substring(4));
       // 截取指定开始和结束的索引 有后下标的都不包含
        System.out.println("javaBigData".substring(4,7));
        System.out.println("412724200007211234".substring(6,14));
        // 实现字符串的替换
        System.out.println("boss is stupid".replace("stupid","fake"));
        // \d 是(0-9)的数字。 
        System.out.println("1a2b3c4d".replaceAll("\\d","**"));
    }

其他方法
String concat(String str) 将指定字符串连接到此字符串的结尾。
int length() 返回此字符串的长度。
String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
String trim() 返回字符串的副本,忽略前导空白和尾部空白。

/**
     * 其他
      */
   private static void test2() {
        // 拼接
        System.out.println("java".concat("BigData"));
        // 字符串的长度
        System.out.println("java".length());
        // 字符串的拆分
        String [] s = "java".split("a");
        System.out.println(Arrays.toString(s));
        // 去除前后的空格
        System.out.println("  java  ".trim());
    }

StringBuffer & StringBuilder

一个线程安全的,字符的可变序列

该类提供了一些可以改变字符串的长度和内容


构造方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yh0RHC6C-1677111629844)(D:\前锋学习笔记\笔记\image-20230220143647925.png)]

方法
StringBuffer append(boolean b) 追加的 boolean参数序列的字符串表示形式
ps: 有很多append的重载方法,用于追加大多数类型
StringBuffer delete(int start, int end) 删除的字符在字符串序列分析。 StringBuffer deleteCharAt(int index) 删除 char在指定的位置在这个序列。
StringBuffer insert(int offset, boolean b) 插入的 boolean参数的字符串表示形式进入这个序列。 ps: 参数2支持大部分类型
StringBuffer replace(int start, int end, String str) 在一个字符串中替换指定的 String字符这个序列的特征。
StringBuffer reverse() 使这个字符序列被序列的反转所取代。
void setCharAt(int index, char ch) 指定索引处的字符设置为 ch。

PS:场景将来用来进行字符和StringBuffer之间转换,有很多的重载方法,用于重叠的方法append(boolean b) 追加的boolean

public class Buffer {
    public static void main(String[] args) {
        // 添加
        StringBuffer sb = new StringBuffer("Java");
        StringBuffer sb1 = sb.append("BigData");
        System.out.println(sb);
        System.out.println(sb1);
        // 删除
        StringBuffer sb2 = sb.delete(2,4);
        System.out.println(sb2);
        // 插入
        StringBuffer sb3 = new StringBuffer("xyz");
        sb3.insert(2,111);
        System.out.println(sb3);
        // 指定位置替换
        StringBuffer phone = new StringBuffer("13523121270");
        phone.replace(3,7,"****");
        System.out.println(phone);
        // 倒排
        StringBuffer phone2 = new StringBuffer("13523121270");
        phone2.reverse();
        System.out.println(phone2);
        // 修改指定Char字符的大小
        StringBuffer x = new StringBuffer("xyz");
        x.setCharAt(1, 'Y');
        System.out.println(x);
    }
}

StringBuilder

StringBuilfer是可变序列,但是不保证线程安全,建议在单线程情况下使用,如果没有线程安全的要求,建议优先使用StringBuffer中的效果一样

 // 添加
        StringBuilder sb = new StringBuilder("Java");
        StringBuilder sb1 = sb.append("BigData");
        System.out.println(sb);
        System.out.println(sb1);
        // 删除
        StringBuilder sb2 = sb.delete(2,4);
        System.out.println(sb2);
        // 插入
        StringBuilder sb3 = new StringBuilder("xyz");
        sb3.insert(2,111);
        System.out.println(sb3);
        // 指定位置替换
        StringBuilder phone = new StringBuilder("13523121270");
        phone.replace(3,7,"****");
        System.out.println(phone);
        // 倒排
        StringBuilder phone2 = new StringBuilder("13523121270");
        phone2.reverse();
        System.out.println(phone2);
        // 修改指定Char字符的大小
        StringBuilder x = new StringBuilder("xyz");
        x.setCharAt(1, 'Y');
        System.out.println(x);
StringString BufferString Builder
字符串是否可变不可变可变可变
线程安全安全线程安全不保证
效率非常慢
版本1.01.01,5

日期

1. Date

代表一个日期,精准到毫秒

计算机中计算时间的原点是1970-1-1 0:0:0

Date() 以当前时间创建日期对象

Date(int year, int month, int date) 以毫秒指定

setg

public static void main(String[] args) {
     // 当前时间
     Date date = new Date();
     System.out.println(date);
     // 指定年月日
     // 年分减1900
     Date date1 = new Date(2000-1900, 7, 21);
     System.out.println(date1);
     // 指定毫秒值创建时间
     Date date2 = new Date(1*24*60*1000);
     System.out.println(date2);
 }

方法:获得十分秒的方法getXxx以及setX大部分过时,为过时的。

2. Simple Date Format

格式化和解析 日期 -> 文本 和解析 文本–>日期

格式化日期的模板:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzurDeXO-1677111629844)(D:\前锋学习笔记\笔记\image-20230220162831059.png)]

3. Calendar

日历类,抽象类,不能直接创建方法

Calendar in = Calendar.getInstance();
int year = in.get(Calendar.YEAR);
     int month = in.get(Calendar.MONTH);
     int day = in.get(Calendar.DAY_OF_MONTH);
     int hour = in.get(Calendar.HOUR);
     int minute = in.get(Calendar.MINUTE);
     System.out.println();
 }

总结

关于重要的方法。Builder和Buffer总结的表格会背。Date比Calendar重要。

日期模板

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二手Java程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值