java字符串定义_java字符串基本概念
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字符串基本概念相关推荐
- java 字符串函数_Java字符串函数– 25+必须知道方法
java 字符串函数 Java字符串函数 (Java String Functions) Java String class has a lot of functions to manipulate ...
- java 字符串面试_Java字符串面试问答
java 字符串面试 String is one of the most widely used Java Class. Here I am listing some important Java S ...
- java idwork长度_java 字符串id
Java FutureTask import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.c ...
- java拼接字符串的_Java字符串拼接(连接)
对于已经定义的字符串,可以对其进行各种操作.连接多个字符串是字符串操作中最简单的一种.通过字符串连接,可以将两个或多个字符串.字符.整数和浮点数等类型的数据连成一个更大的字符串. String 字符串 ...
- java字符串转字符串数组_Java字符串数组到字符串
java字符串转字符串数组 Today we will look into how to convert Java String array to String. Sometimes we have ...
- java字符串转字符串数组_Java字符串数组
java字符串转字符串数组 Java String array is used to hold fixed number of Strings. String array is very common ...
- java 字符 加密_Java 字符串的加密与解密
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为了保证程序的安全,经常需要用到数据加密的方法.Java 中提供了专门用于加密运算的类和接口. 除了使用加密类和接口外,还可以通过多种方式实现字符串的加密 ...
- java字符对比_Java 字符串比较
在 Java 中,比较字符串的常用方法有 3 个:equals() 方法.equalsIgnoreCase() 方法. compareTo() 方法 1. equals() equals() 方法将逐 ...
- java比较日期字符串大小写_java 字符串操作和日期操作
一.字符串操作 创建字符串 String s2 = new String("Hello World"); String s1 = "Hello World"; ...
最新文章
- 135.003 智能合约后端优化和产品化
- JavaScript语言基础3
- 浏览器工作原理与实践学习笔记
- 绝对好文:嵌入式系统的软件架构设计!
- COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
- python rgb 图像_在Python中查找RGB图像的互补图像
- OpenGL阴影添加学习材料及总结
- 一台新云主机nodejs项目部署过程
- 微信小程序,自动滑动到页面底部功能
- 浅谈抖音下拉词框优化推广的优势
- linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
- PyQT简单入门--hello world
- 手工增加widcomm对蓝牙USB dongle的识别
- CAD系统与PDM系统集成技术研究
- TTL转HDMI 1.4,性能提升,pin to pin 芯片LT8618SXB
- 引发卡塔尔断交潮的“俄罗斯黑客”究竟有多牛?
- 支付宝提现免手续费的方法步骤
- 基础篇(二).ARMv8寄存器(2)
- winmail的安装及使用说明流程
- 电脑正在更新计算机一直是,win10电脑一直不停更新怎么办啊
热门文章
- 外链引入css有哪些方式_CSS 文件的4种引入方式
- python之字符串操作
- win10设置禁止系统更新
- php get验证,PHP+Ajax简单get验证操作示例
- java蛮力法解决任务分配问题_【算法题】任务分配问题---匈牙利算法
- linux root权限_Linux 提权技术
- _新车 | 新款捷豹F-PACE登陆广州车展!内外提升十分明显
- java原生的ajax怎么写,用原生js实现 ajax方法
- [专栏精选]Unity中动态构建NavMesh
- OpenShift 4.6 新特性 - 用 Windows MachineConfig Operator 管理 Windows Container