【从零开始学习JAVA | 第八篇】String类

这篇具有很好参考价值的文章主要介绍了【从零开始学习JAVA | 第八篇】String类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

String类:

常见的认识误区:

创建String类:

 注意点:

总结:


【从零开始学习JAVA | 第八篇】String类

前言:

        String类是Java中最常见的一个类,本篇将对Stirng类的各种功能进行详细的介绍,各位小伙伴如果感兴趣可以点击进来观看。

String类:

Java中的String类是一个非常常用的类,它表示一串字符序列。Java的字符串是不可变的,也就是说一旦创建了一个字符串对象,它的值就不能被修改。这种不可变性使得Java字符串非常安全和效率高。

String类被定义在java.lang包下,属于是Java的核心类,因此在使用的时候不需要进行导包操作。

常见的认识误区:

1.字符串拼接不是我们理解的把后面的字符串连接到前面的字符串上!

package com.itheima.demo1;

public class test07 {
    public static void main(String[] args) {
        String s1="123";
        String s2="456";
        
        System.out.println(s1+s2);
    }


}

输出结果:
【从零开始学习JAVA | 第八篇】String类

需要明确的是我们并不是把s2连接到s1后面,而是产生了一个新的字符串,这个字符串存储着s1的字符串与s2字符串连接的结果。也就是说s1与s2进行连接操作时,会产生一个新的字符串s3来存储新的字符串。

【从零开始学习JAVA | 第八篇】String类

 2.我们的赋值操作不是对字符串进行更改!

package com.itheima.demo1;

public class test07 {
    public static void main(String[] args) {
        String s1="123";
       s1="456";

        System.out.println(s1);
    }


}

运行结果:【从零开始学习JAVA | 第八篇】String类

 我们不是对原来的字符串进行更改,而是重新找到一块空间存储字符,并把这个新空间赋值给s1。

【从零开始学习JAVA | 第八篇】String类

 简单的可以概括为不是覆盖而是新建!而在给name进行赋值的时候,也会一共存在两个字符串 “1 2 3”和“4  5  6”。

创建String类:

1.直接赋值:

String name ="123";

 2.利用new关键字进行赋值操作:

String str = new String("123");

        需要注意的是,无论使用哪种方式创建String对象,都会在内存中分配新的堆空间,创建新的对象。而使用直接赋值创建字符串对象时,Java虚拟机会对同一常量池中的字面值进行重用,因此当多个String对象包含相同的字面值时,它们会指向同一个对象实例,从而节省了内存。

例如我们分别利用直接赋值和new关键字创建多个相同的值:

String name1 =“123”;
String name2 =“123”;
String str1 = new String ("123");
String str2 = new String ("123");

内存图解:
【从零开始学习JAVA | 第八篇】String类

JAVA为字符串提供的常见方法:
1.字符串的比较:
字符串的比较(是否相等)需要建立在数据类型相同的情况下,即要么是基本数据类型,要么是引用数据类型。

因为不同的数据类型比较方式不同:
【从零开始学习JAVA | 第八篇】String类

 举例:

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


}

实例:
【从零开始学习JAVA | 第八篇】String类

 我们发现即使S1与S2字符串值一样,但是因为数据类型不同,也无法得到我们想要的答案。

因为不同数据类型的字符串无法进行比较,但是在实际应用中,我们又无法始终保证字符串的数据类型始终一致,这给我们带来了巨大的困难,因此JAVA为我们提供了两个函数:

  • boolean equals(  )完全一样才会是true,否则就是false。
  • boolean equalslgnoreCase(   ) 是忽略大小写的比较。

代码:


public class test07 {
    public static void main(String[] args) {
        String s1="123";
        String s2= new String("123");
        String s3="abc";
        String s4= new String("ABC");
        System.out.println(s1+"与"+s2+"的比较结果为:"+ s1.equals(s2));
        System.out.println(s3+"与"+s4+"的比较结果为:"+ s3.equalsIgnoreCase(s4));
    }


}

 运行结果:

【从零开始学习JAVA | 第八篇】String类

 注意点:

        我们录入的字母即使与我们直接赋值的字符串结果一致,那也不相等,无法利用==号进行判断。

import java.util.Scanner;

public class test08 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字");
        String s1=sc.next();
        
        String s2="abc";
        System.out.println(s1==s2);
    }
}

运行结果:
【从零开始学习JAVA | 第八篇】String类

 这个问题,我们要到java的源码中去寻找答案,我们点击查看next的源码:
这里的底层跳的很深,不断地在深挖函数,因此不建议大家一个人摸索阅读:

在我们连跳七八次之后,就可以看到我们想要的:
【从零开始学习JAVA | 第八篇】String类

 我们可以发现:原来录入键盘数据是用到了 new 关键字,也就是说这个是引用数据类型,那自然无法和我们直接赋值得到的“abc”进行正常比较了。

总结:

        以后如果想对字符串进行比较,那么就不可以直接使用“==”,而是要用JAVA提供给我们的函数。这样才可以得到我们需要的答案。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

【从零开始学习JAVA | 第八篇】String类文章来源地址https://www.toymoban.com/news/detail-497035.html

到了这里,关于【从零开始学习JAVA | 第八篇】String类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CTF 入门指南:从零开始学习网络安全竞赛(第八期)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 CTF比赛是快速提升网络安全实战技能的重要途径,已成为各个行业选拔网络安全人才的通用方法。但是,本书作者在从事CTF培训的过程中,发现存在几个突出的问题:

    2024年02月07日
    浏览(46)
  • 55从零开始学Java55之String字符串的编码

    在上一篇文章中,给大家介绍了 String字符串及其各种常用API方法 ,这些内容并没有什么特别难的地方。但因为String字符串很常用,所以我们在使用它的过程中,可能会面临各种问题, 比如”中文乱码“问题等。那么为什么中文会乱码?我们该怎么解决这个问题?今天会带大

    2024年02月06日
    浏览(71)
  • 从零开始理解Linux中断架构(1)-前言

    前言         前段时间在转行手撸WIFI路由器,搞wifi路由器需要理解网络驱动程序,以太网卡驱动程序,无线WIFI驱动程序,而网卡驱动的关键路径就在中断程序中,需要了解NIC设备驱动程序如何收发数据,为了彻底的知道数据包是如何二层传递上来的,又需要了解一点Lin

    2024年02月09日
    浏览(56)
  • 从零开始学Spring Boot系列-前言

    在数字化和信息化的时代,Java作为一种成熟、稳定且广泛应用的编程语言,已经成为构建企业级应用的首选。而在Java生态系统中,Spring框架无疑是其中最为耀眼的一颗明星。它提供了全面的编程和配置模型,用于构建企业级应用。随着Spring Boot的出现,这一框架变得更加易于

    2024年02月22日
    浏览(59)
  • 第八篇:强化学习值迭代及代码实现

    你好,我是郭震(zhenguo) 前几天我们学习强化学习策略迭代,今天,强化学习第8篇:强化学习值迭代 值迭代是强化学习另一种求解方法,用于找到马尔可夫决策过程(MDP)中的最优值函数。 值迭代 值迭代可以总结为如下几点: 值迭代通过不断迭代更新值函数来逼近最优值

    2024年02月08日
    浏览(43)
  • spring boot学习第八篇:kafka

    目录 1、安装kafka 1.1确认jdk是否安装OK 1.2下载安装kafka 1.3验证kafka 2、连接kafka 3、在java中操作kafka 1、安装kafka 1.1确认jdk是否安装Ok 1.2下载安装kafka 配置 进入该目录下的conf文件夹中。 zoo_sample.cfg是一个配置文件的样本,需要将这个文件复制并重命名为zoo.cfg:    cp zoo_sample.cf

    2024年01月17日
    浏览(53)
  • spring boot学习第八篇:kafka监听消费

    为了实现监听器功能 pom.xml文件内容如下:  application.yml文件内容如下: logback.xml文件内容如下: BackendApplication.java文件内容如下: 然后添加了kafkaConsumerListenerExample.java文件 发到服务器上,启动hmblogs报错,截图如下: Caused by: java.lang.TypeNotPresentException: Type org.springframework.k

    2024年01月19日
    浏览(60)
  • 2023年Java核心技术面试第八篇(篇篇万字精讲)

    目录 十五 . 面向对象的基本要素:封装,继承,多态  15.1 封装: 15.1.1 例子: 15.2 继承 15.2.1 例子 15.3 多态 15.3.1 例子 15.3.2 小结:谈谈多态的继承的联系 十六 . synchronized 和 ReentrantLock 的区别? 16.1 典型回答 16.2 深入理解底层锁的概念 16.2.1 synchronized 16.2.2 ReentrantLock 16.2.2.1

    2024年02月11日
    浏览(41)
  • spring boot学习第八篇:通过spring boot、jedis实现秒单

    参考:Redis实现分布式锁的7种方案 - 知乎 1、 准备数据库表,如下SQL表示库存表,有主键ID和库存数量字段 初始数据id           quantity               1111       9 2、pom.xml文件 3、应用配置文件 4、StockMapper.xml如下 5、BackendApplication 6、Stock.java如下 7、StockMapper 8、OrderContr

    2024年01月19日
    浏览(54)
  • 从零开始的力扣刷题记录-第八十七天

    题目描述: 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1 - 2 - 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。 叶节点 是指没有子节点的节点

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包