==和equals判等、空串和null串、字符串常用API

💡涉及的知识点速通

  • 🛫 关于变量和常量你都知道啥?
  • 🛫 &和&&、|和||有什么区别?
  • 🛫 关于字符串的问题你能答对几道?
    • 🪂 可以修改一个字符串中的值吗?
    • 🪂 字符串使用==和equals判等的区别?
    • 🪂 空串""和null串有啥区别?
    • 🪂 这些String的常见API你都掌握了吗?
    • 🪂 String StringBuilder StringBuffer都是啥?

  各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚

扎哇太枣糕的博客首页
在这里插入图片描述

🛫 关于变量和常量你都知道啥?

变量
首先,变量的声明遵循以下规范:

  • 只能包含字母、数字、美元符(“$”)、下划线(“_”),但是不能以数字开头,且"$“和”_"并不推荐在命名的时候使用
  • 不能使用Java中的保留字
  • 变量的命名区分大小写
  • 虽不强制要求,但是尽量使用小驼峰(第一个单词首字母小写其他单词的首字母大写)命名

  其次,Java支持一次声明多个变量但并不提倡,因为这种形式会降低程序的可读性(int i, j;),可以使用逐一声明的形式,而且变量的声明要尽可能的靠近变量第一次使用的地方
  最后,变量声明之后还必须要进行初始化才能使用,否则会编译器就会认为这个变量的使用是非法的。变量的初始化有三种机制:

  • 构造器:Java中如果没有在构造器中显式的为字段设置初始值的话,就会将其设置成默认值,也就是不同数据类型数据所对应的默认值
  • 显式赋值:也就是最常见的使用等于号
  • 初始化代码块:Java中将类中使用花括号包裹起来的几行代码称为是初始化代码块,初始化代码块随着类的加载而加载,只要构造这个类的对象就会执行这个块里的代码。而且初始化代码块中的代码会在main方法之前执行,初始化代码块中定义的变量和构造器一样有默认值机制

  类变量(static修饰的变量)、实例变量可以使用构造器、显式赋值和初始化块三种机制进行初始化,但是局部变量则只能也必须使用赋值语句进行显式初始化。在这里插入图片描述常量
  Java中常量必须在main方法的外部使用final进行定义,常量定义的时候必须进行初始化,一旦初始化之后就无法改变值的大小,且常量的命名必须全部大写。在这里插入图片描述静态变量和静态常量
  静态变量也叫类变量是使用static修饰的变量,静态变量属于类而不属于任何单个的对象,也就是说即使不创建该类的对象这个静态变量依然存在,不管创建多少个对象都是共享这一个静态变量。非静态变量也就是实例变量就不一样了,实例对象属于对象,必须使用对象调用无法直接调,每创建一个对象都会得到一个实例变量的副本,不同对象之间互不影响在这里插入图片描述  静态常量的使用频率要明显高于静态变量,在静态常量定义的时候往往都会加上final修饰,这样的话它既可以被其他类直接使用类名调用,又不用担心字段值被调用后随意修改产生的安全问题。之前输出语句的时候使用的out就是一个final修饰的PrintStream类型的静态常量,PrintStream类里又内置了print、println、printf等方法用于输出

🛫 &和&&、|和||有什么区别?

  &(逻辑与)和(逻辑或)是逻辑运算符,&&(短路与)和||(短路或)是短路逻辑运算符。这两种运算符对应的的运算结果相同,与运算的话是全真为真、有假则假,或运算的是全假为假、有真则真。两种类型的运算符区别在于:逻辑运算符会执行完左右两边的表达式之后返回一个结果,短路逻辑运算符当能够得到结果的时候就会直接返回,也就是说短路与的左边结果为false就会直接返回false,短路或的左边结果为true就会直接返回true
在这里插入图片描述  补充一种进行位移运算的位运算符,位移运算就是对一个数值的二进制表示进行左右移动的运算,其中>>表示右移高位符号位补充,<<表示左移低位补0,>>>则是右移高位补0,注意:并没有<<<这个运算符

🛫 关于字符串的问题你能答对几道?

🪂 可以修改一个字符串中的值吗?

  不能。因为Java中字符串并不是内置的数据类型,而是标准Java类库中提供的一个预定义类。字符串不只一种使用new的实例化方式,使用双引号(“”)括起来的字符都是String类的一个实例,使用new方式实例的对象对分配在堆内存中,使用双引号实例的对象在常量池中,字符串变量的值则是字符串对象的地址引用,不管使用哪种方式给字符串变量重新赋一个新值都是看上去改变了这个字符串的值,实际上只不过是改变了变量值的地址引用,原来的字符串对象还在内存中存储且值不变
在这里插入图片描述  由上图就得以验证我们之前的结论是正确的,使用双引号实例化的字符串对象存储在字符串常量池中,所以连续创建两个内容相同的字符串会指向同一个地址。而且使用new实例化的字符串对象存储在堆内存中,所以说使用两种方式实例化内容相同的字符串对象,地址会不同。接下来的三种方式改变字符串的内容,地址都和原地址不同,也就是证实了字符串是一个不可变的数据类型

🪂 字符串使用==和equals判等的区别?

  ==是对两个字符串变量的引用地址值是否相等进行判断,就算字符串的内容相等如果存储的位置不同也会返回false。String类中重写了Object的equals方法使之可以对字符串的内容进行判等,查看源码不难发现重写之后的equals方法是对两个字符串的地址、长度、每一个字符顺序进行判断,在判断的过程中但凡有一个不等就直接返回false。
在这里插入图片描述  趁热打铁,结合字符串的两种实例化方式和两种判等方式找几个题做做,答案放在文末了,记得去对照一下在这里插入图片描述  补充一个知识点,如果想忽略字母大小写比较两个字符串的内容是否相等,可以使用equalsIgnoreCase方法,用法与equals相同

🪂 空串""和null串有啥区别?

  空串是一个长度为0内容为空的字符串,属于是一个字符串对象;null串表示这个变量并未引用任何的对象或者基本数据类型值,属于是一个供引用数据变量引用的值。空串引用String的API 会返回值,但是null串调用String的API 的话会报NullPointerException的错误。一般情况下都会使用if(str != null && str.length() != 0)对字符串进行检查,符合条件才会使用这个字符串。
在这里插入图片描述

🪂 这些String的常见API你都掌握了吗?

在这里插入图片描述  拓展一个compareTo方法,该方法会对比两个字符串并返回一个int数值,对比规则:从第一个字符开始相比较,返回第一个不同的两个字符的ASCII码的差值(前减后),如果说一个字符串是另一个的字串就返回二者的长度差在这里插入图片描述

🪂 String StringBuilder StringBuffer都是啥?

  这三种都是Java中用来操作字符串的类。区别就是String声明一个不可变的对象,每次操作都会生成一个新的对象,并将新的对象地址赋给原来的字符串变量,而StringBuilder和StringBuffer都是在原来的对象上进行操作并不会产生新的对象,所以说在需要经常改变字符串内容的情况下最好使用这两种类。在这里插入图片描述  StringBuilder和StringBuffer也是有区别的,StringBuffer线程安全但是性能相对较差,StringBuilder线程不安全但是性能较高,于是单线程的情况下推荐使用StringBuilder,多线程的话就使用安全的StringBuffer


字符串的两种实例化方式和两种判等方式的问题答案在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

俩台电脑怎么设置同一局域网_方法 | 把手机上的照片传到电脑上

我想把手机上的照片/视频传到电脑上怎么办? 什么云盘&#xff0c;手机助手等等全扔到一边去&#xff0c;不用。请让我慢慢道来&#xff1a;现在&#xff0c;人们手机用的越来越多&#xff0c;即使在大街上&#xff0c;到处都是“低头族”。但是&#xff0c;有好多小伙伴问&…

数据持化技术的发展演变(SQL、JDBC、mybatis)

文章目录1 简单SQL语句1.1 查询1.2 新增1.3 修改1.4 删除1.5 多表查询2 JDBC2.1 什么是JDBC2.2 什么是jar和maven2.3 JDBC的使用2.4 JDBC总结3 mybatis3.1 什么是ORM?为什么是ORM不是JDBC&#xff1f;3.2 mybatis的使用3.3 mybatis总结4 mybatis与jdbc的逻辑相同处环境配置 j…

传统蒙文字体_蒙古要改回使用传统回鹘蒙文,这是种什么文字,蒙古为什么要改回...

喜欢就点关注吧!文字是一个国家的文化象征&#xff0c;也是其书面交流的主要工具&#xff0c;世界上的大多数国家都有自己独特的文字&#xff0c;我们的邻国蒙古也是如此&#xff0c;近日蒙古国实行了一场意义重大的文字改革&#xff0c;据新华社乌兰巴托3月18日报道&#xff0…

三态输出门实验报告注意事项_数电基础知识:各种IO输出的类型

集电极开路(OC)集电极开路输出的结构如图1所示&#xff0c;右边的那个三极管集电极什么都不接&#xff0c;所以叫做集电极开路&#xff1b;左边的三极管为反相之用&#xff0c;使输入为“0”时&#xff0c;输出也为“0”。对于图 1&#xff0c;当左端的输入为“0”时&#xff0…

数据持久化技术——MP

文章目录1 环境搭建1.1 创建一个maven的project1.2 pom.xml文件导入web开发依赖1.3 创建SpringBoot项目的主程序入口2 代码生成器3 配置数据库4 导入前端页面5 开始前端控制器的编码5.1 wrapper构造器mybatis-plus(简称 MP)是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基…

win7无法连接打印机拒绝访问_如何解决局域网无法访问SQL Server 2008 无法连接到(local)...

初次安装使用SQL server 2008时&#xff0c;可能会遇到无法连接到(local)的情况。那么&#xff0c;如何解决此问题&#xff1f;工具/原料: SQL server 2008方法/步骤1. 打开SQL server 配置管理器-->SQL server 网络配置-->实例名的协议(我的实例名为SQLEXPRESS)。2. 将S…

windows进程管理器_任务管理器就能搞定9成的电脑问题?方法在这里!

90% 对于电脑的不满&#xff0c;都逃不出这几个方面&#xff1a;电脑状态无法随时监测、运行卡顿、开机时间长、莫名黑屏、电池关键时刻不扛使(笔记本电池怎么保养&#xff1f;能不能一直插电源充电&#xff1f;可以戳这里→)&#xff0c;很多小伙伴就选择安装第三方软件来解决…

三维网格精简算法java版_ISMAR 2020 | 商汤提出手机端实时单目三维重建系统

导读&#xff1a;商汤研究院和浙江大学CAD&CG国家重点实验室合作研发了一个手机端实时单目三维重建系统Mobile3DRecon。与现有的基于RGBD的在线三维重建或离线生成表面网格的系统不同&#xff0c;该系统结合前端位姿跟踪结果&#xff0c;允许用户使用单目摄像头在线重建场景…

【分类汇总】idea快捷键、idea配置、常用插件

写在前面 千万别看目录很长就感觉本篇博客很絮叨繁琐&#xff0c;里面多是配置的讲解贴了很多的图片方便大家了解&#xff0c;配置成功一次之后就可以一直使用了。 快捷键的使用建议大家先看&#xff0c;后续敲代码的时候刻意的使用快捷键&#xff0c;相信经过两三天的使用就可…

win10设置默认输入法_个性化设置技巧

个性化设置技巧子墨居士前言本次内容主要是win10系统自带的功能&#xff0c;不是用第三方软件优化桌面的情况下&#xff0c;让自己的电脑桌面能更美观、更舒服。系统自身的个性化设置主要是下图中的几个。鼠标右击->个性化设置。 第三方软件的效果会更好&#xff0c;毕竟是专…

什么叫组网_家庭wifi,如何组网最合适

wifi信号通过电磁波在空中传播的&#xff0c;属于微波通信的一种&#xff0c;因为微波本身及发射功率的限制&#xff0c;导致wifi的穿透能力比较差&#xff0c;北方比较厚的承重强&#xff0c;铁门、家具等对都会对wifi信号有较强的削弱作用。穿过的障碍物越多&#xff0c;这种…

java输入输出、数组初始化

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于输入输出你都知道啥?&#x1f6eb; 关于控制路程都需要注意啥?&#x1f6eb; 关于数组的问题你能答对几道&#xff1f;&#x1fa82; 数组初始化的小细节你都知道吗?&#x1fa82; 这些Arrays的常见API你都掌握了吗?&#…

linux rm 命令删除文件恢复_Linux之恢复误删除文件

前言每当我们在生产环境服务器上执行rm命令时&#xff0c;总是提心吊胆的&#xff0c;因为一不小心执行了误删&#xff0c;然后就要准备跑路了&#xff0c;毕竟人不是机器&#xff0c;更何况机器也有 bug。那么如果真的删除了不该删除的文件&#xff0c;比如数据库、日志或执行…

java三大特征 重载与重写的区别

&#x1f4a1;涉及的知识点速通&#x1f6eb; OOP的三大特征都是什么?&#x1fa82; 什么是封装?&#x1fa82; 什么是继承?&#x1fa82; 什么是多态?&#x1f6eb; 关于构造器你都知道什么?&#x1f6eb; 关于类的源文件都需要知道什么?&#x1f6eb; 重载和重写都是什…

发生身份验证错误_Python MySQL8.0 错误

Python MySQL8.0 错误&#xff1a;authentication plugin calling_sha2_password is not supported.Python3 进行到 python3 mysql(mysql-connector)&#xff0c;然后安装mysql-8.0.16&#xff0c;照着示例程序运行 python&#xff0c;遇到这个大大的问题&#xff1a;authentic…

vue 获取当前元素的父元素_react获取触发元素的属性 e.target.dataset

我的react项目中一个应用场景就是在点击一个元素的时候想要获取到这个元素的属性。代码如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//点击标签的时候触发的函数 TagClick(e)>{console.log…

为什么要学Redis(NoSQL数据库)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

centos常用命令_二、Docker镜像是什么?Docker常用命令

科技奇闻 关注让你我共同进步文章来源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.帮助命令docker version #查看版本号docker info #显示Docker系统信息&#xff0c;包括镜像和容器数docker --help #查看Docker有哪些命令…

实现定时中断_无线传感器网络实验报告(二)Timer定时应用实验

实验二&#xff1a; Timer定时应用实验2.1实验目的1. 认识并了解 CC2530 定时器&#xff1b; 2. 学习定时器的基本配置与应用&#xff1b; 3. 在 ZigBee 模块上运行定时器程序。2.2实验原理根据数据手册可知 CC2530 总共有 4 个定时器&#xff0c;但是定时器 2 被系统占用&…

详析java中的关键字和权限修饰

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于关键字你都知道什么?&#x1fa82; this和super关键字&#x1fa82; instanceof关键字&#x1fa82; static关键字&#x1fa82; final关键字&#x1f6eb; 权限修饰符的作用范围知多少?各位小伙伴们大家好&#xff0c;欢迎来…