一、字符串是引用类型 ,值一旦确定不可改变。
String str ="bjsxt";
str ="good"; //重新开辟空间
二、String类常用方法
1)长度 length()
2)比较 地址与内容
a)地址 ==
b)内容
boolean equals(Object)
boolean equalsIgnoreCase(String) //不区分大小写
3)截取
a)String subString(int beginIndex)
b)String subString(int beginIndex,int endIndex)
4)判断子串存在
a)查找第一次出现的位置 不存在为-1
如果传入的为空串,则返回fromIndex
int indexOf(String)
int indexOf(String,int fromIndex)
int lastIndexOf(String)
int lastIndexOf(String,int fromIndex) 只从子字符串(长度为fromIndex+str.length)中查找
b)判断是否存在
boolean contains(String);
5)替换 String replaceAll(String regex,String)
String replace(String substr,String)
String replaceFirst(String ,String)
6)去除空格
String trim()//去除左右
7)转换大小写
String toLowerCase();
String toUpperCase();
8)判断开头结尾
boolean startsWith(String)
boolean endsWith(String)
9)返回字符常量池地址
intern()
三、String的构造器
1、使用字面值构造 String str ="bjsxt";
2、使用构造器
new String() 这里创建了一个String对象
new String("") 这里创建了一个String对象,并且指向字符串常量池中的“”对象
str1 =new String("bjsxt");
str2 =new String("bjsxt");这里产生了3个对象,两个String对象,一个“bjsxt”
四、String的地址问题
//编译时就能确定值
String s1 ="a1";
String s2 ="a"+1;
这样s1和s2都指向同一个字符串常量
//运行确定值 (变量)
String s3 ="a";
s2 = s3+1; // new String(s3+1)
s2创建了一个String对象,指向了“a1"这个常量
//常量 与字面值相同 编译时就能确定值
final String S4 ="a";
s2 =S4+1;
但是注意:方法的返回结果时运行期才能确定值。这时候也相当于先new一个String对象,然后在指向字符串常量
四、有一种蛋疼叫做乱码
1、编码与解码
解码:字节------》字符
编码:字符------》字节
2、java编码
getBytes()
getBytes(String charsetName) //使用指定字符集进行编码
3、解码
new String(byte[]);
new String(byte[],起始索引,长度)
new String(byte[],解码集)
new String(byte[],起始索引,长度,解码集)
4、
出现乱码的原因
1、字节数不够
2、编码集与解码集不统一
五、其他字符串类:StringBuilder StringBuffer
1、String、StringBuilder、StringBuffer区别
1)线程安全 String StringBuffer 线程安全 StringBuilder 不安全
2)String长度不可变,StringBuilder StringBuffer长度可变
3)方法重写: equals
String:比较内容
StringBuilder StringBuffer:没有重写equals 比较地址
六、分割字符串
1、StringTokenizer——————》迭代器 :不支持正则
用法如下图:
结果为
用法2:将分隔符显示出来
结果为
2、String的split方法
这个方法支持正则,直接用string对象.split()就可以
相关推荐
### 依赖注入那些事儿 #### 1. IGame游戏公司的故事 ##### 1.1 讨论会 IGame是一家专注于开发动作角色扮演游戏的游戏公司。这类游戏通常包含一个基础功能——打怪,即玩家通过攻击怪物来获得经验值、虚拟货币和...
### Java编程那些事儿 #### 程序设计概述与核心要素 **程序设计**,作为一项专业技能,涉及将现实世界的问题转化为计算机可执行的指令序列。它不仅仅是一门技术,更是一种思维方式的体现。本章节将从三个方面展开...
《Java编程那些事儿》是陈跃峰先生的一本关于Java编程技术的著作,该书深入浅出地介绍了Java编程中的重要概念和实践技巧。这里我们主要聚焦于压缩包中的部分内容,涉及Java集合框架、时间日期处理、文件操作、多线程...
### Java编程那些事儿55—方法重载和参数传递 #### 方法重载(Overloading) 在Java编程语言中,**方法重载**(Overloading)是一个非常重要的概念,它允许我们定义多个具有相同名称但参数列表不同的方法。这种方法...
- 首先,在Java类中声明`native`方法,例如`public static native String sayHello(String name);` - 使用`javah`命令(或者在Android Studio中通过Gradle构建过程)生成对应的头文件(如`com_okwap_testjni.h`)...
为了防止空指针异常,可以使用`getProperty(String key, String defaultValue)`,当键不存在时返回默认值。 7. **保存和更新Properties** 可以使用`store()`方法将`Properties`对象的内容写入文件: ```java ...
说起异步,Thread,Task,async/await,IAsyncResult 这些东西肯定是绕不开的,今天就来依次聊聊他们 1.线程(Thread) ...static void Main(string[] args) { Console.WriteLine(主线程开始); //IsBackgro
- **工厂方法**:如`String.valueOf()`,通过静态工厂方法返回对象,避免直接暴露构造器。 - **反射**:利用`Class`或`Constructor`类的`newInstance()`方法动态创建对象。 - **克隆**:通过调用对象的`clone()`...
public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); // 主 Reactor Group EventLoopGroup workerGroup = new NioEventLoopGroup(); // 从 Reactor...
【Web Service 那点事儿(2)—— 使用 CXF 开发 SOAP 服务】 Web Service是一种基于标准协议的,用于不同系统间交换数据的技术。SOAP(Simple Object Access Protocol)是Web Service常用的一种通信协议,它定义了...
bool lt(string x, string y) { // 转换为小写并比较 } bool comp(node x, node y) { // 先按文件类型升序,再按忽略大小写的文件名升序 } ``` 在`main`函数中调用`sort`进行文件名排序,就可以使用这个自定义的`...
特别是对于Map和List对象的处理,Freemarker要求value必须为String类型,这在实际开发中可能会带来不便。 在内容中,我们看到作者正在处理一个“分销系统”的通用组件,发现用户信息和菜单信息是由一个名为`_const_...
中那些值得我们了解的事儿,我在这里,你在哪里? 索引 朝花夕拾 从 JDK 9 开始,超级根类Object中的finalize()方法被标记为@Deprecated; 同样是从 JDK 9 开始,String类由char[]数组实现修改为由 byte[]数组实现。...
其实这个比较简单,子线程怎么通知主线程,就是让子线程做完了自己的事儿就去干主线程的转回去干主线程的事儿。 那么怎么让子线程去做主线程的事儿呢,我们只需要把主线程的方法传递给子线程就行了,那么传递方法就...
老罗的入场是真正的将直播带货这个事儿给完全的行业化了。本文将介绍如何基于服务来实现一套直播的解决方案。 什么是推流、拉流、直播和点播? 在开始之前,让我们先来了解一些基本概念。 * 推流:主播将本地视频...
注意:例如,应使用decode(String source, Stringencode)而不是已弃用的方法decode(StringencodeStr)。一旦接口被弃用,接口提供者就有义务提供新的接口。同时,客户端程序员有义务检查它的新实现是什么。 ...