Java:API&字符串

API:应用程序编程接口

简单理解:API就是别人已经写好的东西,不需要我们自己编写,直接使用即可。

Java API:JDK中提供各种功能Java类

这些类将底层实现封装起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。如:Scanner  键盘录入  Random  随机数

字符串

字符串与任意类型相加,此时不是进行算术运算符的"+"操作,而是都进行拼接操作,拼接形成新的字符串

"ab" + true = "abtrue"

"ab" + 666 = "ab666"

String概述:

String类代表字符串,在Java.lang包下,Java程序中所有的字符串文字都为此类对象。

String注意点:

字符串的内容是不会发生改变的,他的对象在创建之后不能被更改。

创建String对象的两种方式:

1.直接赋值 

2.new

        //1.使用直接赋值的方式获取一个字符串对象
        String s1 = "abc";
        System.out.println(s1);//abc

        //2.使用new的方式来获取一个字符串对象
        //空参构造:可以获取一个空白的字符串对象
        String s2 = new String();
        System.out.println("!" + s2 + "$");//""

        //传递一个字符串,根据传递字符串的内容再创造一个新的字符串对象
        String s3 = new String("abc");
        System.out.println(s3);//abc

        //传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
        //需求:修改字符串内容。 abc  Abc
        //"abc" --> {'a','b','c'} --> {'A','b','c'} --> "Abc"
        char[] ch = {'a','b','c'};
        String s4 = new String(ch);
        System.out.println(s4);//abc

        //传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象
        //应用场景:以后在网络中传输的数据其实都是字节信息
        //我们一般要把字节信息进行转换,转成字符串,此时就用到这个构造了
        byte[] bytes = {97,98,99};
        String s5 = new String(bytes);
        System.out.println(s5);//abc

创建String对象内存分析

栈内存:方法运行时进栈,执行完毕后出栈

堆内存:new出来的对象都在这里

StringTable(串池):在堆内存之中,只能存储直接赋值的字符串对象,字符串对象通过new关键字获得的要存储在堆内存之中

方法区:class字节码文件临时存储

两种方式创建字符串对象内存区别

直接赋值:当使用直接赋值的方式创建字符串时,系统首先会检查该字符串在串池中是否存在。

存在:复用

不存在:在串池中创建新的

对于字符串的创建以后更多的会使用直接赋值的方式,这样不仅代码书写简单,而且节约内存。

new:当使用new新建对象时,都会在堆内存中重新开辟一个空间存储新建对象,不会被复用。

字符串的比较

==号比较的是什么?

//基本数据类型
int a = 10;
int b = 10;
System.out.println(a == b);//true

//引用数据类型
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2);// false

基本数据类型比较的是数据值

引用数据类型比较的是地址值

字符串比较

boolean  equals(要比较的字符串) 完全一样为true,否则为false
boolean  equalslgnoreCase(要比较的字符串)忽略大小写的比较
        //比较两个字符串对象
        String s1 = new String("abc");
        String s2 = "abc";
        String s3 = "Abc";

        //不忽略大小写比较
        boolean result1 = s1.equals(s2);
        System.out.println(result1);//true

        //忽略大小写的比较
        boolean result2 = s1.equalsIgnoreCase(s3);
        System.out.println(result2);//true

扩展

        //键盘录入一个abc
        Scanner sc = new Scanner(System.in);
        String s1 = sc.next();
        //代码中再定义一个字符串abc
        String s2 = "abc";
        //用==比较,二者是否一样?
        System.out.println(s1 == s2);//false

键盘录入得到的字符串是通过new获得的

结论:要比较字符串的内容,就必须通过String里面的方法

遍历字符串

public  char  charAt(int index)根据索引返回字符
public  int  length()返回字符串的长度

数组的长度:数组名.length

字符串的长度:字符串对象.length()

        //键盘录入一个字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.next();
        //循环遍历
        for (int i = 0; i < str.length(); i++) {
            //i 依次表示字符串每一个索引
            char c = str.charAt(i);
            System.out.println(c);
        }

截取字符串

String  substring(int beginIndex,int endIndex)截取
String  substring(int beginIndex)截取到末尾

注意点:包头不包尾,包左不包右

              返回值是截取的字符串

        //获取一个手机号
        String phoneNumber = "13512394157";
        //截取手机号码前面三位
        String start = phoneNumber.substring(0, 3);
        //截取手机号码后面四位
        String end = phoneNumber.substring(7);
        String result = start + "****" + end;
        System.out.println(result);//135****4157

字符串替换

String  replace(旧值,新值)  替换

注意点:只有返回值才是替换后的结果

        //获取一个字符串
        String str = "你玩的真好,TMD";
        //将TMD替换为***
        String result = str.replace("TMD", "***");
        System.out.println(result);//你玩的真好,***
        //获取一个字符串
        String str = "你玩的真好,TMD,CBV";

        //定义敏感词库
        String[] arr = {"TMD","CNN","CBV","DFG"};

        //将敏感词替换为***
        for (int i = 0; i < arr.length; i++) {
            str = str.replace(arr[i], "***");
        }
        System.out.println(str);//你玩的真好,***,***

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值