java中的String基础

本文详细介绍了Java中的String类,包括其构造方法、对象创建方式及其内存占用情况。通过示例展示了"=="与`.equals()`在字符串比较中的区别,并提供了字符串遍历、字符计数及拼接的方法。此外,还提供了用户输入字符串并统计字母和数字出现次数的代码示例。
摘要由CSDN通过智能技术生成

String类(1)

String类使用的时候不用导包,程序中所有的字符串都是String类的实例,也就是说java程序中所有的双引号字符串都是String类对象。

String构造方法

  1. public String() 创建空白字符串对象
  2. public String(char[] arr) 创建字符串对象
  3. String s=“abc” 直接赋值创建字符串对象

两种方法创建String对象

  1. 通过new创建字符串对象,每一次new都会申请一个内存空间,即使两个字符串对象的内容相同,地址也是不同的。

    char[] arr={'h','e','l','l','o'};
    String s1=new String(arr);
    String s2=new String(arr);
    
  2. 以""方式创建的字符串,只要字符串相同,无论该字符串出现多少次,都只会建立一个String对象。

    String s3="hello";
    String s4="hello";
    

    字符串比较

    字符串是对象不能使用“==” 直接比较,如果是基本类型,使用“ ==”比较的是数据值是否相同;如果是引用类型比较的是地址值是否相同。

    字符串的比较是通过“equals()”方法。

    package com.company.www;
    public class Main {
        public static void main(String[] args) {
            //使用new创建
            String s1=new String("hello");
            String s2=new String("hello");
            //使用""创建
            String s3="happy";
            String s4="happy";
            if(s1==s2){
                System.out.println("s1和s2地址相同");
            }else if(s1.equals(s2)){
                System.out.println("s1和s2字符串内容相同");
            }
            if(s3==s4&&s3.equals(s4)){
                System.out.println("s3和s4地址和字符串内容都相同");
            }
        }
    }
    

    输出内容为:

    s1和s2字符串内容相同
    s3和s4地址和字符串内容都相同

    这段代码再一次证明了使用new创建的相同内容字符串对象,占用不同的内存,使用""创建的相同字符串对象只占用一个地址。

    字符串的遍历

    关于字符串的遍历需要用到两个String类的方法:charAt();和length();

    例:

    package com.company.www;
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
          Scanner scanner=new Scanner(System.in);
          System.out.println("请输入字符串:");
          String s=scanner.nextLine();
          for (int i=0;i<s.length();i++){
              System.out.print(s.charAt(i));
          }
        }
    }
    

    输出结果为:

    请输入字符串:
    Happy New Year
    Happy New Year

    统计不同字符出现的次数

    直接上例子吧

    package com.company.www;
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
          Scanner scanner=new Scanner(System.in);
          System.out.println("请输入字符串:");
          String s=scanner.nextLine();
          int big=0,small=0,number=0;
            //先设置三个整数类型分别对三种字符类型进行计数
            for (int i=0;i<s.length();i++){
                char c=s.charAt(i);
                //设置一个char型接收单个字符
                if(c>='a'&&c<='z'){
                    small++;
                }else if(c>='A'&&c<='Z'){
                    big++;
    
                }else if (c>='0'&&c<='9'){
                    number++;
                }
            }
            System.out.println("小写字母有"+small+"个");
            System.out.println("大写字母有"+big+"个");
            System.out.println("数字有"+number+"个");
        }
    }
    

    输出结果为:

    请输入字符串:
    ilikestudy233
    小写字母有10个
    大写字母有0个
    数字有3个

    字符串拼接

    示例:随意输入一个字符串,拼接为“* # * 字符串 *# *”形式

    package com.company.www;
    import java.util.Scanner;
    //将输出字符串变为*#*字符串*#*格式
    public class Main {
        public static void main(String[] args) {
            System.out.println(pinjie());
        }
        public static String pinjie() {
            Scanner scanner=new Scanner(System.in);
            System.out.println("请输入字符串:");
            String s=scanner.nextLine();
            String a = "*#*";
            for (int i = 0; i <s.length(); i++) {
                if(i<s.length()){
                    a+=s.charAt(i);
                }
            }
            a+="*#*";
            return a;
        }
    }
    

    输出结果为:

    请输入字符串:
    happy
    #happy#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两年半的JAVA练习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值