【JAVA基础】String类概述

简介: 前言:1.String类概述2.创建字符串对象的2种方式3.String常见面试题4.String类常用API-字符串内容比较

前言:


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

Java写好的技术(功能代码),咱们可以直接调用。


Oracle 也为Java提供的这些功能代码提供了相应的 API文档(技术使用说明书) 。

下载API文档:


API文档


String简单介绍


String类定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用。


关于 String 类同学们需要学会什么


1.String类概述


String 概述


java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。


Java 程序中的所有字符串文字(例如“abc”)都为此类的对象。

String name = "滴滴";
String schoolName = "滴滴答答";

String类的特点详解


String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。

    public static void main(String[] args) {
        String name = "热爱";
        name += "编程的";
        name +="小白白";
        System.out.println(name);
    }

从上述代码可以看出字符串变量name指向的字符串对象,那为何还说字符串不可变呢?


字符串对象存在哪里?


以“”方式给出的字符串对象,在字符串常量池中存储。

String是不可变字符串的原因?


String变量每次的修改其实都是产生并指向了新的字符串对象。


原来的字符串对象都是没有改变的,所以称不可变字符串。


2.创建字符串对象的2种方式


方式一:直接使用“”定义。(推荐方式)

String name = "热爱编程的小白白";

方式二:通过String类的构造器创建对象。


构造器 说明


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


public String(String original) 根据传入的字符串内容,来创建字符串对象


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


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



有什么区别吗?(面试常考)


以“”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份。


通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。

String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // true
char[] chs = {'a', 'b', 'c'};
String s3 = new String(chs);
String s4 = new String(chs);
System.out.println(s3 == s4); // false

通过“”定义字符串内存原理 通过new构造器得到字符串对象字符串对象的特点有哪些?


双引号创建的字符串对象,在字符串常量池中存储同一个。


通过new 构造器创建的字符串对象,在堆内存中分开存储。


3.String常见面试题



代码如下(大家可以运行测试一下):

 public static void main(String[] args) {
            String s2 = new String("abc");
            String s1 = "abc";
            System.out.println(s1 == s2);
        }


 代码如下(大家可以运行测试一下):

   public static void main(String[] args) {
            String s1 = "abc";
            String s2 = "ab";
            String s3 = s2 + "c";
            System.out.println(s1 == s3);
        } 
public static void main(String[] args) {
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2);
}

4.String类常用API-字符串内容比较


字符串的内容比较

  public static void main(String[] args) {
                String sysLoginName = "itheima";
                Scanner sc = new Scanner(System.in);
                System.out.println("请您输入您的登录名称");
                        String loginName = sc.next();
                System.out.println(sysLoginName == loginName);
    }


结论:字符串的内容比较不适合用“==”比较。


字符串的内容比较


推荐使用String类提供的“equals”比较:只关心内容一样即可


方法名 说明


public boolean equals (Object anObject) 将此字符串与指定对象进行比较。只关心字符内容是否一致!


public boolean equalsIgnoreCase (String anotherString) 将此字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致!


equals

 public static void main(String[] args) {
                String sysLoginName = "itheima";
                Scanner sc = new Scanner(System.in);
                System.out.println("请您输入您的登录名称");
                        String loginName = sc.next();
                System.out.println(sysLoginName.equals(loginName));
    }

equalsIgnoreCase

    public static void main(String[] args) {
                String sysLoginName = "itheima";
                Scanner sc = new Scanner(System.in);
                System.out.println("请您输入您的登录名称");
                        String loginName = sc.next();
                System.out.println(sysLoginName.equalsIgnoreCase(loginName));
    }

因为,equalsIgnoreCase忽略大小写比较字符串。所以我把其中的字母改成大写,两字符比较仍然得到true


相关文章
|
2月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
209 101
|
2月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
268 100
|
28天前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
79 4
|
1月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
131 5
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
114 1
|
1月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
174 1
|
1月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
124 1
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
126 1
|
1月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
216 5
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
865 37