廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码

Java的字符串用String表示

1.String特点:

  • 可以直接使用"..."表示一个字符串,不必使用new String:String s1 = "hello world";
  • 内容不可变
        String s = "hello world";
        System.out.println(s.equals("hello world"));

2.判断是否相等equals

    `    String s = "hello world";
        s.equals("hello world");
        s.equalsIgnoreCase("Hello WORLD");//忽略大小写

3.是否包含一个子串

contains:是否包含一个字串,boolean类型

indexOf:返回子串在原字符中的第一个位置的索引,没有返回-1,int类型

lastIndexOf:返回子串在原字符中最后一个位置的索引,没有返回-1,int类型

startsWith:原字符串是否以子串开始,boolean类型

endsWith:原字符串是否以子串结尾,boolean类型

        String s = "hello world";
        System.out.println(s + "是否包含world:" + s.contains("world"));
        System.out.println(s + "中第一个o的位置:"+ s.indexOf("o"));
        System.out.println(s + "最后一个o的位置:" + s.lastIndexOf("o"));
        System.out.println(s+ "是以ll开头:" + s.startsWith("ll"));
        System.out.println(s+"是以ld结尾:" + s.endsWith("ol"));

4.trim()移除字符串中的空格

  • 移除首尾空白字符
  • 空格 \t \r \n
  • 注意:trim不改变字符串内容,而是返回新字符串
        String s = " \thello world\r\n";
        System.out.println(s.trim());
        System.out.println("a"+s+"a");

5.提取字串

        String s = "hello world";
        System.out.println("4:"+s.substring(4));
        System.out.println("4-8:"+s.substring(4,8));

6.大小写转换

toUpperCase()转换为大写,可以加地区

toLowerCase()转换为小写,可以加地区

        String s = "hello world";
        System.out.println(s.toUpperCase());
        System.out.println(s.toLowerCase());
        System.out.println(s.toLowerCase(Locale.CANADA));
        System.out.println(s.toUpperCase(Locale.CANADA));

关于java.util.locale见(易佰教程)[https://www.yiibai.com/java/util/java_util_locale.html]

顺便吐槽以下,台独无处不在

7.替换字串replace

replace有2个重载方法,分别替换1个字符和1串字符

replaceAll(String regex, String replacement) 正则表达式替换字串

replaceFirst(String regex, String replacement)

        String s = "hello world";
        System.out.println(s.replace("l","r"));
        System.out.println(s.replace("ll","er"));

8.分割字符串split

通过正则表达式分割字符串

总结:

字符串是不可变对象

字符串操作不改变原字符串内容,而是返回新字符串

常用的字符串操作:提取子串、查找、替换、大小写转换等

字符串和byte[]互相转换时要注意编码,建议总是使用utf-8编码

原文地址:https://www.cnblogs.com/csj2018/p/10289915.html

时间: 2024-08-30 12:46:48

廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码的相关文章

廖雪峰Java2面向对象编程-3继承和多态-1继承

1.继承 继承是一种代码复用的方式. Student与Person有相同部分的代码. Student可以从Person继承,这样Student获得了Person的所有功能,只需要编写新增的功能即可.通过继承,可以实现代码的复用. 继承使用关键字extends,一个类只能有一个父类. 如果没有写明继承类,编译器会自动指定该类继承于基类Object. Person:超类super,父类,基类 Student:子类subclass,扩展类 Person.java //默认继承Object public

廖雪峰Java2面向对象编程-4抽象类和接口-1抽象类

每个子类都可以覆写父类的方法 如果父类的方法没有实际意义,能否去掉方法的执行语句?子类会报编译错误 如果去掉父类的方法,就失去了多态的特性 可以把父类的方法声明为抽象方法. 如果一个class定义了方法,但没有具体执行代码,这个方法就是抽象方法: 抽象方法用abstract修饰 抽象方法没有任何执行语句 因为无法执行抽象方法,因此这个类也必须声明为抽象类abstract class 无法实例化一个抽象类.如果子类不是抽象类,依旧可以被实例化. 抽象类作用: 抽象类用于被继承 抽象类可以强迫子类实

廖雪峰Java2面向对象编程-2数据封装-1方法重载

方法重载 方法重载Overload是指:多个方法的方法名相同,但各自的参数不同 参数的个数不同 参数的类型不同 参数位置不同 方法返回值类型通常都是相同的 目的:相同功能的方法使用同一名字,便于调用 如以indexOf()为例 public static void main(String[] args) { String s = "Test"; int n1 = s.indexOf('e');//返回字符的索引 int n2 = s.indexOf("st");//

廖雪峰Java2面向对象编程-4抽象类和接口-2接口

抽象方法本质上是定义接口规范 public abstract class Person{ public abstract void run(); } public class Student extends Person{ @Override public void run(){} } public class Teacher extends Person{ @Override public void run(){} } 如果一个抽象类没有字段,所有方法全部是抽象方法,就可以把抽象类改写为接口i

C++ Primer 学习笔记_66_面向对象编程 --定义基类和派生类[续]

算法旨在用尽可能简单的思路解决问题,理解算法也应该是一个越看越简单的过程,当你看到算法里的一串概念,或者一大坨代码,第一感觉是复杂,此时不妨从例子入手,通过一个简单的例子,并编程实现,这个过程其实就可以理解清楚算法里的最重要的思想,之后扩展,对算法的引理或者更复杂的情况,对算法进行改进.最后,再考虑时间和空间复杂度的问题. 了解这个算法是源于在Network Alignment问题中,图论算法用得比较多,而对于alignment,特别是pairwise alignment, 又经常遇到maxim

[.net 面向对象编程基础] (9) 类的成员(字段、属性、方法)

[.net 面向对象编程基础] (9) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态成员(static)和非静态成员 b.静态成员用static标识,不标识则默认为非静态成员 c.静态成员属于类所有,动态成员则属于实例所有,即对象 d.静态成员为类所有实例共享,无论类有多少实例或副本,静态成员只占用存中一块区域.非静态成员则在类的每个实例,都创建一个内存域. 下面主要说明一下类的主要

C++笔记:面向对象编程(Handle类)

句柄类 句柄类的出现是为了解决用户使用指针时需要控制指针的加载和释放的问题.用指针访问对象很容易出现悬垂指针或者内存泄漏的问题. 为了解决这些问题,有许多方法可以使用,句柄类就是其中之一.句柄类是一种包装类,用于存储和管理基类的对象指针,减轻用户使用对象的负担.句柄类使用指针执行操作,虚成员由于既可以指向基类型又可以指向派生类型,所以其行为将在运行时根据句柄实际绑定的对象而变化. 句柄类的设计有两个重要的考虑因素: 必须确定复制控制 是否屏蔽继承层次(不屏蔽用户需要了解基类对象的使用) 指针型句

C++ Primer 学习笔记_66_面向对象编程 -定义基类跟派生类[续]

面向对象编程 --定义基类和派生类[续] 四.virtual与其他成员函数 C++中的函数调用默认不使用动态绑定.要触发动态绑定,必须满足两个条件: 1)只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定. 2)必须通过基类类型的引用或指针进行函数调用. 1.从派生类到基类的转换 因为每个派生类对象都包含基类部分,所以可以将基类类型的引用绑定到派生类对象的基类部分可以用指向基类的指针指向派生类对象: void print_total(const Item_

js面向对象编程: js类定义函数时prototype和this区别?

在面向对象编写js脚本时,定义实例方法主要有两种 如下: function ListCommon2(afirst) { var first=afirst; this.do1=function () { alert("first do"+first); } } ListCommon2.prototype.do2=function() { // alert("first do"+first);//会出错,不能访问first this.do1(); } this.do1=