字符串 |
Java的的字符串是一个特殊的对象 被final修饰值最终类 他的特点是一旦出初始化值就不可变,默认初始值是null 字符串字面值也是一个对象,是常量存放在方法区的常量池, |
String的赋值方式 1 直接赋值 String str="hello"; 2 通过new操作符创建对象赋值 String s=new String("hello"); 在构造函数中传入字符串 或者StringBuilder 等 |
两种赋值的区别; 直接赋值法 会拿着"hello"这个常量值在,方法区的常量池(pool)中查找。如果找到常量池中有这个值,就把它的引用指向桟内存的变量str .,如果没有的话,就在常量池中创建hello,在在这个对象的引用指向str。(节约内存空间) 通过new操作符赋值法 在执行new操作时 会在堆内存中开辟一块空间存储"hello"对象,(不管堆内存中是否有同样的对象)(浪费内存) |
String +运算符 在参与+运算的一端只要有字符串,就会执行字符串的连接操作,在底层Java会new一个StringBuilder执行append方法添加字符串, |
字符串的比较方式 == 比较 一般用于比较基本数据类型, 如果比较的是类类型是比较的对象引用的地址值(因为String是类类型所以不能用==比较字符串值) equals 比较 调用equals方法时 ,默认使用的是父类Object的方法进行比较的是地址值,因为String的内部重写了他的equals方法,所以要对String进行比较,因该使用equals方法 (得出结论 如果要进行自定义对象的比较,就要在自定义对象中重写equals方法) |
private final static String MESSAGE = "heima"; public static void main(String[] args) { String a = "hei"+"ma"; String b = "hei"; String c = "ma"; System.out.println(a==MESSAGE); System.out.println((b+c)==MESSAGE); } private final static String MESSAGE = "heima"; String a = "hei"+"ma"; 因为hei ma 是字面常量值 在编译器编译时,就已经在class文件中写死了 和MESSSAGE他们在常量池中同为同一个值,所以为true而b+c是变量在编译期间无法确定其具体值。Java在操作b+c是其实是调用StringBuilder执行append方法完成字符串的拼接,位于字符串缓冲区 所以最后一条语句放回false |
字符串缓冲区 StringBuffer是一个容器可以对字符串进行增删查改 很多方法和String相同 但是他的长度可变 最终同过toString f方法转为字符串 |
字符串缓冲区功能和StringBuffer一样 |
StringBuffer 和stringBuilder的区别 StringBuffer jdk1.0出现 线程同步 效率低 适合在多线程中使用 String Builder jdk1.5后出现 线程不同步,效率高 适合多线程 建议多线程中使用StringBuffer 平时单线程使用StringBuilder |
String提供一系列的方法供我们操作字符串 |
获取 int length() 返回一个字符串的长度(单位是字符 不是字节, 因为Java采用的是Unicode编码不管是英文还是中文都是用字符表示) char CharAt(int index)返回字符串指定位置的字符 int indexOf(int ch)返回的是指定字符在字符串中第一次出现的位置 int indexOf(int ch,int formIndex)返回的是指定字符,从指定位置开始后出现的位置 int indexOf(String str)返回的是str在字符串中第一次出现的位置 int indexOf(String str,int formIndex)返回的是指定字符串,从指定位置开始后出现的位置 int lastIndexOf(int ch) 与indexOf相反从右往左查找,指定字符出现的位置 int lastIndexOf(String str, int fromIndex) 从右往左查找返回的是指定指定字符串出现的位置 |
判断 boolean contains (CharSequence str)判断字符串中是否包含指定字符 或字符串 但是indexOf 可以查找在字符串中第一次出现的位置,如果没有就返回-1,所以indexOf 既可以返回位置 又可以进行判断是否包含 boolean isEmpty()判断字符串是否为空 booleanstartsWith(String str)判断字符串是否以指定内容开头 boolean endsWith(String str) 判断字符串是否以指定内容结尾 boolean equals(String str)判断两个字符串是否相同。(String 的equals重写了Object的equals方法) boolean equalsIgmoreCase(String str);判断内容是否相等,并忽略大小写 |
1.将字符串转换成大写或小写。String toUpperCase();String toLowerCase(); 2.将字符串两端的空格去掉;String trim(); 3.对两个字符串进行自然顺序的比较。 boolean compareTo(String); |
构造函数:String(char());String(char[],offset,count);将字符数组中的一部分转成字符串。char[]是字符数组,offset是开始位置,count是个数。 Char[] toCharArray() 将字符串转换为char数组; 3.3:将字节数组转成字符串。 String(byte());String(byte[],offset,count);将字字节数组中的一部分转成字符串。char[]是字节数组,offset是开始位置,count是个数。 将字符串转成字节数组。 byte[] getBytes(); 特殊:字符串和字节数组在转换过程中,是可以指定编码表的。 将基本数据类型转成字符串。static String valueOf(int); static String valueOf(double); |
替换:String replace(oldchar,newchar);如果要替换子字符不存在,返回的是原串。 切割:String[] split(regex); subString(int begin )截取指定位置到结尾的子字符串,如果角标不存在 会报角标异常 String substring(begin,end);包含头,不包含尾。 |
常用方法 StringBuffer append()将指定数据添加大已有数据的末尾 StringBuffer insert(int index ,数据)可以讲数据插如指定位置 StringBuffer delete(int start ,int end)删除缓冲区的数据,包头不包尾 delete(0, sb.length) 用于清空缓冲区 StringBuffer delete(int index)删除指定位置的字符,一个字符 char charAt(int index)获取指定位置的字符 String substring(int start ,int end)截取字符串 注意返回的是String类型 void setCharAt(int index,String str)修改指定位置的字符 StringBuffer reverse() 反转 String没有这个功能 |
相关推荐
很全面的总结,十分实用。很全面的介绍了String的用法,很实用,实战总结。
### Java字符串长度不够前面或后面补0 在Java编程中,有时我们需要确保字符串达到特定的长度,如果实际长度不足,则需要在字符串的前部或后部添加特定字符(如0)来填充,使得最终字符串满足预设长度的要求。本文将...
### JAVA日期与字符串的转换 在Java编程中,经常需要将日期对象转化为字符串形式以便于存储或显示,或者反过来将字符串转化成日期对象来进行日期计算等操作。本文将详细介绍如何在Java中实现这两种转换。 #### 一...
在Java编程语言中,字符串是极其重要...以上就是Java中常用字符串方法的总结。理解并熟练运用这些方法,将极大地提升你在处理字符串时的效率和代码质量。在实际开发中,还需要结合具体需求灵活选择和组合使用这些方法。
总结一下,Java中字符串转16进制ASCII涉及的关键点有: 1. `char`类型的字符与ASCII码的转换。 2. 使用`Integer.toHexString()`将ASCII码转换为16进制字符串。 3. 处理Unicode字符时,需要考虑字符集和编码方式。 ...
总结,Java中的字符串分割是通过`split()`方法实现的,依赖于正则表达式进行精确的分割。理解正则表达式和`split()`方法的用法对于处理复杂的字符串处理任务至关重要。在实际编程中,根据需求选择合适的正则表达式和...
总结来说,`JAVA可逆带秘钥字符串加密算法`主要涉及到对称加密,特别是DES算法,用于对字符串进行安全保护。通过`DESUtil.java`这样的工具类,开发者可以方便地在Java程序中集成加密和解密功能,确保数据在传输和...
### Java字符串查找和提取异常处理 #### 概述 本文将详细介绍如何在Java中实现字符串查找与提取功能,并在此过程中妥善处理可能出现的各种异常情况。通过分析提供的代码示例`IndexOfAndCharAt.java`,我们将了解到...
### Java中的字符串处理 #### 一、字符串的概念与特点 在Java中,字符串是一系列字符的集合,与其他编程语言将字符串视为字符数组不同,Java采用了更为先进的方式——将字符串视为`String`类型对象来处理。这种...
### JAVA字符串处理函数列表一览 在Java编程语言中,字符串处理是极其常见且重要的操作之一。字符串类`String`提供了丰富的内置方法来帮助开发者高效地完成各种字符串操作任务。本文将详细解读`String`类中的一些...
### Java字符串编码转换详解 #### 一、Java 字符串编码转换基础 在Java中,字符串的处理是非常常见的操作之一,而字符编码是确保数据正确显示的关键因素。本篇文章将重点介绍Java中字符串编码的转换方法及其在Web...
### Java解析XML字符串 在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这...
### Java 获取随机字符串 在Java开发中,生成随机字符串是一个非常常见的需求,尤其是在密码学、安全验证、数据加密等场景中。本文将详细介绍如何在Java中生成随机字符串,并且会结合给定的部分代码示例进行深入...
根据提供的标题、描述、标签及部分内容,我们可以总结出以下关于Java字符串处理的相关知识点: ### Java字符串处理技术:中文与英文的兼容性 在Java中,处理字符串是非常常见且重要的任务之一,尤其是在涉及到国际...
总结,Java对象转换为JSON字符串或字符串数组是通过引入JSON库,如`json-lib`,然后利用其提供的序列化和反序列化方法实现的。了解并熟练掌握这些方法对于进行Java和JSON之间的数据交换至关重要。在实际项目中,根据...
总结来说,这个实验旨在帮助我们理解和掌握Java中字符串的基本操作,如获取长度、查找特定字符的次数,以及理解字符串比较和可变性在性能上的差异。通过实践,我们可以更好地运用这些知识来编写高效的Java代码。
Java虚拟机(JVM)维护了一个特殊的区域称为字符串常量池。当创建一个字符串并将其存储在池中时,如果已有相同内容的字符串存在,那么将返回池中已存在的字符串的引用,这就是所谓的字符串 intern() 方法的原理。 ...
### Java中的字符串相关处理 #### 引言 在Java编程语言中,字符串处理是一个核心且广泛使用的领域。不同于其他编程语言将字符串视为字符数组,Java将字符串视为`String`类型对象,这一设计使得字符串处理更加高效...
总结来说,解决"java求字符串的正向反向最大公共字符串"这个问题,我们可以采用动态规划方法,通过对字符串的遍历和比较,找出并返回最长的公共子串。这种技术在处理字符串匹配、编辑距离等问题时非常常见,有助于...
总结来说,Java中的字符串和文件压缩主要依赖`java.util.zip`包,SLF4J则为日志记录提供便利。通过学习和实践这些技术,开发者可以更好地应对数据处理中的压缩需求,提高程序效率和资源利用率。在实际项目中,还需要...