String、StringBuilde、ArrayList<E>

字符串

API:应用程序编程接口;

javaApI:指的是JDK中提供的各种功能的java类

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        //创建对象
        Scanner sc = new Scanner(System.in);

        //接收数据
        System.out.println("请输入一个字符串数据");

        String line = sc.nextLine();
        //ctrl + alt + v快速生成
        //输出结果
        System.out.println("你输出的结果是:"+line);
    }
}

String概述:

String类在java.lang包下,所以使用时不需要导包;

String类代表字符串,java程序中的所有字符串文字都被实现为此类的实例,也就是说,java程序中所有的双引号字符串,都是String类的对象

字符串特点:字符串不可改变,他的在创建后不能被更改;虽然String的值是不可改变的但是它们可以被共享;字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[]).

string构造方法:

public String(); 创建一个空白字符串对象,不含有任何内容;

public String(char[]  chs);根据字符数组的内容,来创建字符串对象;

public String(byte[] bys);根据字节数组的内容,来创建字符串对象

String s = "adc";直接复制的方式创建字符串对象,内容就是abc

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    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 = "adc";直接复制的方式创建字符串对象,内容就是abc
        String s4 = "abc";
        System.out.println("s4:"+s4);

    }
}

推荐使用直接赋值

String对象的特点

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

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

字符串的比较

使用==作比较

基本类型:比较的是数据值是否相同

引用类型:比较的是地址值是否相同

字符串是对象,他比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()

public boolean equals(Object anObject);将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递一个字符串

例:s3.equals(s4);

遍历字符串

public char chaAt(int index);返回指定索引处的char值,字符串的索引也是从0开始

public int length();返回此字符串的长度

数组的长度:数组名.length

字符串长度:字符串长度.length

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
      //录入一个字符串
        Scanner sc =new Scanner(System.in);
        System.out.println("输入一个字符串:");
        String line = sc.nextLine();
        //获取字符串中每个字符
        for (int i=0;i<line.length();i++){
            System.out.println(line.charAt(i));
        }

    }
}

统计字符次数

大写字母:ch>'A'&&ch<'Z'

小写字母:ch>'a'&&ch<'z'

数字:ch>'0'&&ch<'9'

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
      //录入一个字符串
        Scanner sc =new Scanner(System.in);
        System.out.println("输入一个字符串:");
        String line = sc.nextLine();
        //获取字符串中每个字符
        int bigCount = 0;
        int smallCout = 0;
        int numberCout = 0;
        int elseCout = 0;

        for (int i=0;i<line.length();i++){
//            System.out.println(line.charAt(i));
            //统计字符串中三种字符个数
            if (line.charAt(i)>='A'  &&  line.charAt(i)<='Z'){
                bigCount++;
            }else if (line.charAt(i)>='a' && line.charAt(i)<='z'){
                smallCout++;
            }else if (line.charAt(i)>='0'&&line.charAt(i)<='9'){
                numberCout++;
            }else{
                elseCout++;
            }
        }
        System.out.println(bigCount);
        System.out.println(smallCout);
        System.out.println(numberCout);
        System.out.println(elseCout);

    }
}

StringBUilder是一个可变的字符串类,我们可以把它看成是一个容器这里的可变指的是StringBuilder对象中的内容是可变的

String内容不可变

StringBuilder内容可变(解决String占用空间过多的问题)

    • StringBuilder​()

      构造一个没有字符的字符串构建器,初始容量为16个字符。

    • StringBuilder​(String str)

      构造一个初始化为指定字符串内容的字符串构建器。

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder();
        //链式编程
        s.append("java").append(100).append('A');
        System.out.println(s);
        System.out.println(s);


    }
}

StringBuilder和String相互转换

public String toString();通过toString()就可以实现把StringBuilder转换为String

public StringBuilder(String s);通过构造方法就可以实现把String转换为StringBuilder

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder();
        //链式编程
        s.append("java").append(100).append('A');
        //Stringbuilder转换String
        String s1 = s.toString();


        //String转换Stringbuilder
        String s2 = "hello";
        StringBuilder s3 = new StringBuilder(s2);
    }
}

字符串反转

package itheima;

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
        System.out.println("输入一个字符串:");
        String line = sc.nextLine();
        String s3 = myreserve(line);
        System.out.println("反转:"+s3);

    }
    public static String myreverse(String s) {
        StringBuilder ss = new StringBuilder(s);
        StringBuilder s2 = ss.reverse();
        String s1 = s2.toString();
        return s1;
//可替代
       return new StringBuilder(s).reverse().toString;

    }
}

集合基础

集合概述:集合类 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变

ArrayList<E>:1.可调整大小的数组实现2.<E>是一种特殊的数据类型,泛型。

例:ArrayList<String>   ArrayList<Student>    

构造方法:

public ArrayList(); 创建一个空的集合对象

添加方法:

public boolean add(E e);将指定的元素追加到刺激和的末尾

public void add(int index,E element);在集合中的指定位置插入指定的元素

package itheima;
import java.util.ArrayList;

public class ScannerDemo {
    public static void main(String[] args) {
        ArrayList<String>arr = new ArrayList<String>();
        arr.add("java");
        arr.add("100");
        System.out.println(arr);
        arr.add(1,"se");
        System.out.println(arr);


    }
}
    • boolean remove​(Object o)

      从列表中删除指定元素的第一个出现(如果存在)。

    • E remove​(int index)

      删除该列表中指定位置的元素。

    • E set​(int index, E element)

      用指定的元素替换此列表中指定位置的元素。

    • E get​(int index)

      返回此列表中指定位置的元素。

    • int size​()

      返回此列表中的元素数。

猜你喜欢

转载自blog.csdn.net/qq_45771360/article/details/121878950