深入浅出 java.String

深入浅出 java.String

Java 处理字符串常用的一些方法

Java定义一个字符串

  1. 直接定字符串

    直接定义字符串表示直接使用“”来表示字符串中的内容

    String str = "Hello Mujey";
    
    String str;
    str = "Hello Mujey"

    对字符串的赋值操作可以在声明号String类型的句柄之后进行,但是在使用这个对象的之前必须进行赋值操作。

  2. 使用String类进行定义

    String类位于 java.lang包中,当我们创建一个java程序的时候,系统会自动帮我们引用java.lang.*所以我们可以直接使用,并不需要手动import

    String str = new String("Hello Mujey");
    String s = new String(str);

    注意: 当直接使用String(),括号里面不输入任何参数的时候,会创建一个空的字符串,并且赋值给句柄。

    String(),括号中还可以输入一个数组:

    char[] c = {'M','u','j','e','y'};
    String str = new String(c);
    System.out.println(str); // Mujey

    在String()的括号中放入一个数组的时候,实质上是对该数组进行了一个克隆操作, 所以在赋值完成之后再改变数组中元素的值并不会影响字符串中已经存储的值。

    char c = {'h','e','l','l','o'};
    String str = new String(c,0,3);
    System.out.println(str); // hel

    在括号中还可以传入两个integer类型的参数,用于表示截取从第几个元素到第几个元素,并将他们连成一个字符串。

String和Integer之间的转换

String转换为int

String类型转换为int类型主要有两种方式

  • Integer.parseInt(str)
  • Integer.valueOf(str).inValue()
String str = "333";
int i = 0;

// 第一种方法
i = Integer.parseInt(str); // => int: 333
i = Integer.parseInt("345"); // => int: 345

i = 0;
// 第二种方法
i = Integer.valueOf(str).inValue(); // => int: 333
i = Integer.valueOf("345").inValue(); // => int: 345

Int转换为String

前几天在LeetCode做算法题的时候看到一个题目来和大家分享一下,这个题目非常的简单。给出一组数组,返回位数为偶数的个数例如:

输入:[345,365,343,53,43,2532]

返回:3

53和43是两位数,他们的位数是2;2532是一个四位数,它的位数是4。所以总共有3个偶数位数的数字。

这个题目最简单的解法就是将int类型的整数转换成一个字符串,然后通过字符串的长度来判断是奇数位数还是偶数位数。

 public int findNumbers(int[] nums) {
        int result = 0;
        for (int i = 0; i < nums.length; i++) {
            String s = String.valueOf(nums[i]);
            if (s.length() % 2 == 0) {
                result ++;
            }
        }
        return result;
 }

这是这道题的解法,怎么样,是不是非常的简单。但是其中就涉及到了int类型转换成String类型的操作。

int类型转换为String类型有3种方式:

  • String str = String.valueOf(int)
  • String str = Integer.toString(int)
  • String str = "" + i
int num = 30;

String str1 = String.valueOf(num); // String: "30"
String str2 = Integer.toString(num); // String: "30"
String str3 = "" + num; // String: "30"

这三种方式的转换结果都是一样的,但是博主推荐使用前面的两种方式来转换。最后一种虽然语法简介,但是它的短板就是执行的效率远远没有前面两种方式来的高。

第一种方式valueOf()中必须填入一个值,不然会有空指针异常产生。

获取字符串长度

细心的您肯定已经发现在上面的LeetCode算法题中,我还用到了s.length这个方法,这个方法的作用就是简单的获取字符串的长度。

在有些方面,字符串有点像一个char类型的数组,他们都可以使用.length来获取长度。但是稍有不同,字符串获取长度的.length()后面有一对小括号,说明这是一个方法,而char类型的数组,获取长度的方式则是获取这个数组的length属性,所以没有一对小括号

String str = "29493929134";
int i = str.length();
System.out.println(i); // 11

String类型的大小写转换

字符串类型的大小写转换只适用于英文,在中文中不可用,那也是理所当然的,因为中文没有大小写 (′▽`)

英文字符串的大小分别使用两个方法来完成:

  • 转换为小写: str.toLowerCase()
  • 转换为大写: str.toUpperCase()
String str = "abcd";
System.out.println(str.toUpperCase()); //:=> ABCD
System.out.println(str.toLowerCase()); //:=> abcd

去除字符串中的空格

如果一个字符串中的空格会对执行程序:例如判断等操作有所影响的时候,我们可以使用:

str.trim()这个方法来去除字符串中的空格:

String str = "Hello Java";
System.out.println(str.trim()); //:=>HelloJava

注意.trim()方法只能去除字符串中的半角空格,换句话来说中文状态下的全角空格,使用.trim()方法是无法去除的。

这种时候我们需要用到.replace()方法,将字符串中的全角空格转会成半角空格,然后用.trim()方法将它去除掉,.replace()方法在使用的时候需要两个参数,被替换的字符和替换它们的字符。

全角空格的unicode编码是12288,所以想讲全角空格替换为半角空格,就只需要

str.replace((char)12288, ' ');

截取和分割字符串

截取字符串

substring()方法可以用来截取字符串,这个方法最多可以传入两个参数,最少一个。

在传入一个参数的时候就表示从这个字符串的第几个字符开始截取到最后一个字符。

而当这个方法收到两个参数的时候,且第二个参数必须大于第一个参数,这个方法就会返回从第几个字符到第几个字符的字符串片段。

String str = "I like programming";
System.out.println(str.substring(2)); //:=>like programming
System.out.println(str.substring(1)); //:=> like programming
System.out.println(str.substring(2,5)); //:=>like

分割字符串

split()方法可以用来分隔字符串

split()方法可以穿出一个String类型的分割标志,这是必不可少的,.|这两个字符需要需要使用\\转义字符来进行转义,不然java是无法识别它们的

String str = "Java,Python,Go,C#,Swift,Ruby,PHP,Object-C";
String[] strs = str.split(",");
for (str : strs){ System.out.print(str + "\t"); }
//  Java    Python  Go  C#  Swift   Ruby    PHP Object-C

String frontEnd = "JavaScript|HTML5|CSS|jQuery|vue|React|Bootstrap";
String[] frontEnds = frontEnd.split("\\|"); // 使用转义字符\for (str : frontEnds){ System.out.print(str + "\t");}
//  JavaScript  HTML5   CSS jQuery  vue React   Bootstrap

在这个字符串类型的参数后面,还可以加上一个int类型的参数

String str = "Java,Python,Go,C#,Swift,Ruby,PHP,Object-C";
String[] strs = str.split(",", 4);
for (str : strs){ System.out.print(str + "\t"); }
//  Java    Python  Go  C#,Swift,Ruby,PHP,Object-C

原文地址:https://www.cnblogs.com/mujey/p/12233276.html

时间: 2024-10-24 08:48:02

深入浅出 java.String的相关文章

【Servlet】深入浅出Java重定向和请求转发

import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import javax.servlet.*; import com.bjpowernode.exam.model.*; import com.bjpowernode.exam.manager.*; public class SearchStudentServlet extends HttpServlet { public

(CZ深入浅出Java基础)设计模式笔记

一.面向对象思想设计原则 1.单一职责原则 其实就是开发人员经常说的"高内聚,低耦合",也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 2.开闭原则 核心思想是:一个对象对扩展开放,对修改关闭.其实开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是修改现有代码.也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证它能一直运行下去,如何能够做到这一点呢?这就需要借助于抽象和

图解 & 深入浅出Java初始化与清理:构造器必知必会

Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter    :BYSocket 在面向对象编程中,编程人员应该在意"资源".比如 ? 1 <font color="#000000">String hello = "hello": </font> 在代码中,我们很在意在内存中Stri

(CZ深入浅出Java基础)线程笔记

一.线程的引入 1.多线程概述 1.1.进程 a.正在运行的程序,是系统进行资源分类和调用的独立单位. b.每个进程都有它自己的内存空间和系统资源. 1.2.线程 a.是进程中的单个顺序控制流,是一条执行路径. b.一个进程如果只有一条路径,则称为单线程程序. c.一个进程如果有多条执行路径,则称为多线程程序. 1.3.小结 线程多的进程抢到CPU执行权的概率大,但是仍具有随机性. 2.Java程序运行原理 2.1.Java运行 Java命令会启动Java虚拟机,启动JVM,等于启动了一个应用程

2.原子--深入浅出java原子操作

从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始).很多情况下我们只是需要一个简单的.高效的.线程安全的递增递减方案.注意,这里有三个条件:简单,意味着程序员尽可能少的操作底层或者实现起来要比较容易:高效意味着耗用资源要少,程序处理速度要快:线程安全也非常重要,这个在多线程下能保证数据的正确性.这三个条件看起来比较简单,但是实现起来却难以令人满意. 通常情况下,在Java里面,++

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中

Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0

课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值  String str="Hello";  推荐这种 使用关键字new  String str1=new String("Hello"); 在内存中开辟2个空间 如图: 源代码 StringDemo01.java 2.String内容的比较 String str="Hello"

java String 两种不同的赋值 比较

原文http://blog.163.com/[email protected]/blog/static/1271436362012101214031911/ 在此感谢博主写出这么优秀的文章. 首先明确一点,String是一个类.下面我们主要讨论两个问题  a) String类的对象的两种赋值方式  b) 为什么String类的对象可以直接赋值  a) 1 类似普通对象,通过new创建字符串对象.String str = new String("Hello"); 内存图如下图所示,系统会

java string,需要进行首字母大写改写

java string,需要进行首字母大写改写,网上大家的思路基本一致,就是将首字母截取,转化成大写然后再串上后面的,类似如下代码 //首字母大写     public static String captureName(String name) {         name = name.substring(0, 1).toUpperCase() + name.substring(1);        return  name;           } 将字符串name 转化为首字母大写.但是