吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1778|回复: 9
收起左侧

[学习记录] 【自学笔记】 Java基础 - String类

[复制链接]
LongJL 发表于 2021-7-9 21:53
本帖最后由 LongJL 于 2021-7-9 22:59 编辑

String

string类是四大引用数据类型之一

  • API当中说:“Java程序中的所有字符串字面值(如"abc")都作为此类的实例实现。” 就是说:程序内所有的双引号字符串,都是String类的对象。(就算没有new,也照样是。)

字符串的特点:

    1.字符串的内容不可改变。【重点】
    2.整数因为字符串不可改变,所有字符串是可以共享使用的。
    3.字符串效果上相当于是char[]字符串数组,但是底层原理是byte字节数组

创建字符串的常见3+1种方式:

    三种构造方法:
        public String();创建一个空白字符串,不含有任何内容。
        public String(char[] array);根据字符数组的内容,来创建对应的字符串。
        public String(byte[] array);根据字节数组的内容,来创建对应的字符串。 
            一种直接创建:
        String str = "Hello";
//使用空参构造
String str1 = new String();//小括号留空,说明字符串什么内容都没有。
System.out.println("第一个字符串:" + str);//""

//根据字符数组创建字符串
char[] = charArray = {'A','B','C'};
String str2 = new String(charArray);
System.out.println("第二个字符串:" + str2);//ABC

//根据字符数组创建字符串
byte[] byteArray = {97,98,99};
String str3 = new String(byteArray);
System.out.println("第三个字符串:" + str3);//abc

//直接创建
String = str4 = "Hello";
System.out.println("第四个字符串:" + str4);//Hello

字符串常量池

  1. 程序当中直接写上的双引号字符串,就在字符串常量池当中。
  2. 双引号直接写的字符串在常量池当中,new的不在池当中。
  3. 对于基本类型来说,==是进行数值的比较
  4. 但是对于引用类型来说,==是进行地址值的比较。

常用的比较方法

==是进行对象的地址值比较,如果确定需要字符串的内容比较,可以使用俩个方法:

  • public boolean equals(Object obj)
    参数可以是任何对象,只有参数是一个并且内容相同才会给true,否则返回false
    备注:任何对象都能用Object进行结算。
    注意事项:
    1.equals具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
    2.如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
    推荐:“abc”.equals(str) 不推荐str.equals("abc");
    因为如果在调用方法是变量是个null,那么就会空指针报错NullPointException
  • public boolean equalsIgnoreCase(String str):忽略大小写,进行内容比较。
//equals比较
String strA = "Hello";
String strB = "Hello";
char[] charArray = {'H','e','l','l','o'};
String strC = new String(charArray);
System.out.println(strA.equals(strB));//true
System.out.println(strA.equals(strC));//true
System.out.println(strA.equals("Hello"));//true
System.out.println("Hello".equals(strA));//true

String当中与获取相关的常用方法有

  • public int length():获取字符串当中含有字符个数,拿到字符串长度。
  • public String concat(String str):讲当前字符串和参数字符串拼接成为返回值新的字符串。
  • public char charAt(int index):获取指定索引位置的单个字符。
  • public int indexof(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1值。

    String当中的截取方法

  • public String substring(int index):从参数的位置一直到字符串末尾,返回新字符串。
  • public String substring(int begin,int end):截取从begin开始,一直到end结束,中间的字符串。[begin,end)

    String当中与转换相关的常用方法有

  • public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值
  • public byte[] getBytes();获取当前字符串底层的字节数组。
  • public String replace(CharSequence oldString,CharSequence newString):讲所有出现的老字符串替换成新的字符串。
    备注:charSequence意思就是说可以接受字符串类型

    String字符串的分割方法

  • public String split(String regex):按照参数的规则,将字符串切分成若干部分;
    regex是一个正则表达式。
    如果是英文句点得写"\.   

    其余常用方法

  • public String trim():返回字符串的副本,忽略前面和尾部的空格
  • public boolean startsWith(String suffix):判断用于判断当前字符串对象的前缀是否位参数指定的字符串
  • public boolean endsWith(String suffix):判断用于判断当前字符串对象的后缀是否位参数指定的字符串
  • public String toLowerCase():把所有字符从大写字母改为小写字母
  • public String toUpperCase():把所有字符从小写字母改为大写字母

    public class Demo01String{
        public static void main(Stringp[] args){
    
            //获取字符串长度
            int length = "asdasfgasdqwaedasfawfqawdasqfaw".length();
            System.out.println("字符串的长度是:" + length);
    
            //拼接字符串
            String str10 = "Hello";
            String str20 = "World";
            String str30 = str10.concat(str2);
                                                String str40 = str10 + str20
            System.out.println(str10);//Hello,原封不动
            System.out.println(str20);//World,原封不动
            System.out.println(str30);//HelloWorld,新的字符串
            System.out.println(str40);//HelloWorld,新的字符串
    
            //获取指定索引位置的单个字符
            char ch = “Hello”.charAt(1);
            System.out.println("ch");//e
    
            //查找参数字符串在本来字符串当中出现的第一次索引位置
            //如果根本没有,返回-1值
            String original = "HelloWorld";
            int index = original.indexOf("llo");//2
            System.out.println(index);
            System.out.println("HelloWorld".indexOf("abc"));//-1
    
            //截取字符串
            String strA1 = "HelloWorld";
            String strA2 = str1.substring(5);
            System.out.println(strA1);//HelloWorld
            System.out.println(strA2);//World,新字符串
    
            String strA3 = strA1.substring(4,7);
            System.out.println(strA3); //oWo
    
            //转char数组
            char[] chars = "Hello".toCharArray();
            System.out.println(Chars[0])//H
            System.out.println(Chars.length)// 5
    
            //转byte数组
            byte[] bytes = "abc".getBytes();
            for(int i=0;i<bytes.length;i++){
                System.out.println(bytes[i]);
            }
    
            //替换字符
            String l = "How do you do?";
            String l1 = l.replace("o","*");
            System.out.println(l1);//H*w d* y*u d*?
    
            //分割字符串
            String a1 = "aaa,bbb,ccc";
            String[] array1 = a1.split(",");
            for(int i=0;i<array1.length;i++){
                System.out.println(array1[i]) ;
            }
            //去空格
            String aa1 = "  11  "
            String aa1 = aa1.trim();
            System.out.println(aa1); //11
    
            // 判断字符串的开始和结尾
            String num1 = "1110044";
            String num2 = "123124124521"; 
            boolean b = num1.startsWith("11");// 判断字符串num1,是否以"11"开头
            boolean b2 = num2.startsWith("22");// 判断字符串num2,是否以"22"结尾
    
            // 转大小写
            String as= "aaa";
            String at= "BBB";
            System.out.println(aaa.toUpperCase()) ; //AAA
            System.out.println(aaa.toLowerCase()) ; //bbb
        }
    }

注:字符串的格式化我打算在之后和正则表达式一起出,这一章的篇幅也偏长了,看着挺累的 @_@

免费评分

参与人数 1热心值 +1 收起 理由
YVKG + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| LongJL 发表于 2021-7-9 21:55
代码后面一段歪了我也不知道为啥,在编辑的时候还好好的
侃遍天下无二人 发表于 2021-7-9 22:39
 楼主| LongJL 发表于 2021-7-9 22:51
侃遍天下无二人 发表于 2021-7-9 22:39
建议拆分一下,代码太长容易劝退新手

emmm 我也是这么觉得  所以我就没有继续写 不过这个还好了 主要是方法的使用,用到的时候看看就行 我偷个懒 以后我会注意的
 楼主| LongJL 发表于 2021-7-9 22:59
侃遍天下无二人 发表于 2021-7-9 22:39
建议拆分一下,代码太长容易劝退新手

拆了下 应该好一点了
a525 发表于 2021-7-9 23:05
开发中创建字符串方式只有一种:String str = "字符串";
 楼主| LongJL 发表于 2021-7-9 23:09
a525 发表于 2021-7-9 23:05
开发中创建字符串方式只有一种:String str = "字符串";

是这样的
不苦小和尚 发表于 2021-7-10 06:16
不错不错,JAVA还是挺简单的
 楼主| LongJL 发表于 2021-7-10 07:02
不苦小和尚 发表于 2021-7-10 06:16
不错不错,JAVA还是挺简单的

希望后面也是这么简单哈哈哈 虽然不可能
drunkhao 发表于 2021-11-12 14:49
一个代码太长了,建议演示代码简短一点,有点绕晕了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表