[Java]API&字符串

  • API

API (Application Programming Interface) :应用程序编程接口(调用别人写好的东西,不用自己编写直接使用)

API帮助文档:

指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

字符串

String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。

String

特点:

  • 字符串不可变,它们的值在创建后不能被更改

  • 虽然 String 的值是不可变的,但是它们可以被共享

  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

创建方式:
  • 直接赋值
String s1 = "abc";
  • new
String s1 = new String();
方法名说明
public String()创建一个空白字符串对象,不含有任何内容
public String(char[] chs)根据字符数组的内容,来创建字符串对象
public String(byte[] bys)根据字节数组的内容,来创建字符串对象
String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc
public class StringDemo01 {
    public static void main(String[] args) {
        //public String():创建一个空白字符串对象,不含有任何内容
        String s1 = new String();
        System.out.println("s1:" + s1);

        //public String(char[] chs):根据字符数组的内容,来创建字符串对象
        char[] chs = {'a', 'b', 'c'};
        String s2 = new String(chs);
        System.out.println("s2:" + s2);

        //public String(byte[] bys):根据字节数组的内容,来创建字符串对象
        byte[] bys = {97, 98, 99};
        String s3 = new String(bys);
        System.out.println("s3:" + s3);

        //String s = “abc”;	直接赋值的方式创建字符串对象,内容就是abc
        String s4 = "abc";
        System.out.println("s4:" + s4);
    }
}
  • 通过构造方法创建

    通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同

直接赋值方式创建

  • 以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池( 在堆空间中)中维护

1.双引号赋值时:用双引号直接赋值时,系统会检查该字符串在字符串池中是否存在。

  •  不存在:创建新的
  • 存在:复用

2.使用new的方式创建: 

会在堆空间创建新的小空间,记录的地址不同,相同的字符串过多会浪费内存空间

常用方法: 
比较:

"=":

  • 基本数据类型:比较的是具体的数据值
  • 引用数据类型:比较的是地址值

字符串比较:

  • boolean equals(要比较的字符串)

完全一样的结果返回true,否则false

  • boolean equalsIgnoreCase(要比较的字符串)

忽略大小写比较

package day11;

public class Test1 {
    public static void main(String[] args) {
        String a1 = "abc";
        String a2 = "abc";
        String a3 = new String("abc");
        String a4 = new String("ABC");
        System.out.println(a1 == a2);//true
        System.out.println(a1 == a3);//false
        System.out.println("equals:"+a1.equals(a3));//true
        System.out.println("equalsIgnoreCase:"+a3.equalsIgnoreCase(a4));//true 忽略大小写比较
    }
}

案例:

用户登录:

package day11;

import java.util.Scanner;

public class UserLogin {
    public static void main(String[] args) {
        String rightusername = "cxk";
        String rightpassWord = "cxk2580";
        for (int i = 0; i < 3; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("username:");
            String username = sc.next();
            System.out.println("password:");
            String password = sc.next();
            if (username.equals(rightusername) && password.equals(rightpassWord)) {
                System.out.println("login success!");
                break;
            } else {
                if (i == 2){
                    System.out.println("user locked");
                }else{
                    System.out.println("login false"+"  try"+(2-i)+"reLogin");
                }
            }
        }
    }
}

字符串遍历:

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("input string:");
        String str = sc.next();
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            System.out.println(i+" :"+ch);
        }
    }
}
截取:

将字符串的起始位置和截至位置截取(包头不包尾,前闭后开)

String substring(int beginindex,int endindex)

 例子:

public class PhoneNumber {
    public static void main(String[] args) {
        String phoneNumber = "15399163947";
        String start = phoneNumber.substring(0,4);
        String end = phoneNumber.substring(7);
        String result = start+"****"+end;
        System.out.println(result);
    }
}
 替换:

将字符串中的值替换成一个新的字符串

String replace(old,new);
public class talkreplace {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String talk = sc.next();
        String[] arr = {"cnm","mlgb","tmd","sb"};
        for (int i = 0; i < arr.length; i++) {
            talk = talk.replace(arr[i],"小可爱");
        }
        System.out.println(talk);
    }
}
StringBuilder

StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的

使用StringBuilder的场景:拼接,反转

  • 作用:提高字符串操作效率(由于字符串的值不可改变,每次进行字符串操作(例如:拼接)时会产生新的字符串)
方法名说明
Stringbuilder()创建一个空白可变字符串对象,不含任何内容
Stringbuilder(String str)根据字符串内容,创建可变字符串对象
 常用方法:
方法作用
append()添加数据,返回对象本身
reverse()反转字符串
length()字符串长度
toString()通过toString()就可以实现把StringBuilder转换为String

 因为StringBuilder是Java已经写好的类,Java底层对他做了一些特殊的处理。打印对象是他的属性值而不是地址值

public class BuilderTest {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("hello");
        System.out.println(stringBuilder);//hello
    }
}

操作:

public class BuilderTest {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("hello");
        System.out.println(stringBuilder);
        stringBuilder.append(12.3);//添加
        System.out.println(stringBuilder);
        stringBuilder.reverse();//反转
        System.out.println(stringBuilder);//容器内做反转
        int len = stringBuilder.length();//获取长度
        System.out.println(len);
        String sb = stringBuilder.toString();//变成字符串
        System.out.println(sb);
    }
}

练习:

 键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是

      对称字符串:123321、111

      非对称字符串:123123

import java.util.Scanner;

public class StringNUM {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("input: ");
        String str = sc.next();

        StringBuilder sb = new StringBuilder(str);
        System.out.println(sb);
        if (sb.reverse().toString().equals(str)){
            System.out.println("对称");
        }else {
            System.out.println("不对称");
        }
    }
}
 链式编程:

当我们调用一个方法时候,不需要用变量他的接收结果,可以继续调用其他方法

exp:

public class Test {
    public static void main(String[] args) {
        int len = getString().substring(2).replace("a","myq").length();
        System.out.println(len);
    }
    public static String getString(){
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        return str;
    }
}
StringJoiner
  • StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。

  • 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。

  • JDK8出现的

说明
StringJoiner(间隔符号)创建一个对象,并指定拼接时的间隔符号
StringJoiner(间隔符号,开始符号,结束符号)

创建一个对象,并指定拼接时的

间隔符号,开始符号,结束符号

常用方法: 

方法名说明
add()添加数据,返回对象本身
length()返回长度
toString()返回一个字符串
import java.util.StringJoiner;

public class JoinerTest2 {
    public static void main(String[] args) {
        StringJoiner sj = new StringJoiner(",","[","]");
        sj.add("1");
        sj.add("1");
        sj.add("1");
        sj.add("1");
        sj.add("1");
        System.out.println(sj.length());//11
        System.out.println(sj);//[1,1,1,1,1]
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值