在程序开发中,我们最常用的就是字符串,我们经常声明或初始化各类字符串。

  • 针对String 类型的字符串,a=null,说明其不指向内存区任何一个字符串,但是a=“”不同,其指向内存中常量中的一个空的字符串,所以本质上,这俩a 就是不同的。
  • 如果你Debug 业务代码时,仔细观察,你会发现,每一个对象都有一个唯一标识,这个标识其实就是hashCode(栈中存储指向堆的一个地址) ,你可以看下,只要你用到new 关键字了,即便其对象初始化的值一样,那也是两个对象。
  • new String("对象");这个语句创建对象的数量,完全取决于JVM 中常量池里是否有“对象”这个值,如果没有,其会在堆中创建一个对象的同时,也会在常量池中创建一个对象,并从栈指向堆,再由堆指向常量区。
  • “==”运算符在我们开发业务代码时,用来比较基本数据类型是否相同的常用方法。如果是字符串的话,这种方式就比较蠢了,毕竟这个运算符比较的是的是引用变量,而两个相同字符串的引用变量未必是一样的。
  • 如果你想比较字符串真正的值是否相等的话,用equals 方法实际上再好不过了,但都是有前提的,Object 类中的equals ,你跟下源码读一下,方法里面就是用的“==”运算符,但是有一点你要知道,就是父类中方法是可以被子类重写的,所以我们在用equals 比较两个字符串的值是否相等时,用的都是重写后的方法。
  • Object 类中还有一个hashCode() 方法,用来生成hashCode值得,如果不重写这个方法的前提下,任何对象由hashCode()从内存中地址转换成的那个int 值,都是唯一的。
  • 开发业务代码的时候,我们一般用不上这个方法的,唯一用到点的就是HashMap,我们Map 中的Key 都是唯一的,即便是空串,Key 之所以不可重复,底层就是用到了这equals方法和hashCode()方法,而且只要有其中一个方法比较出来不同,就认为这个key是不同的,即便其看起来一样。

qstring 字符相同 不相等_我的编程手册 -- Java 基础篇·字符串 String相关推荐

  1. 八门神器java版本_【修改教程】java基础知识字符串处理_八门神器

    [Java基础知识]字符串处理1.获取字符串的长度 String s = "AIDE"; System.out.println(s "长度为:" s.lengt ...

  2. 《跟我学java》_《跟我学Java——基础篇02》

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2. Java中的注释: a) 什么是注释: i. 我们的Java代码都是用英文编写的,一旦功能比较复杂,那么就没那么容易看懂,所以有的时候我们需要写一些 ...

  3. php 两个单词 正则表达式字符前_【阅读整理】正则表达式 - 基础篇

    前言 大家学生时代在数学卷子上的填空题,可能会遇到这样的找规律题目,比如最简单的等差数列: 已知数列:1,5,9,13,17-,求该数列的表达式是 ___________ 答案是显而易见的:4*n-3 ...

  4. java字符流字节流场景_【120期】Java IO:字节流、字符流、缓冲流

    IO流是Java中的一个重要构成部分,也是我们经常打交道的.这篇关于Java IO的博文干货满满,堪称全网前三(请轻喷!) 下面几个问题(问题还会继续补充),如果你能对答如流,那么恭喜你,IO知识掌握 ...

  5. js 获取中括号里面字符串_西门子SCL编程入门教程连载(18)——字符串

    今天这篇文章,我们来聊聊西门子S7系列PLC的一种数据类型--字符串. 本文包括如下几个主题: 什么是字符串: 怎样声明字符串变量: 怎样给字符串变量赋值: 1.什么是字符串 字符串(string)是 ...

  6. 全民一起玩python视频_全民一起玩Python之基础篇,视频教程下载

    课程介绍: "全民一玩Python"系列由杨洋博士精心制作,面向所有希望学习Python编程.进而能够在学习和工作中编写办公自动化.网页信息提取.数据分析处理.人工智能应用.娱乐游 ...

  7. mysql 十八哥_十八哥Mysql笔记之基础篇

    连接Mysql服务器 注意 :-h指的是host地址 :-u指的是user, 之所以打到-p回车再输入密码,是为了防止密码泄露 如果-h不写则默认是localhost ★服务器à数据库 databas ...

  8. 传智播客java基础的习题_传智播客java基础班(集合与IO)阶段测试题

    本帖最后由 zhaodecang 于 2016-6-8 19:38 编辑 单选题:(每道题目2分) 1. ArrayList类的底层数据结构是(    ) a) 数组结构b) 链表结构  c) 哈希表 ...

  9. [Java基础]判断字符串指定字符类型

    Character.isDigit(string.charAt(index)) //如果index位置的字符是数字  返回true Character.isLetter(string.charAt(i ...

最新文章

  1. 紫色回归线:雅虎中国的运筹学
  2. python使用configparser读取ini格式的配置文件
  3. NSLog不打印设置
  4. 14. Java基础之泛型
  5. NTP时间服务器介绍
  6. 【ArcGIS遇上Python】ArcGIS Python实现批量化矢量和栅格数据重命名
  7. 51单片机之外部引脚及总线接口
  8. iOS开发常用快捷键
  9. mysql数据库sql注入原理_sql注入原理详解(一)
  10. sqlserver 字符串中是不是全为数字
  11. 2021年数智化高峰论坛圆满召开
  12. Framehawk技术-思杰HDX
  13. 倍福--和威伦触摸屏通信
  14. Start11软件1.0版发布:如果适应了win10或win7的系统,可一键将win11改回
  15. android 截图工具 mac,在Mac上截屏的三种方法 | MOS86
  16. 如何用 Python 提取韦小宝身份证信息
  17. Innovus基础命令:createPlaceBlockage
  18. 如何关闭Windows蜂鸣器的嘟嘟声
  19. HTTP请求响应基础介绍
  20. linux 选择 平铺 窗口,【如何配置linux 平铺式窗口管理器i3wm?】-看准网

热门文章

  1. html video 设置进度条不可拖动_PHP大文件切割上传并带上进度条功能,不妨一试...
  2. extundelete安装_Linux数据安全工具:数据恢复软件extundelete概述
  3. SqlServer系统函数
  4. 关于开发系统后门软件的几点思路
  5. 23种设计模式C++源码与UML实现--中介者模式
  6. python函数—— .items()
  7. BUUCTF-WEB:[强网杯 2019]随便注 1
  8. Java中的String、StringBuffer、StringBuilder的区别和使用范围
  9. ubuntu常见指令
  10. sort函数——利用函数实现快速排序c++