String 的常用操作
String 类,我可以不负责的说在 Java 中这个类应该是使用最频繁的类了。然而关于它的常用的操作,我却不甚了解。整理这个东西很反人性的,这些方法,你看到他的时候感觉很简单,但是真正用的时候还是不太会,还是会借助网络,今天我就来强行整理一波,不求全,但求精。
先说说 String 对象的构造器,创建一个字符创可以使用如下方法
String s = "123";
String s1 = new String("123");
char[] value = {'1','2','3'};
String s2 = new String(value);
System.out.println(s2); //
char[] value1 = {'0','1','2','3','4'};
String s3 = new String(value1,1,3); // 从哪里开始,取几位
System.out.println(s3); //
StringBuilder sb = new StringBuilder("123");
String s4 = new String(sb);
System.out.println(s4); //
我就提一下,为什么人家类创建对象都用 new ,而 String 可以直接赋值呢?s 和 s1 的区别到底在哪呢?这样设计的思路还是因为 String 的超高使用频率,为了节省空间,s 的创建过程为在内存中创建一个 “123” 这个 String,然后将引用赋给 s ,如果这个时候还有一条语句 String s5 = “123”,那么 JVM 将不再创建 “123”,而是直接将第一个 “123” 的引用赋给 s5,也就是说 s 和 s5 使用同一块内存,但是使用 new 创建就不一样,不论之前有没有,照样在堆中开辟新的空间 。
下面就看看常用的方法有那些吧!
基础篇
String s = "I don't like JAVA !"; // 返回字符串的长度,注意和数组的length属性的区别呦 !
int length = s.length();
System.out.println(length); // 19 // 返回某个字符在字符串中的位置,即数组下标
int position = s.indexOf('!');
System.out.println(position); // 18 // 返回指定下标的字符
char charAt = s.charAt(0);
System.out.println(charAt); // I // 求子串 参数为下标的起止位置,含前不含后。尾下标可以默认不写
String substring = s.substring(13, 19);
System.out.println(substring); // JAVA ! // 将字符串转换为 大写,相应的还有转换为小写 toLowerCase()
String s1 = s.toUpperCase();
System.out.println(s1); // I DON'T LIKE JAVA !
提高篇
// 字符串的替换,前为旧串,后为新串。
String s2 = s.replace("don't", "do");
System.out.println(s2); // I do like JAVA ! // 去除前后空格
String trim =s.trim();
System.out.println(trim); // I don't like JAVA ! // 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
String format = String.format("请说出真心话: %s", s);
System.out.println(format); // 请说出真心话: I don't like JAVA ! // 以指定字符串进行分割字符串,得到字符串数组。
String[] split = s.split(" ");
for (int i = 0; i < split.length; i++) {
System.out.print(split[i]); // Idon'tlikeJAVA!
} // 将一个字符串转换成字节数组,得到一个系统默认的编码格式的字节数组。
byte[] bytes = s.getBytes(); // 将一个字符串转换成字符数组 ,返回的数组中是一个个的字符。
char[] array = s.toCharArray();
郁闷篇
不知道你们是怎么样的,我在写代码的时候总是会不自觉地使用 “==” 来比较两个字符串是否相等。虽然我明确的知道这是不对的,我想还是因为我代码写的少… ,所以你们记住了啊,要使用 equals 方法的!给个例子,自己感受感受区别。
String s3 = "123";
String s4 = new String("123");
String s5 = "123";
System.out.println(s3 == s4); // false
System.out.println(s3 == s5); // true
System.out.println(s3.equals(s4)); // true
最后来看一看基本类型和字符串之间的相互转化。
String s3 = "123"; int num = Integer.parseInt(s3);
System.out.println(num); // String string = String.valueOf(num);
System.out.println(string); //
套路就是想得到基本数据类型,就使用对应包装类调用包装类的 praseXXX() 方法。想得到字符串就使用 String 调用 String 类的静态重载方法 valueOf() 。
String 的常用操作的更多相关文章
- Kotlin——初级篇(八):关于字符串(String)常用操作汇总
在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin--初级篇(三):数据类型详解这篇文章. 在 ...
- Redis string类型常用操作
Redis 有 string.list.set.zset.hash数据类型.string类型是最基础的,其他类型都是在string类型上去建立的,所以了解熟悉string类型的常用操作对于学习re ...
- Kotlin——关于字符串(String)常用操作汇总
在前面讲解Kotlin数据类型的时候,提到了字符串类型,当然关于其定义在前面的章节中已经讲解过了.对Kotlin中的数据类型不清楚的同学.请参考Kotlin——初级篇(三):数据类型详解这篇文章. 在 ...
- Java String 函数常用操作 & format() 格式化输出,代码详解
package _String_; import java.util.*; import java.math.*; import java.lang.*; public class _Strings ...
- string的常用操作
操作符 1.+:可以把两个字符串加起来 插入 iterator insert(iterator i, const char &ch); basic_string &insert(siz ...
- C++字符串string类常用操作详解(一)【初始化、遍历、连接】
代码示例: #include <iostream> #include "string" using namespace std; //字符串初始化 void strIn ...
- C# String类常用操作
1.string.Compare(s1,s2) 比较 按字母顺序后边的大于前边的 s1<s2 retrun -1 ;s1=s2 return 0; s1>s2 return1. Cons ...
- redis入门:介绍、特点、安装、各类型常用操作
一.redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. Redis支持多种类型的数据结构,如 字符串(strings), 散列(ha ...
- String 类上的常用操作
java 中String 类上的常用操作: 首先创建对象 String line = new String("String demo"); String line2 = new ...
随机推荐
- 介绍一个基于jQuery的Cookie操作插件
在网页客户端,我们经常会遇到读取或者设置cookie的情况,如果用纯生的js我们可能会遇到一些兼容性带来的麻烦,这里给大家介绍一个比较实用jquery操作cookie的插件,插件的源代码如下: jQu ...
- C语言入门教程-(2)基本程序结构
1.简单的C语言程序结构 要建造房屋,首先需要打地基.搬砖搭建框架(这大概就是为什么叫搬砖的原因).学习计算机语言的时候也一样,应该从基本的结构开始学起.下面,我们看一段简单的源代码,这段代码希望大家 ...
- Visual Studio 2010 SP1 在线安装后,找到缓存在本地的临时文件以便下次离线安装
由于在下载Visual Studio 2010安装程序(大约3G左右)的时候速度飞快,大约几分钟下载完毕(多线程下载工具下载),所以笔者在继续安装Visual Studio 2010 SP1的时候也选 ...
- SQL Server 问题之 排序规则(collation)冲突
一.写在前面 最近公司进行开发环境升级,数据库也准备了一个新的服务器,一切准备好后开始数据迁移,采取的方式为对现有Database(现有服务器Windows Server 2003 + SQL Ser ...
- 20165230 2017-2018-2 《Java程序设计》第8周学习总结
20165230 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章 java多线程机制 一个进程在其执行过程中,可产生多个线程.线程是比进程更小的执行 ...
- JS日期与字符串相互转换!!
一 日期转字符串 dateToString: function(date){ var year = date.getFullYear(); var month =(date.getMonth() + ...
- windows环境cmd下执行jar
项目目录结构 一,在pom.xml文件里添加配置 <build> <plugins> <plugin> <groupId>org.apache.mave ...
- Mac上删除不了的文件,Windows上也粉碎不了怎么办?
推荐一个Mac上的软件:Tuxera Disk Manager 用法很简单:选择删除文件原来所在的文件进行维护就可以了. 维护之后,在废纸篓中清除,成功.
- spring boot 中使用redis session
spring boot 默认的httpsession是存在内存中.这种默认方式有几个缺点:1.当分布式部署时,存在session不一致的问题:2.当服务重启时session就会丢失,这时候用户就需要重 ...
- ASP .Net Core系统部署到Ubuntu 16.04 具体方案
.Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...