Java 中 String 类的常规操作
String类型详解
String本身就是一个类,只是Java对其进行了特殊处理。
两种实例化方式原理及区别:
/* 两种创建 String 对象的方法
* 1. 直接赋值:(推荐按这种方法)
* 2. 使用构造方法
* */
String str1 = "123";
String str2 = new String("123");
/*两者的区别
* 1. 直接赋值: 只会开辟一块堆内存空间,并且该对象会保存在对象池中,以供下次使用
* 2. 使用构造方法: 会开辟两块堆内存空间,并且一块将会成为垃圾,并且不会自动保存到对象池中,但可以通过 str1.intern() 方法手工入池
* */
// 两种创建 string 对象的区别
String str3 = "123"; // 与 str1 共享 "123" 数据所占的堆内存空间
System.out.println(str1 == str3); // 值为: true; JVM的常量共享
// 字符串的比较
System.out.println(str1 == str2); // 结果为 false
System.out.println(str1.equals(str2)); // 结果为 true
/*
* 原因分析:
* "==" 只能进行数值的比较,str1 == str2 实际比较的是两个字符串内存地址的数值
* "equals()" 比较的才是两者的内容的区别
* */
/*
* 在以后的开发中强烈建议采用 way_2 比较字符串.
* 原因在于:
* way_1 中 str1 如果为空的话会产生空指针异常,导致程序终止
* way_2 中 str1 即使为空,只会得到的结果为 false,不会出现异常
* */
// way_1
str1.equals("hello");
// way_2
"hello".equals(str1);
常用操作分类:
构造函数:
String(byte[] bytes)
String(byte[] bytes, Charset charset)
String(byte[] bytes, String charsetName)
String(byte[] bytes, int offset, int length)
String(char[] value)
String(char[] value, int offset, int count)
String(StringBuffer buffer)
String(StringBuilder builder)
字符串与字符数组:
char[] |
toCharArray() |
字节与字符串:
byte[] |
getBytes() |
byte[] |
getBytes(Charset charset) |
byte[] |
getBytes(String charsetName) |
字符串比较:
int |
compareTo(String anotherString) 比较字符串的大小(-1、0、1) |
int |
compareToIgnoreCase(String str) 忽略大小写比较字符串大小 |
boolean |
equals(Object anObject) |
boolean |
equalsIgnoreCase(String anotherString) |
字符串查找:
boolean |
contains(CharSequence s) 是否包含 |
boolean |
endsWith(String suffix) |
int |
indexOf(String str) 返回找到的 str 的首字母索引值 |
int |
indexOf(String str, int fromIndex) 从指定位置查找 |
int |
lastIndexOf(String str) 倒着查找 |
int |
lastIndexOf(String str, int fromIndex) |
boolean |
matches(String regex) 使用正则表达式匹配 |
boolean |
startsWith(String prefix) |
boolean |
startsWith(String prefix, int toffset) |
字符串替换:
String |
replace(char oldChar, char newChar) |
String |
replaceAll(String regex, String replacement) |
String |
replaceFirst(String regex, String replacement) |
字符串拆分:
String[] |
split(String regex) |
String[] |
split(String regex, int limit) 限制拆分后的个数 |
字符串截取:
String |
substring(int beginIndex) |
String |
substring(int beginIndex, int endIndex) |
其他常用方法
char |
charAt(int index) 返回指定索引位置的字符 |
String |
concat(String str) 连接两个字符串类似 “+” |
boolean |
isEmpty() |
String |
intern() |
int |
length() |
String |
toLowerCase() 转换为小写 |
String |
toUpperCase() 转换为大写 |
String |
trim() 去除开头结尾的空格(注意只有这一种方法:1.8) |
PS:上面的方法是直接从 Java 1.8 API 文档中提取出来的,这里主要作为一个个人总结,由于较为简单所以没有符详细代码。
Java 中 String 类的常规操作相关推荐
- Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...
- Java中String类的方法及说明
String : 字符串类型 一.构造函数 String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数 ...
- 【转载】Java中String类的方法及说明
转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数 String ...
- 在java中String类为什么要设计成final
在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087 转载于 ...
- c++ 输出string_来讲讲Java中String 类的知识点
本文来总结一下Stirng 的有关知识点 1.String中的引用 String 可以通过new和构造方法来创建一个对象,用s来引用它(也就是相当于把asdf这个字符串赋值给s String s = ...
- java中string类面试题_java中String类的面试题大全含答案
1.下面程序的运行结果是()(选择一项) String str1="hello"; String str2=new String("hello"); Syste ...
- JAVA中String类
1.String类定义的变量是不可变得 eg:String s0="kvill"; String s1 = new String("kvill"); 为什么要设 ...
- java中String类的常用方法总结
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
- java 中String类的常用方法总结,玩转String类
String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...
最新文章
- 看麦田“蚂蚁网” 想网络新社区
- 一张图理解buffer与cache
- java电脑运行视频演示_javaweb视频第一天(二)
- [css] 使用css实现蒙版的效果
- 万州哪里有维修服务器,网关可以设在服务器、微机或大型机上
- Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置
- 云世界,一切如梦幻,数据也玩虚拟化。 SQL Server 2019 新特性系列一:数据虚拟化
- Nginx源码分析 - 实战篇 - 编写一个自定义的模块(24)
- 进击的UI------------UIToolBar(bottom导航条)
- html隐藏标签console,console的隐藏知识点,你get到了嘛?
- yolov3选取正负样本
- mos管h桥电机驱动电路与设计原理图-KIA
- 学习web前端能做游戏开发吗?
- hd4600黑苹果html5死机,HD4600终于可以不花屏了,写下心得。
- java流程控制试讲_java试讲.ppt
- 股票-每日复盘-5-24
- 剪切文件丢失如何恢复
- java多表头导出excel表格_【每日一点】1. Java如何实现导出Excel单表头或多表头
- 【笔记】ARM架构和ARM芯片(一)
- OXFeeeFeee指针的含义
热门文章
- 六十四、SpringBoot中的模板引擎Thymeleaf
- 三十七、下篇 | tkinter实现一个翻译软件
- “神算子”上线!EasyDL时序预测模型零门槛轻松上手
- 目标检测Workshop | COCO三连冠带你探索检测新世界
- 生成对抗网络(GAN)的数学原理全解
- 一文读懂「Attention is All You Need」| 附代码实现
- c程序设计语言用什么编译器,什么是编译器(编程软件)
- vue 初始化方法_Vue源码解读(一)引入Vue做了什么
- SpringMVC-组件分析之视图解析器(prefix,suffix)
- 编程式事务控制相关对象