java字符串基本概念

那随意了 • 2020 年 02 月 23 日

字符串字符串本质是一个char类型的数组

private final char value[] //底层的实现代码

不可变字符串

定义好之后就不再去修改了,一旦修改就会改变内存地址,创建一个新的地址

string 创建俩种方式

1.直接赋值 Sting str ="xxxx"

2通过构造器来创建 String str2=new String("xxx")

直接赋值 Sting str ="ABCD"

定义了一个字符串常量,在栈中有一个str指向了方法区中常量池中"ABCD"这个常量

之后执行Sting str =new String("ABCD")会在堆当中新建一个内存空间,他会先去方法区的常量池中查看有没有"ABCD"这个值,如果有,会直接引用常量池当中的"ABCD"

1.使用Sting str ="ABCD"

要么创建一个对象要么不创建,因为如果之前存在过ABCD,则会直接引用之前常量池当中的ABCD

2.String str2=new String("ABCD")

至少得创建一个对象,因为使用了new在堆当中至少得创建一个对象,看一下常量池中,有没有传入的对象字符串,如果没有的话,会创建一个字符串常量,放到常量池中

答案true,true,false,false

字符串对象之为空

1.表示引用为空 string str=null 还没有初始化,没有分配内存空间

2.表示空字符串 string str="" 已经创建了对象,已经分配了内存,只不过内容为空

字符串的比较

1.== 比较俩个内存地址是否相等

2.使用equals 他是object中定义的和使用==效果是相同的 //string中和object中不相同

建议子类自己去覆盖方法骂,自己和内部当中去根据自己的需求去判断俩个值是否相等

string中默认已经覆盖了equals这个方法

底层实现机制:首先判断当前对象和传入的对象(地址)是否相等,相等返回true,如果地址不一样,则逐个比较每个字符

java String源码public boolean equals(Object anObject) {

if (this == anObject) {

return true;

}

if (anObject instanceof String) {

String anotherString = (String)anObject;

int n = value.length;

if (n == anotherString.value.length) {

char v1[] = value;

char v2[] = anotherString.value;

int i = 0;

while (n-- != 0) {

if (v1[i] != v2[i])

return false;

i++;

}

return true;

}

}

return false;

}

比较相等的时候用==默认比较的是地址public class Main {

public static void main(String[] args) {

String str ="321";

String str2= new String("321");

System.out.println(str2==str);//false

System.out.println(str2.equals(str));//true

}

}

开发当中一般使用equals方法

可变字符串

定义好之后,海阔有进行修改改变时不会创建新的内存地址

可变字符串分为StringBuild和StringBuffer

俩这都实现了CharSequence接口中的,charAt,length,subSequence,toString这几个方法

StringBuilder:是没有syschronized (效率高)

StringBuffer:方法前面多了一个syschronized 加锁(安全)

字符串拼接效率

StringBuilder>StringBuffer>String

StringBuilder

StringBuilder sb2=new StringBuilder();

创建的可变字符串初始容量为16

如果超过的话,他会自动扩容 为之前的俩倍

可变字符串本质还是一个char数组

用append拼接字符串,append返回值是本身

可以用toString转换成String类型

java字符串定义_java字符串基本概念相关推荐

  1. java 字符串函数_Java字符串函数– 25+必须知道方法

    java 字符串函数 Java字符串函数 (Java String Functions) Java String class has a lot of functions to manipulate ...

  2. java 字符串面试_Java字符串面试问答

    java 字符串面试 String is one of the most widely used Java Class. Here I am listing some important Java S ...

  3. java idwork长度_java 字符串id

    Java FutureTask import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.c ...

  4. java拼接字符串的_Java字符串拼接(连接)

    对于已经定义的字符串,可以对其进行各种操作.连接多个字符串是字符串操作中最简单的一种.通过字符串连接,可以将两个或多个字符串.字符.整数和浮点数等类型的数据连成一个更大的字符串. String 字符串 ...

  5. java字符串转字符串数组_Java字符串数组到字符串

    java字符串转字符串数组 Today we will look into how to convert Java String array to String. Sometimes we have ...

  6. java字符串转字符串数组_Java字符串数组

    java字符串转字符串数组 Java String array is used to hold fixed number of Strings. String array is very common ...

  7. java 字符 加密_Java 字符串的加密与解密

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了保证程序的安全,经常需要用到数据加密的方法.Java 中提供了专门用于加密运算的类和接口. 除了使用加密类和接口外,还可以通过多种方式实现字符串的加密 ...

  8. java字符对比_Java 字符串比较

    在 Java 中,比较字符串的常用方法有 3 个:equals() 方法.equalsIgnoreCase() 方法. compareTo() 方法 1. equals() equals() 方法将逐 ...

  9. java比较日期字符串大小写_java 字符串操作和日期操作

    一.字符串操作 创建字符串 String s2 = new String("Hello World"); String s1 = "Hello World"; ...

最新文章

  1. 135.003 智能合约后端优化和产品化
  2. JavaScript语言基础3
  3. 浏览器工作原理与实践学习笔记
  4. 绝对好文:嵌入式系统的软件架构设计!
  5. COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
  6. python rgb 图像_在Python中查找RGB图像的互补图像
  7. OpenGL阴影添加学习材料及总结
  8. 一台新云主机nodejs项目部署过程
  9. 微信小程序,自动滑动到页面底部功能
  10. 浅谈抖音下拉词框优化推广的优势
  11. linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
  12. PyQT简单入门--hello world
  13. 手工增加widcomm对蓝牙USB dongle的识别
  14. CAD系统与PDM系统集成技术研究
  15. TTL转HDMI 1.4,性能提升,pin to pin 芯片LT8618SXB
  16. 引发卡塔尔断交潮的“俄罗斯黑客”究竟有多牛?
  17. 支付宝提现免手续费的方法步骤
  18. 基础篇(二).ARMv8寄存器(2)
  19. winmail的安装及使用说明流程
  20. 电脑正在更新计算机一直是,win10电脑一直不停更新怎么办啊

热门文章

  1. 外链引入css有哪些方式_CSS 文件的4种引入方式
  2. python之字符串操作
  3. win10设置禁止系统更新
  4. php get验证,PHP+Ajax简单get验证操作示例
  5. java蛮力法解决任务分配问题_【算法题】任务分配问题---匈牙利算法
  6. linux root权限_Linux 提权技术
  7. _新车 | 新款捷豹F-PACE登陆广州车展!内外提升十分明显
  8. java原生的ajax怎么写,用原生js实现 ajax方法
  9. [专栏精选]Unity中动态构建NavMesh
  10. OpenShift 4.6 新特性 - 用 Windows MachineConfig Operator 管理 Windows Container