首页 > 编程语言 >【Java】详解String类中的各种方法

【Java】详解String类中的各种方法

时间:2024-07-07 23:29:02浏览次数:15  
标签:Java String println str 字符串 public 类中 out

创建字符串

常见的创建字符串的三种方式:

// 方式一
String str = "hello world";
// 方式二
String str2 = new String("hello world");
// 方式三
char[] array = {'a', 'b', 'c'};
String str3 = new String(array);

"hello" 这样的字符串字面值常量, 类型也是 String.
String 也是引用类型. String str = "Hello"; 这样的代码内存布局如下:

 

 下面我来写一个代码:

String str1 = "hallo";
String str2 = str1;
str1 = "world";
Systrm.out.println(str2);

很多人是否会认为 str1 的值改变了因此 str2 的值也跟着改变了,事实上 str1 里面的值并非是改变了而是指向了一个新的字符串。所以 str2 里面的值还是 hallo 。

 此时该代码在内存中的布局是这样的:

 判断字符串相等

在整型中我们判断两个整形是否相等用的是一下的方法:

int x = 10;
int y = 10;
if(x == y){
 System.out.println(true);
}

但是在字符串中我们能否也用这个方法呢?

我们用代码试试:

我们乍一看好像是可以的,但是我们换一个方法试试呢?

答案是错误的!

注意: String 使用 == 比较并不是在比较字符串内容, 而是比较两个引用是否是指向同一个对象。

Java 中要想比较字符串的内容, 必须采用String类提供的equals方法。

字符、字节与字符串

字符与字符串

将字符数组转变为字符串

public class Test {
    public static void main(String[] args) {
        char[] array = {'a','b','c','d'};
        String str1 = new String(array);
        System.out.println(str1);
        String str2 = new String(array,0,2);
        System.out.println(str2);
    }
}

输出结果:

 在将字符数组转变为字符串时既可以将整个数组转变为字符串也可以指定范围。

字符串转变为字符数组

public class Test {
    public static void main(String[] args) {
        String str = "abcdef";
        char[] array = str.toCharArray();
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

输出结果:

获取字符串指定位置的字符

public class Test {
    public static void main(String[] args) {
        String str = "abcdef";
        char ch = str.charAt(1);
        System.out.println(ch);
    }
}

字节与字符串

将字符串转变为字节数组

public class Test {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "halloworld";
        byte[] array = str.getBytes();
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

运行结果:

字符串常见操作

字符串比较

区分大小写的比较

public class Test {
    public static void main(String[] args) {
        String str1 = "abcd";
        String str2 = "abcd";
        if(str1.equals(str2)){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
    }
}

 不区分大小写的比较

public class Test {
    public static void main(String[] args) {
        String str1 = "abcd";
        String str2 = "AbCd";
        if(str1.equalsIgnoreCase(str2)){
            System.out.println(true);
        }else{
            System.out.println(false);
        }
    }
}

比较两个字符串的大小

public class Test {
    public static void main(String[] args) {
        String str1 = "abcd";
        String str2 = "dsjkowjrd";
        System.out.println(str1.compareTo(str2));
        System.out.println(str1.compareToIgnoreCase(str2));
    }
}

字符串的查找

判断一个子字符串是否存在

public class Test {
    public static void main(String[] args) {
        String str1 = "halloworld";
        System.out.println(str1.contains("world"));
    }
}

查找指定字符串的位置

public class Test {
    public static void main(String[] args) {
        String str = "halloworld";
        System.out.println(str.indexOf("ow"));//从开始往后查找子字符串的位置
        System.out.println(str.indexOf("ow",3));//从指定位置开始往后查找子字符串的位置
        System.out.println(str.lastIndexOf("ow"));//从后往前查找子字符串的位置
        System.out.println(str.lastIndexOf("ow",7));//由指定位置从后往前查找子字符串的位置
    }
}

查找到了则返回子字符串的起始位置,没有查找到则返回 -1。

判断字符串是否以给定字符串开头

public class Test {
    public static void main(String[] args) {
        String str = "halloworld";
        System.out.println(str.startsWith("ha"));//从头开始判断字符串是否以该子字符串开头
        System.out.println(str.startsWith("ll",2));//从指定位置开始判断字符串是否以该子字符串开头
    }
}

判断字符串是否以给定字符串结尾

public class Test {
    public static void main(String[] args) {
        String str = "halloworld";
        System.out.println(str.endsWith("ld"));
    }
}

字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据

public class Test {
    public static void main(String[] args) {
        String str = "halloworld";
        String str1 = str.replaceAll("l","ww");//替换所有的指定内容
        System.out.println(str1);
        String str2 = str.replaceFirst("l","ww");//替换第一个出现的指定内容
        System.out.println(str2);
    }
}

由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串

字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串

public class Test {
    public static void main(String[] args) {
        String str = "hallo world zhang san";
        String[] array = str.split(" ");//按照指定分隔符拆分成若干个子字符串
        for(String s : array){
            System.out.println(s);
        }
        String[] array1 = str.split(" ",2);//按照指定分隔符拆分成2个字符串
        for(String s : array1){
            System.out.println(s);
        }
    }
}

拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义。

例如拆分IP地址:

public class Test {
    public static void main(String[] args) {
        String str = "192.166.1.1";
        String[] array = str.split("\\.");
        for(String s : array){
            System.out.println(s);
        }
    }
}

注意事项:
1. 字符"|","*","+"都得加上转义字符,前面加上"\".
2. 而如果是"",那么就得写成"\\".
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符

字符串的截取

public class Test {
    public static void main(String[] args) {
        String str = "halloworld";
        String str1 = str.substring(5);//从指定位置截取到最后
        String str2 = str.substring(0,5);//截取一个范围的内容
        System.out.println(str1);
        System.out.println(str2);
    }
}

去除字符串左右空格保留中间空格

public class Test {
    public static void main(String[] args) {
        String str = "   hallo world   ";
        String str1 = str.trim();
        System.out.println(str1);
    }
}

字符串转大写

public class Test {
    public static void main(String[] args) {
        String str = "halloworld";
        String str1 = str.toUpperCase();
        System.out.println(str1);
    }
}

字符串转小写

public class Test {
    public static void main(String[] args) {
        String str = "HALLOworld";
        String str1 = str.toLowerCase();
        System.out.println(str1);
    }
}

字符串入池

public class Test {
    public static void main(String[] args) {
        String str = new String("halloworld").intern();
    }
}

字符串连接

public class Test {
    public static void main(String[] args) {
        String str = "hallo";
        String str1 = str.concat("world");
        System.out.println(str1);
    }
}

判断字符串是否为空

public class Test {
    public static void main(String[] args) {
        String str = "";
        System.out.println(str.isEmpty());
    }
}

空的意思是该字符串长度为0.

标签:Java,String,println,str,字符串,public,类中,out
From: https://blog.csdn.net/yican2580/article/details/140245267

相关文章

  • 03-码出高效:Java开发手册.pdf
    03-码出高效:Java开发手册.pdf03-码出高效:Java开发手册.pdfMySQL技术内幕InnoDB存储引擎第2版.pdf​​‍​​‍‍......
  • 03-码出高效:Java开发手册.pdf
    03-码出高效:Java开发手册.pdf03-码出高效:Java开发手册.pdf​​​​‍​​‍‍......
  • 基于Java“萌宠之家”宠物综合服务平台设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针......
  • 基于Java“镜头人生”约拍网站系统设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本“镜头人生”约拍网站就是在这样的大......
  • 基于Java:流浪动物领养信息系统设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本流浪动物领养信息系统就是在这样的大......
  • 基于Java“花鸣”B2C电子商务平台设计实现(源码+lw+部署文档+讲解等)
    \n文末获取源码联系感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询系统介绍:现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本“花鸣”B2C电子商务平台就是在这样......
  • 语法2-运算符、包机制、JavaDoc
    语法运算符运算符具有优先级-网上查(一般使用括号保证)/-除,%-取余符号-21/10二十一除十取余数,幂运算使用工具类表示Math.pow(2,3)-2的3次方++自加,--自减inta=3;intb=a++;//输出a=4,b=3intb=++a;//输出a=4,b=4==-等于,!=-instanceof-不等于逻辑运算符-与或非-&......
  • 钉钉通知-java异常告警
    效果   importcn.hutool.core.date.DateUtil;importcn.hutool.core.exceptions.ExceptionUtil;importcn.hutool.core.util.StrUtil;importcn.hutool.extra.spring.SpringUtil;importcn.hutool.http.HttpUtil;importcn.hutool.json.JSONUtil;importlombok.Da......
  • Java计算机毕业设计美容机构管理系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高和美容意识的增强,美容行业迎来了前所未有的发展机遇。然而,传统的美容机构管理模式往往存在效率低下、信息孤岛、顾客体验不佳......
  • Java计算机毕业设计酒店管理网站(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,酒店行业作为旅游产业链中的关键环节,面临着日益激烈的市场竞争和多元化的客户需求。传统的酒店管理模式已难以满足现代顾客对于......