当前位置: 首页 > article >正文

【前端学java】java中的字符串操作(10)

往期回顾:

  • 【前端学java】JAVA开发的依赖安装与环境配置 (0)
  • 【前端学 java】java的基础语法(1)
  • 【前端学java】JAVA中的packge与import(2)
  • 【前端学java】面向对象编程基础-类的使用 (3)
  • 【前端学java】类中的访问权限详解,通俗易懂(4)
  • 【前端学java】java中final修饰符(5)
  • 【前端学java】全网最通俗易懂的JAVA抽象概念(6)
  • 【前端学java】Java中的接口和枚举概念(7)
  • 【前端学java】java中的Object类(8)
  • 【前端学java】java 中的数组(9)

字符串的创建

同前端代码一样,java中的字符创建非常简单

public class Object_01 {
    public static void main(String[] args) {
        // 字符串创建
        String name = "shixiaoshi";
    }
}

java中字符串的创建是基于java.lang.String这个类的,这意味着,字符串的创建实际上是这样的

public class Object_01 {
    public static void main(String[] args) {
        // 字符串完成的创建方式
        String name = new String("shixiaoshi") ;
    }
}

实际开发中应该使用那种?

答案显而易见,使用双引号直接声明更方便快捷!

java虚拟机基于第一种创建方式有内部优化,所有相同的字符数据,其实来源于同一个字符串对象,这样就可以降低频繁的new String()带来的资源和内存消耗了。

public class Object_01 {
    public static void main(String[] args) {
        // 字符串完成的创建方式
        String name = new String("shixiaoshi") ;
        String name1 = new String("shixiaoshi") ;
        String name2 = "shixiaoshi";
        String name3 = "shixiaoshi";
        System.out.println(name == name1);   // false
        System.out.println(name1 == name2);  // false
        System.out.println(name2 == name3);  // true
    }
}

上述代码验证了通过new String创建完全相同的字符串,结果也是不同的字符对象;通“”直接创建的字符,结果是相同的。

字符串和字符是不相同的概念

要注意的是,字符串和字符是不一样的,比如字符串“8石f”,实际是由“8”、“石”、“f”三个字符组成的。

我们在来复习一下java中的基本数据单位概念。

基本数据单位

在Java中,最小的的数据单位是Byte,也就是字节类型,1 字母 = 1 byte ,一个汉字是一个字符,占两个字节。

之前的学习中,我们介绍了基本数据类型。每种数据类型的字节数都是不尽相同的,我们来复习一下:

整型数据类型(整数):

  • byte:1个字节,范围为-128到127
  • short:2个字节,范围为-32,768到32,767
  • int:4个字节,范围为-2,147,483,648到2,147,483,647
  • long:8个字节,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807

浮点型数据类型(小数):

  • float:4个字节,范围为±3.40282347E+38F(有效位数为6-7位)
  • double:8个字节,范围为±1.7976931348623157E+308(有效位数为15位)

字符型数据类型:

  • char:2个字节,表示一个Unicode字符

布尔型数据类型:

  • boolean:表示逻辑值,只能是true或false

现在,我们应该能清除的知道,“8石f” 这个字符串的构成了

字符串8石f
字符8f
字节1111

通过上述例子,我们也能明白,字符串实际就是一个特殊的字符数组拼接而成的。

通过字符数组创建字符串

public class Object_01 {
    public static void main(String[] args) {
        char[] name = {'石','小','石'};
        String names = new String(name);
        System.out.println(names);   // 石小石
    }
}

注意,char[] name = {‘石’,‘小’,‘石’} 代码中, 用的是单引号而不是双引号,使用双引号会报错。

java中的单引号表示字符,一般是char类型的;java中的双引号是字符串,是String类型的。

转义字符

我们如果想打印一个引号,该怎么做呢?

直接打印必然报错,我们只需要加一个转义字符即可!

public class Object_01 {
    public static void main(String[] args) {
        System.out.println(""");   // "
    }
}

字符串的操作

拼接

和前端一样,字符串的拼接可以直接用 + 号;其作用和前端的+用法效果是一致的。

String name = "shi" + "xiao" + "shi";

这种形式创建的字符等同于下面方式创建的字符

String name1 = "shixiaoshi";

这两种形式创建的字符其实完全一样

public class Object_01 {
    public static void main(String[] args) {
        // 拼接
        String name = "shi" + "xiao" + "shi";
        String name1 = "shixiaoshi";
        System.out.println(name.hashCode() == name1.hashCode()); // true
    }
}

hashCode方法用于返回对象的内存地址,因此可以判断两个字符对象相同。

比较

要比较两个字符串是否相同,可以用equals。

equals用于判断两个对象是否相等。默认情况下,equals()方法比较的是对象的引用是否相同(即是否指向同一个内存地址)。

public class Object_01 {
    public static void main(String[] args) {
        String a = "shi";
        String b = "shi";
        System.out.println(a.equals(b));    // true
    }
}

equals是区分大小写的

public class Object_01 {
    public static void main(String[] args) {
        String a = "shi";
        String b = "SHI";
        System.out.println(a.equals(b));  // fasle
    }
}

如果想忽略大小写,可以用equalsIgnoreCase

截断

substring

java中的字符截断方法substring和前端的字符截断方法substring也是一致的

public class Object_01 {
    public static void main(String[] args) {
        String java = "hello world";
        System.out.println(java.substring(0,5));   // hello
    }
}


       for (int i=0;i < s.length;i++){
           System.out.println(s[i]);
       }

split

splitf方法将一个字符分隔成数组,和前端用法也是一致的

trim

trim() 方法用于删除字符串的头尾空白符。这和前端中的trim方法用法也是一样的

public class Object_01 {
    public static void main(String[] args) {
        String a = " hello world ";
        System.out.println(a.trim());
    }
}

替换

repalce

replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。

public String replace(char oldChar,char newChar)

它的第一个参数只能是字符或字符串

public class Object_01 {
    public static void main(String[] args) {
        String a = "hello hello world";
        System.out.println(a.replace("hello","hi"));  // hi hi world
    }
}

注意,这和前端中的replace是有些区别的。前端中:replace用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

<script>
  var str = "Hello Hello World!";
let index = str.replace(/Hello/i, "hi");
console.log(index); // hi Hello World!
</script>

前后端replace区别

1、java中replace第一个参数只能是字符或者是字符串;而js可以是正则。

2、java中replace替换后,所有匹配到的字符都会变化;而js中,匹配的字符只会替换第一个。

replaceAll

replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。

语法

public String replaceAll(String regex, String replacement)

参数

  • regex – 匹配此字符串的正则表达式。
  • newChar – 用来替换每个匹配项的字符串。
public class Object_01 {
    public static void main(String[] args) {
        String a = "hello hello world";
        System.out.println(a.replaceAll("hello|world","hi"));  // hi hi hi
    }
}

js中的repalceAll用法和这个也是大同小异的

大小写转换

java中的字符大小写转换和前端是一致的

public class Object_01 {
    public static void main(String[] args) {
        String a = "Hello";
        System.out.println(a.toLowerCase()); // hello
        System.out.println(a.toUpperCase()); // HELLO
    }
}

http://www.kler.cn/a/136618.html

相关文章:

  • Sql 创建用户
  • SpringBoot | 使用Apache POI库读取Excel文件介绍
  • 【Arm】Arm 处理器的半主机(semihosting)机制
  • MakeFile使用指南
  • QT c++ 按钮 样式 设置按下和松开的背景颜色
  • vue-codemirror定位光标位置并在光标处插入信息
  • 国产低功耗Sub-1G全频段收发一体芯片DP4306遥控器、智能抄表、工业控制等应用。
  • Java 多线程进阶
  • uni-app - 弹出框
  • Qt程序打包成.exe可执行文件
  • SpringCloud微服务通信两种方式Feign和Dubbo:Feign基本使用、自定义配置、使用优化;Dubbo基本实现
  • Linux 基本语句_11_无名管道文件复制
  • 【Java源码】智慧工地云平台:工地管理专家
  • 【深入Scrapy实战】从登录到数据解析构建完整爬虫流程
  • .skip() 和 .only() 的使用
  • 打工人必备!6个超级实用的办公软件,让你高效完成工作
  • Android 9.0 设备蓝牙、位置、WIFI、NFC功能默认关闭
  • GitLab的个人仓库转移到团队仓库
  • 什么是硬分叉?硬分叉的原因是什么?硬分叉的影响是什么?
  • 请问DasViewer是否支持与业务系统集成,将业务的动态的数据实时的展示到三维模型上?
  • SQL单表复杂查询where、group by、order by、limit
  • 几个强力的nodejs库
  • JAXB:根据Java文件生成XML schema文件
  • 打印工具HandyPrint Pro Mac中文版软件特点
  • FISCOBCOS入门(十)Truffle测试helloworld智能合约
  • 微信私域运营工具CRM