Java API -----String

Java API -----String

1.String创建方法

//常用的创建String类型方法
String str = "Hello";
String s1 = new String();
//基本的方式
String s2 = new String("Hello2");
String s3 = new String(new char[]{'H','e','l','l','o','3'});

String s4 = new String(new char[]{'H','e','l','l','o','3'},0,2);
//public String(char[] value,int offset,int count):把字符数组一部分转成字符串。

String s5 = new String(new int[]{65,66,67,68,69},0,2);
String s6 = new String(new byte[]{65,66,67,68,69});
String s = ""+87;//87 ===> 数类型 转换称String类型最快捷的方式
s = 4+5+"1"+6;//9 + “1" ==> "91"+6 ==> 916
System.out.println(s);//916

2.String类的获取

int length = str.length();
char c = str.charAt(int);
int a = str.indexOf(char);
int b = str.indexOf(String);
int c = str.indexOf(char,int);
int d = str.indexOf(String,int);
String s = str.substring(int);
String s = str.substring(int);
    public static void main(String[] args) {
        String string = "drtgjdfhet4tfgyjhgjkuhjkutyf";
        //获取数组的长度
        int length = string.length();
        System.out.println(length);
        //获取指定索引处的字符
        char c = string.charAt(2);
        System.out.println(c);
        //获取当前字符在String中的第一次出现的下标 , 如果当前字符串中没有匹配到返回-1
        int ch = string .indexOf("t");
        System.out.println(ch);
        //从指定下标开始检查指定内容,获取从指定下标后第一次出现的下标 , 如果当前字符串中没有匹配到返回-1
        System.out.println(string.indexOf("yh",6));
        System.out.println(string.indexOf('e',2));
        //从指定下标开始截取字符串
        System.out.println(string.substring(2));
        System.out.println(string.substring(1,6));
        //通过下标返回字符ASCI值
        System.out.println(string.codePointAt(3));
    }

结果
28
t
2
-1
8
tgjdfhet4tfgyjhgjkuhjkutyf
rtgjd
103

3.String进行判断功能

boolean a = str.equals(String);
boolean b = str.equalsIgnoreCase(String);
boolean c = str.equalsIgnoreCase(String,int);
boolean d = str.endsWith(String);
boolean e = str.isEmpty();
System.out.println(null == str3);
public static void main(String[] args) {
        String string = "vbhjdrbgeiakuhbngta";
        //比较两个字符串是否相等  : == ,  equals(String string)
        System.out.println(string.equals("vbduyjuysrh"));
        System.out.println(string.equals("vbhjdrbgeiakuhbngta"));
        //忽略英文大小写进行比较 --> 比较验证码使用 hgzAs9
        System.out.println(string.equalsIgnoreCase("VBhjDrbgeiakuhbngta"));
        //判断当前字符串是否以str为开始
        System.out.println(string.startsWith("vbhj"));
        System.out.println(string.startsWith("hj",8));
        System.out.println(string.startsWith("hj",2));
        //判断当前字符串对象是是否以str为结尾 ---> 判断后缀
        String str = "新建文本文档.txt";
        System.out.println(str.endsWith(".txt"));

        System.out.println("------------------------");

        //判断当前字符串是否为空
        System.out.println(str.isEmpty());
        String str2 = "";
        System.out.println(str2.isEmpty());//true表示当前字符串为空(字符长度为0)
        System.out.println(str2.length());//等值 str2.length == 0 表示当前字符串为空
        String str3 = null;//表示没有对象 -->空对象
        // System.out.println(str3.isEmpty());//没有对象就无法使用
        System.out.println(str3);
        System.out.println(null == str3);//判断null的值
    }
结果
false
true
true
true
false
true
true
------------------------
false
true
0
null
true

4.String转换方法

char[] a = str.toCharArray();
String b = str.toUpperCase();
String c = str.toLowerCase();
String str = "sndkackdacda";
//将字符串转换为char数组
char[] ch = str.toCharArray();
System.out.println(Arrays.toString(ch));
//将字符串转为大写
System.out.println(str.toUpperCase());
System.out.println(str);
//将字符串转换为小写
String str1 = str.toUpperCase();
System.out.println(str1.toLowerCase());

5.String其它常用方法

String a = str.trim();
String[] b = str.split(char);
String c = str.subSequence(int,int);
String d = str.replace(char,char);//       (被替换,替换)
String e = str.replaceFirst(char,char);//  (被替换,替换)
String f = str.replaceAll(String,String);//(被替换,替换)
int g = str.lastIndexOf(char);
boolean h = str.contains(String);
String i = str.concat(String);
String str = " reyher cdjna ";
//1.去除字符串两端的空格
System.out.println(str.trim());
System.out.println(str);
//2.以Str进行字符串切分,返回一个字符串数组
str = "a_b_abc_cd";
String[] strArr = str.split("_");
System.out.println(Arrays.toString(strArr));
//3.根据下标进行截取
System.out.println(str.subSequence(2,5));
//4.将指定字符替换称其它字符
System.out.println(str.replace('a','s'));
//5.将指定的字符串替换其他字符串
System.out.println(str.replaceAll("a","s"));
//6.替换第一出现的字符串
System.out.println(str.replaceFirst("a","s"));
//7.返回指定字符最后一次出现的下标
System.out.println(str.lastIndexOf("c"));
//8.判断当前字符串是否包含指定字符串
System.out.println(str.contains("ae"));
//9.在原有的字符串进行添加新字符串
System.out.println(str.concat("abcd "));
结果
reyher cdjna
 reyher cdjna 
[a, b, abc, cd]
b_a
s_b_sbc_cd
s_b_sbc_cd
s_b_abc_cd
8
false
a_b_abc_cdabcd

String 中 == 与 equals

== 比较的是内存的地址值是否一致

equals 比较的对象中属性的值是否一致(当前equals方法需要重写)

public static void main(String[] args) {
        String s1 = "abc";//在字符串常量池中创建一个“abc”
        String s2 = "abc";//指向s1在字符串常量池中的地址
        String s3 = new String("abc");//在堆空间创建一个字符串对象
        String s4 = new String("abc");
        System.out.println(s1 == s2);
        System.out.println(s1 == s3);
        System.out.println(s1 == s4);
        System.out.println(s3 == s4);
    }

结果

true
false
false
false

在这里插入图片描述

Notes:
1.常量和常量拼接,地址依旧在常量池中,指向同一个地址

2.常量和变量拼接,地址就在堆空间中,因而没有指向同一个地址

StringBuffer(jdk1.0)和StringBuilder(jdk1.5)

String类型一旦创建就无法修改(重新创建一个对象,原有对象通过GC机制回收),因而存在大量数据操作的情况下,String类型不适合我们操作

在这里插入图片描述

StringBuffer常用方法

StringBuffer对象.append(String str)    //追加内容到当前 StringBuffer 对象的末尾,类似于字符串的连接。
StringBuffer对象.setCharAt(int index, char ch);  //修改对象中索引值为 index 位置的字符为新的字符 ch
StringBuffer对象.insert(int index, char ch);  //字符串插入
StringBuffer对象.reverse();    //对字符串进行反转
StringBuffer对象.deleteCharAt(int index);  //移除序列中指定位置的字符
StringBuffer对象.delete(int start,int end);//移除序列中子字符串的字符   删除下标区间,包括开始不包括结束
StringBuffer对象.capacity(); //有int类型返回值,表示当前对象容器的大小。  返回值为 创建对象长度+16

针对字符串操作中效率由高到低的排序

Stringbuilder > Stringbuffer > String StringBuilder

线程非安全 StringBuffer 线程安全

什么场景使用什么类

String : 字符串拼接操作较少时,可以使用(同时间段中10000左右的操作都可以使用)

StringBuilder : 单线程程序,大量字符串拼接时使用

StringBuffer:需要保证多线程数据安全情况下使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值