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 ...
随机推荐
- Python概念-迭代器的__iter__和__next__
大家都知道__iter__是可迭代对象和迭代器的独有方法,也知道__next__是迭代器的 既然已经学了面向对象了,那么如何自己写一个: 代码示例: # 编辑者:闫龙 class Range: def ...
- post请求远程url 报错“基础连接已经关闭...Authentication.AuthenticationException...远程证书无效”解决方案
当我们有时用代码编写post请求url远程地址会报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系. ---> System.Security.Authentication.A ...
- mysql 数据范围总结
MEDIUMINT 带符号的范围是-8388608到8388607,无符号的范围是0到16777215,使用3个字节. 一般情况下推荐使用 unsigned (无符号,即只接受正整数)
- Pycharm和IntelliJ IDEA激活 2017.3.x版本
PyCharm 2017.3.3 (Professional Edition) 已经屏蔽了http://www.imsxm.com/ http-server激活方式,我根据参考教程搭建了一个,如有 ...
- js实现数组、对象深度克隆的两种办法
1.深度克隆的原理 JS中的深度克隆,指的是原对象改变了,克隆出来的新对象也不会改变,原对象与新对象是完全独立的关系. 实现深度克隆的原理得从对象是一种引用类型说起 众所周知,对象是一种引用类型,对象 ...
- USB descriptor【转】
struct usb_device_descriptor { __u8 bLength;//设备描述符的字节数大小,为0x12 __u8 bDescriptorType;//描述符类型编号,为0x01 ...
- swagger学习
https://segmentfault.com/a/1190000010144742 https://segmentfault.com/a/1190000014775124 https://blog ...
- linux文件管理 -> 系统目录结构
几乎所有的计算机操作系统都是用目录结构组织文件.具体来说就是在一个目录中存放子目录和文件, 而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支, 所以该 ...
- 【转】shell命令中>/dev/null 2>&1的实现原理
异步执行 exec("/alidata/server/php/bin/php /nas/wxdoctor/index.php App/Common/WordsPic/user_id/&quo ...
- matlab随笔
主要是记录一些函数.(博客园的一些操作实在是太不方便了) cat函数:http://blog.sina.com.cn/s/blog_6b7dfd9d0100mnz7.html 联结两个数组 magic ...