ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

String类

2022-01-29 16:58:41  阅读:73  来源: 互联网

标签:String System ---------- 字符串 println out


文章目录

String类概述

  • 字符串是常量,创建之后不可改变
  • 字符串字面值存储在字符串池中,可以共享
  • String s=“Hello”;产生一个对象,字符串池中存储
  • String s=new String(“Hello”); 产生两个对象,堆、池各存储一个

String常用 方法

代码

package com.qiu.demo;

public class Demo1{
    public static void main(String[] args) {
        /*
        * 1.创建方式1
        * String 对象名="";//字符串在常量池里面
        * 2.创建方式2
        * String 对象名=new string("");//字符串在堆里面和常量池都有(只不过堆里面的字符串是指向常量池的字符串)
        * */
        String s1="漩涡鸣人";
        s1="宇智波佐助";//重新给s1赋值并没有修改s1的数据,只是重新在常量池里开辟一个空间
        String s2="宇智波佐助";//先在常量池找相同的数据,然后地址相同指向同一个字符串
        String s3=new String("春野樱");//首先在常量池里面找相同的,没有相同的就会在堆和常量池开辟一个空间(实际上堆的空间里面的字符串指向了常量池的字符串)
        String s4=new String("春野樱");
        System.out.println(s3==s4);//false  比较的是地址,两个引用都在堆里面有new出来的空间
        System.out.println(s3.equals(s4));//true  比较是常量池的字符串
        System.out.println(s1==s2);//在字符串相同指向的都是同一个地址

    }
}

控制台打印结果

false
true
true

记住那个就可以打对号

  • length()---->返回结果是字符串长度
  • charAt(下标)—>返回结果是输入下标的字符
  • contains(“字符串”)—>返回结果是布尔型(判断字符串里面,有没有参数里面的字符串)
  • toCharArray()—>返回一个字符型的数组
  • indexOf(“字符”)—>返回匹配到的字符下标
  • lastIndexOf(“字符”)—>返回字符最后出现的位置
  • trim()—>去除前后的空格(不会去除中间的空格)
  • toUpperCase()—>把小写转换为大写(适合英文)
  • toLowerCase()—>把大写转化为小写
  • endsWith(“字符串”)—>判断以什么开头,返回结果是布尔型
  • startsWith(“字符串”)—>判断以什么结尾,对则true,否则就false
  • replace(“原来的字符串”,“替换的字符串”)—>替换字符串中的字符串
  • split(“分隔符”)—>将字符串分割为子字符串
  • equals(对象名)—>比较两个的值,返回结果是布尔型
  • equalsIgnoreCase(对象名)—>不区分大小写的比较值
  • compareTo(对象名)—>比较大小

代码

package com.qiu.demo;

import sun.util.resources.hr.CalendarData_hr;

import java.util.Arrays;
import java.util.Locale;

public class Demo2 {
    public static void main(String[] args) {
        System.out.println("----------字符串方法1----------");
        String s1="JAVA编程语言";
        System.out.println(s1.length());//打印长度(一个字符站一个数)
        System.out.println(s1.charAt(0));//返回某一个下标的字符(下标是从0开始的)
        System.out.println(s1.contains("JAVA"));//true 判断字符里面有没有具体的字符
        System.out.println(s1.contains("C++"));//false
        System.out.println("----------字符串方法2----------");
        String s2="JAVA编程语言A";
        System.out.println(Arrays.toString(s2.toCharArray()));//把字符串变成字符数组 用Arrays类的toString打印转换后的字符数组
        System.out.println(s2.indexOf("A",2));//判断字符首次出现的位置  第一个参数:字符串值,第二个参数:查看A下标的后面有没有A了
        System.out.println(s2.lastIndexOf("A"));//判断字符最后出先的位置
        System.out.println("----------字符串方法3----------");
        String s3="   Hello World   ";
        System.out.println(s3.trim());//去除前后的空格(不会去除中间的空格)
        System.out.println(s3.toUpperCase());//转换为大写(针对英文)
        System.out.println(s3.toLowerCase());//转换为小写
        System.out.println(s3.endsWith(" "));//判断以什么开头(正确则true,错误则false)
        System.out.println(s3.startsWith("Word"));//判断以什么结尾
        System.out.println("----------字符串方法4----------");
        String s4="在1999年C++是程序员最喜欢的编程语言";
        System.out.println(s4.replace("C++","JAVA").replace("1999","2015"));//替换字符串中的数组
        String s5="Hello Java 1995   Year 5,Moon 23 Day";
        String[] str = s5.split("[ ,]+");
        for (String str1:str){
            System.out.println(str1);
        }
        System.out.println("----------字符串方法5----------");
        String s6="hello";
        String s7="HELLO";
        System.out.println(s6.equals(s7));//判断两个字符串是否相等
        System.out.println(s6.equalsIgnoreCase(s7));//不区分大小写比较
        String s8="abc";//a==97 b==98 c==99
        String s9="aef";//d==100 e==101 f==102
        String s10="abc";
        String s11="abc";
        /*
        compareTo判断大小
        97-100=-3(先比较第一个字符,如果不一样就输出结果,如果一样就比价第二个,如果比较完都一样输出0)
         */
        System.out.println(s8.compareTo(s9));
        System.out.println(s10.compareTo(s11));
    }
}

控制台打印结果

----------字符串方法1----------
8
J
true
false
----------字符串方法2----------
[J, A, V, A, 编, 程, 语, 言, A]
3
8
----------字符串方法3----------
Hello World
HELLO WORLD
hello world
true
false
----------字符串方法4----------
在2015年JAVA是程序员最喜欢的编程语言
Hello
Java
1995
Year
5
Moon
23
Day
----------字符串方法5----------
false
true
-3
0

小案例

package com.qiu.demo;

import javax.swing.text.html.CSS;
import java.util.Arrays;

public class Demo3 {
    public static void main(String[] args) {
        /*
        已知String str="this is a text";
        1.将str中的单词获取出来
        2.将str中的text替换为java
        3.在text前面插入一个easy
        4.将每个单词的首字母改为大写
         */
        System.out.println("----------将str中的单词获取出来----------");
        String str="this is a text";
        String[] s=str.split(" ");
            for (String str1:s) {
                System.out.println(str1);
            }
        System.out.println("----------将str中的text替换为java----------");
        System.out.println(str.replace("text","java"));
        System.out.println("----------在text前面插入一个easy----------");
        System.out.println(str.replace("text","easy text"));
        System.out.println("----------将每个单词的首字母改为大写----------");
        for(int i=0;i<s.length;i++){
            char c1 = s[i].charAt(0);//获取该下标的字符 获取首字母的字母
            char c2=Character.toUpperCase(c1);//把首字母用char的包装类的方法转换为大写
            String str2 = c2 +s[i].substring(1);//拼接 substring截取字符串从下标1开始
            System.out.print(str2+"--");//打印
        }


    }
}

控制台打印结果

----------将str中的单词获取出来----------
this
is
a
text
----------将str中的text替换为java----------
this is a java
----------在text前面插入一个easy----------
this is a easy text
----------将每个单词的首字母改为大写----------
This–Is–A--Text–

可变字符串

  • StringBuffer:可变长字符串,jdk1.0提供,运行效率慢、线程安全

  • StringBuilder:可变长字符串,jdk5.0提供,运行效率快,线程不安全

代码

package com.qiu.demo;

public class Demo4 {
    public static void main(String[] args) {
        //1.stringbuffer比string效率快,更节省内存
        //2.stringbuffer和stringbuilder差不多一样,只不过效率不同,占据内存不同
        //StringBuffer sb=new StringBuffer();
        StringBuilder sb=new StringBuilder();
        //append  追加字符串
        sb.append("初代火影 ");
        System.out.println(sb);
        //insert  通过下标添加字符串
        sb.insert(0,"六道仙人 ");
        System.out.println(sb);
        //replace  通过下标替换(含头不含尾)
        sb.replace(0,4,"辉夜 ");
        System.out.println(sb);
        //delete  通过下标来删除(含头不含尾)
        sb.delete(0,4);
        System.out.println(sb);
    }
}

控制台打印结果

初代火影
六道仙人 初代火影
辉夜 初代火影
初代火影

测试效率

代码

package com.qiu.demo;

public class Demo5 {
    public static void main(String[] args) {
        String str=new String();
        StringBuffer str1=new StringBuffer();//用于测试中间代码耗时多长时间
        long start=System.currentTimeMillis();
        for (int i = 0; i <= 99999; i++) {
                str+=i;//不是相加而是拼接
        }
        long end=System.currentTimeMillis();
        System.out.println("string耗时--->"+(end-start)+"毫秒");
        long start1=System.currentTimeMillis();
        for (int i = 0; i <= 99999; i++) {
            str1.append(i);
        }
        long end1=System.currentTimeMillis();
        System.out.println("stringbuffer耗时--->"+(end1-start1)+"毫秒");
    }
}

控制台打印结果

string耗时—>28076毫秒
stringbuffer耗时—>2毫秒

标签:String,System,----------,字符串,println,out
来源: https://blog.csdn.net/weixin_53354369/article/details/122745122

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有