当前位置: 首页 > news >正文

企业网站建设方案怎么写/免费网站流量统计工具

企业网站建设方案怎么写,免费网站流量统计工具,wordpress手机编辑器,衣联网和一起做网站 哪家强JDK 中的String 类是一个简单而又不平凡的类, 它是java 语言的核心类。我们今天就来讲讲java String这个类的故事。先看java String 类源码:从源码中我们可以看到String 类是被定义为final 的,这就意味着String 类是不可以被继承的&#xff0…

JDK 中的String 类是一个简单而又不平凡的类, 它是java 语言的核心类。我们今天就来讲讲java String这个类的故事。

先看java String 类源码:

62c429ac8f7b3aed2c4edd3a0e5ab2cf.png

从源码中我们可以看到String 类是被定义为final 的,这就意味着String 类是不可以被继承的,里面的方法也被定义为final 的,因为String 类是java 语言的核心类,所以java语言设计者基于安全和效率考虑,不予许String 类可以被继承。(我们先在这里留下一个问题:为什么String 类被定义为final, String 类的方法也被定义为fianl?)

一.字符串的创建形式

String 的创建形式有以下三种基本形式:

1. String str = "string"

2. String str2 = new String("string");

3. String str3 = “string".intern()

这三种形式创建字符串返回的结果是一样的,但是java 虚拟机在内存分配上是不同的。

在解释这点之前,我们先来看看java 虚拟机对内存分配:

java栈内存(私有数据区): 主要用来存储局部变量,(基本数据类型变量,对象引用变量)

java堆内存(共享数据区):主要存放实例对象

方法区(共享数据区):主要存放加载的类信息,静态变量,常量

常量池(共享数据区):常量池是方法区的一部分,用来存储字面常量、使用final修饰的变量以及符号引用

第一种方法在创建字符串str 时,java虚拟机会在方法区的常量池中判断是否存在具有和字符串string内容相同的String对象:如果常量池不存在和赋值字符串内容相同的对象,虚拟机就在常量池中分配内存并创建该String对象,并将String对象的引用赋值给String类型的变量;如果常量池存在与赋值字符串内容相同的对象,虚拟机会直接将该对象的引用赋值给String类型的变量。这种创建方式对连续创建同一字符串内容的String对象特别有用,内存利用效率非常高效

第二种方法, intern()是一个Native方法,底层调用C++的 StringTable::intern 方法,虚拟机会创建两个String对象:一个String对象是在常量池中创建,如果常量池中已有字符串内容相同的对象,则不创建;一个String对象是在运行数据区的堆中创建,将在常量池中创建的String对象的字符数组复制到在堆中创建的String对象。

第三种方法,java虚拟机会返回常量池种对象的引用给变量str3。

所以我们在创建一个字符串的时候,基于内存效率的考虑,多用方法一。

所以, String被设计成不可变和不能被继承的原因,可以理解为考虑效率和安全,只有当字符串不可变,String 常量池才可以实现,从而在运行时节省很多heap 空间。

二, String 类中常用方法

方法

用途

boolean startsWith(String str)

boolean endsWith(String str)

boolean contains(CharSequence str)

检查开始或者结束字符

int indexOf(String str)

int lastIndexOf(String str)

int indexOf(String str, int fromIndex)

int lastIndexOf(String str, int fromIndex)

字符索引,如果没有匹配则返回-1

String replace(CharSequence oldStr, CharSequence newStr)

字符替换

String toUpperCase()

String toLowerCase()

返回大小写字符

String trim()

去除首尾空格

三, 字符串连接

java 语言使用操作符+ 来拼接字符串, 如果要将字符串拆开,可以用substring 方法,结合indexOf 方法对字符串进行拼接。

204366bae13b4adf46f449d57008006a.png

输出结果:

ebcf4464091342229224034deb0fcf2e

ebcf446409

四。 更高效的字符串处理类StringBuilder 与StringBuffer

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类

0c184b9482834e3838d52e828325b51b.png

五, String 的equals 与==

下面是String 类的equals 方法, equals 是Object 类中的方法。

1d36b552b18e7146f2635699aa5453aa.png

从源码上看

1. 若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。

2.若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。

若长度不相同,则return false

若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。

若当前传入的对象不是String类型,则直接返回false

http://www.jmfq.cn/news/4731373.html

相关文章:

  • 什么视频网站可以做链接地址/杭州网站设计公司
  • 视频网站如何做营销/推广引流方法有哪些推广方法
  • 网站建设合同】/兰州疫情最新情况
  • 做壁纸网站好/谷歌浏览器安卓下载
  • 常州百度网站排名/线上广告投放渠道
  • 用bmob做网站/网上推广企业
  • 商城网站建设如何交谈/100%上热门文案
  • 青岛圭谷网站建设公司/给我免费的视频在线观看
  • 山西省网站建设哪里好/无人区在线观看高清1080
  • 付网站建设费分录/廊坊seo排名霸屏
  • 网络营销策划书实施计划/seo怎么优化方案
  • 青岛哪家网站建设好/网站建设明细报价表
  • 网站建设销售问答/成都自然排名优化
  • 音乐摄影网站建设宗旨/网站页面seo
  • 衡阳市住房和城乡建设局官方网站/googleplay安卓版下载
  • 做旅游销售网站平台ppt模板/线上推广100种方式
  • 网站建设定制网站建设公司哪家好/站长之家音效素材
  • adobe可以做网站吗/网络推广怎么做
  • 天津 企业网站建设/百度问答平台
  • 页面好看的教育类网站模板/加盟培训机构
  • wordpress 浮动按钮/seo网站推广免费
  • 网站开发加盟商怎么做/网盟推广平台
  • 高校文明校园建设专题网站/如何交换优质友情链接
  • 做公司网站宣传公司/企业建站平台
  • 和田网站建设/百度刷自己网站的关键词
  • 手机官方网站/打开免费百度啊
  • 网站开发技术与vb/谷歌seo招聘
  • 装修设计网站有哪些/百度网页版首页
  • 湖南做网站seo/seo网站推广批发
  • 正常开发一个网站需要多少钱/免费隐私网站推广