Java基础 | 字符串(上)

简介: 字符串

字符串

(一)API

1.概述

API(Application Programming Interface):应用程序编程接口

Java API :指的就是JDK中提供的各种功能的Java类

这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用


2.帮助文档的使用方法

(1)打开帮助文档

(2)找到索引选项卡中的输入框

(3)在输入框中输入Random

(4)看类在哪个包下

(5)看类的描述

(6)看构造方法

(7)看成员方法



(二)String

1.概述

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

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


2.String类的特点

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

    注:JDK8及以前是字符串数组,JDK9及以后是字节数组


3.String构造方法

image-20211225191937559

代码演示:

         //创建一个空白字符串对象,不含有任何内容
        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);

        //直接赋值的方式创建字符串对象,内容就是abc
        String s4 = "abc";
        System.out.println("s4:" + s4);

4.String对象的特点

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

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

代码演示(比较两字符串的地址值是否相同)

//构造方法的方式得到对象
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
System.out.println(s1 == s2);   // false
//直接赋值的方式得到对象
String s3 = "abc";
String s4 = "abc";
System.out.println(s3 == s4);   // ture
//比较字符串地址值是否相同
System.out.println(s1 == s3);   // false

5.字符串比较

使用==做比较

  • 基本类型:比较的是数据值是否相同
  • 引用类型:比较的是地址值是否相同

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

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

代码演示(比较两字符串的内容是否相同)

//构造方法的方式得到对象
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);

//直接赋值的方式得到对象
String s3 = "abc";
String s4 = "abc";

//比较字符串内容是否相同
System.out.println(s1.equals(s2));  // true
System.out.println(s1.equals(s3));  // true
System.out.println(s3.equals(s4));  // true

6.案例

(1)用户登录

image-20211225205010644

代码实现:

public class String_UserLogin {
    public static void main(String[] args) {
        String usename = "admin";
        String password = "admin";

        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String name = sc.nextLine();
            System.out.println("请输入密码:");
            String psd = sc.nextLine();

            if (usename.equals(name) && password.equals(psd)) {
                System.out.println("登陆成功!");
                break;
            } else {
                if(i == 2){
                    System.out.println("你的次数已用尽,请与管理员联系!");
                } else {
                    System.out.println("登陆失败,你还有" + (2 - i) + "次机会");
                }
            }
        }
    }
}

(2)遍历字符串

image-20211225205306218

代码实现:

public class String_traversal {
    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));
        }
    }
}

(3)统计字符字数

image-20211225210459355

代码实现:

public class String_countNumber {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一组字符串:");
        String line = sc.nextLine();

        //定义三个变量 并赋初始值为0
        int BigCount = 0;
        int SmallCount = 0;
        int NumberCount = 0;

        //循环遍历字符串
        for (int i = 0; i < line.length(); i++) {
            int ch = line.charAt(i);
            if (ch >= 'A' && ch <= 'Z') {
                BigCount++;
            } else if (ch >= 'a' && ch <= 'z') {
                SmallCount++;
            } else if (ch >= '1' && ch <= '9') {
                NumberCount++;
            }
        }
        //输出统计的数据
        System.out.println("大写字母:" + BigCount + "个");
        System.out.println("小写字母:" + SmallCount + "个");
        System.out.println("数字:" + NumberCount + "个");
    }
}

(4)拼接字符串

image-20211225212404999

代码实现:

public class String_Splice {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        String s = arrToString(arr);
        System.out.println(s);
    }

    public static String arrToString(int[] arr) {
        String s = "";

        s += "[";
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                s += arr[i];
            } else {
                s += arr[i] + ", ";
            }
        }
        s += "]";
        return s;
    }
}
(5)字符串反转

image-20211225214019341

代码实现:

public class String_reverse {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一组字符串:");
        String line = sc.nextLine();

        String s = Reverse(line);
        System.out.println(s);
    }

    public static String Reverse(String line) {
        String s = "";

        for (int i = line.length() - 1; i >= 0; i--) {
            s += line.charAt(i);
        }

        return s;
    }
}
目录
相关文章
|
27天前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
101 60
|
17天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
36 6
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
73 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
52 15
|
2月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
50 4
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
3月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
52 3
|
3月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
18 2
|
3月前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
24 2
|
3月前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
773 4
下一篇
无影云桌面