Java语法之Scanner类&String类&StringBuilder类&ArrayList类

Java语法之Scanner类&String类&StringBuilder类&ArrayList类

一、Scanner类

1、基础知识

Scanner类在java.util包下

Scanner类:用于获取键盘录入的数据。

Scanner类中的nextline()方法:用于获取键盘录入字符串数据。

public class Main {
    public static void main(String[] args) {
        //创建对象(带参构造方法)
        Scanner sc=new Scanner(System.in);
        //获取键盘输入的数据
        System.out.println("请输入一个字符串数据:");
        //写完sc.nextLine()之后按Ctrl+Alt+V可以自动出现变量接收的提示
        String line = sc.nextLine();
        System.out.println("你输入的数据是:"+line);
    }
}

image-20240119131800260

二、String类

1、基础知识

String类在java.lang包下。(java.lang不需要导包)

String类代表字符串,java中所有的字符串都是String类的对象,即:java程序中所有的双引号字符串都是String类的对象。

2、构造方法

String类有很多种构造方法,常用的几种方法如下:

image-20240119141009126

public class StringDemo {
    public static void main(String[] args){
        //创建空白字符串对象,不含任何内容
        String s1=new String();
        System.out.println("s1"+s1);
        
        //根据字符数组的内容创建字符串对象
        char[] chs={'a','b','c'};
        String s2=new String(chs);
        System.out.println("s2"+s2);
        
        //根据字节数组的内容创建字符串对象
        byte[] bys={97,98,99};
        String s3=new String(bys);
        System.out.println("s3"+s3);
        
        //直接赋值的方式创建字符串对象(推荐使用)
        String s4="abc";
        System.out.println("s4"+s4);
    }
}

3、字符串的比较

equals——>比较的是字符串的内容是否相同。

== ——>比较的是字符串对象地址是否相同。

三、StringBuilder类

1、概述

如果进行字符串的拼接,每次拼接都会构建一个新的String对象,既耗时又浪费内存空间,那么StringBuilder类就可以解决这个问题。

StringBuilder是一个可变的字符串类(可变是指StringBuilder对象中的内容是可变的),相当于一个容器(可以类比于C++里的Vector),往StringBuilder里新增字符的时候不会创建新的对象,这样就拼接时就不需要每次都构造新的String对象。

2、构造方法

image-20240119152301310

public class StringBuilderDemo {
    public static void main(String[] args){

        //创建一个空白的可变字符串对象,没有任何内容
        StringBuilder sb1=new StringBuilder();
        System.out.println("sb1——>"+sb1);
        System.out.println("sb1的长度——>"+sb1.length());

        //根据字符串内容创建可变字符串对象
        StringBuilder sb2=new StringBuilder("hello");
        System.out.println("sb2——>"+sb2);
        System.out.println("sb2的长度——>"+sb2.length());
    }
}

image-20240119165243194

3、添加方法和反转方法

image-20240119165431956

由于append方法可以返回对象本身,所以在添加多个数据的时候可以进行链式添加。

public class StringBuilderDemo {
  public static void main(String[] args){
  StringBuilder sb=new StringBuilder();
  //因为append方法返回对象本身,所以可以继续调用append方法,实现链式添加
  sb.append("this ").append("is ").append("a ").append("text.");
  System.out.println("sb——>"+sb);
      
  //反转方法
  sb.reverse();
  System.out.println("反转sb——>"+sb);
  }
}

image-20240119171056811

4、StringBuilder与String的转换

StringBuilder类中的append()方法和reverse()方法比较好用,但是在String类里没有这两个方法,要想实现这两个方法就必须将String转换成StringBuilder

1、StringBuilder转换为String

使用toString()方法可以实现把StringBuilder转换为String

2、String转换为StringBuilder

通过构造方法就可以把String转换为StringBuilder。

3、举例
public class StringBuilderDemo {
    public static void main(String[] args){
        StringBuilder sb1=new StringBuilder();
        sb1.append("this ").append("is ").append("a ").append("text.");
        //StringBuilder转换成String
        String s1=sb1.toString();
        System.out.println("s1——>"+s1);
        
        String s2="hello";
        //String转换成StringBuilder
        StringBuilder sb2=new StringBuilder(s2);
        System.out.println("sb2——>"+sb2);
    }
}

image-20240119172453057

四、ArrayList

ArrayList< E >

  • 可以调整大小的数组
  • < E >是泛型,就是什么类型都可以,如果是字符串数组就是ArrayList< String >,如果是Student类的数组,就是ArrayList< Student >

(相当于是C++里的Vector容器,但是类型要更多)

image-20240122103639736

image-20240122104939808

import java.util.ArrayList;
public class ArrayListDemo {
    public static  void main(String[] args) {
        //构造方法
        ArrayList<String> array =new ArrayList<>();

        //添加元素
        array.add("this "); //索引0
        array.add("is ");   //索引1
        array.add("text "); //索引2

        //在指定索引位置添加元素
        array.add(2,"a ");
        System.out.println(array);
        //移除某元素
        array.remove("is ");
        System.out.println(array);

        //移除某索引位的元素,返回被移除的元素
        System.out.println(array.remove(2));
        System.out.println(array);

        //修改某索引位的元素,返回被修改的元素
        System.out.println(array.set(0,"oh"));
        System.out.println(array);

        //返回指定索引处的元素
        System.out.println(array.get(1));

        //返回元素个数
        System.out.println(array.size());
    }
}

image-20240122111346761

posted @ 2024-01-23 16:35  6小1  阅读(5)  评论(0编辑  收藏  举报