栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Java基础(2)————String类和StringBuffer类

Java 更新时间:发布时间: 百科书网 趣学号

String类和StringBuffer类
  • String类
    • Scanner用法
    • String类的构造方法
    • String类的判断功能
    • String类的获取功能
    • String类的转换功能
    • ✨String类应用(字符串反转)
  • StringBuffer类
    • StringBuffer的构造方法
    • append和insert方法
    • StringBuffer的替换功能
    • Java中String和StringBuffer的参数传递
  • 磊总结

String类
  • 字符串在Java 编程中必不可少,在 Java 中字符串属于对象,并且Java 提供了 String 类来创建和操作字符串。让我们来简单介绍下String类并对其进行研究。
Scanner用法
  • 在使用String类之前我们先简单了解下Scanner的用法。Scanner是键盘录入一种最基础的方法。
  • hasNextXXX( ): 判断是否还有下一个输入项,其中XXX可以是Int , Double等。如果我们需要判断下一个输入是不是字符串的时候,则可以省略XXX。
  • nextXXX( ): 获取下一个输入项,XXX的含义跟上面一个一样。Scanner使用空格,回车作为分隔符。
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        if(sc.hasNextInt()){
            int i=sc.nextInt();
            System.out.println(i);
        }else{
            System.out.println("输入的类型错误");
        }
    }
//只接收int类型,如果是a就会输出第二条
}
  • 一般情况下,我们从键盘读入数据都是先直接当作字符串来读取,随后在进行相对的数据类型转化即可 (如果不这么做,那么我们先录入int再录入字符串,可能会因为缓冲区的问题而发出现BUG)。
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int i=sc.nextInt();
        System.out.println("请输入第二个字符串");
        String line2=sc.nextLine();
        System.out.println("i= " +i+ " ,line2= "+ line2);
    }
    //输入第一个27后,会直接输出i= 27 ,line2= 并没有进行第二次的字符串输入
}
  • sc.nextLine( ): 用来读取字符串
String类的构造方法
public String() 空构造
public String(byte[] bytes) 把字节数组转化为字符串
public String(byte[] bytes,int index,int length) 把字节数组的一部分转化为字符串
public String(char[] value) 把字符数组转化为字符串
public String(char[] value,int index,int count) 把字符数组的一部分转化为字符串
public String(String Original)把字符串常量转化为字符串
byte[] arr2={97,98,99,100,101,102};
String s3=new String(arr,2,3);
System.out.println("s3");//输出c d e
String类的判断功能
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
        String s1="wanmei";
        String s2="wanmei";
        String s3="Wanmei";
//在String类中被重写的equals方法
        System.out.println(s1.equals(s2)); //true
        System.out.println(s2.equals(s3)); //false
//equalsIgnoreCase方法,忽视字符串中的大小写进行比较
        System.out.println(s1.equalsIgnoreCase(s2));//true
        System.out.println(s2.equalsIgnoreCase(s3));//true
//contains方法 判断大字符串是否包含小字符串
        String c1="我喜欢biancheng";
        String c2="biancheng";
        String c3="bubiancheng";
        System.out.println(c1.contains(c2));//true包含
        System.out.println(c2.contains(c3));//false不包含
        System.out.println(c1.contains(c3));//false不包含
//startsWith方法 判断是否以传入的字符为开头
        String c4="我喜欢";
        String c5="cheng";
        System.out.println(c1.startsWith(c4));//true以我喜欢开头
        System.out.println(c1.startsWith(c5));//false
//endsWith方法 判断是否以传入的字符为结尾
        System.out.println(c1.endsWith(c4));//false
        System.out.println(c1.endsWith(c5));//true以cheng结尾
//isEmpty方法 判断字符串是不是空
        String n1="niubi";
        String n2="";
        System.out.println(n1.isEmpty());//false
        System.out.println(n2.isEmpty());//true
    }
}
String类的获取功能
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
        String s1="heima";
        System.out.println(s1.length());    //5
//indexof返回值都是int类型
//indexof(int  ch)方法       返回指定字符在此字符串第一次出现的索引
        int index=s1.indexOf("i");
        System.out.println(index);    // 2   第二个位置
//indexof(String str)方法  返回指定字符串在该字符串第一次出现的位置
        int index2=s1.indexOf("hei");
        System.out.println(index2);     //0  第零个位置
//如果不存在返回就是-1
//indexof(int ch , int fromIndex)返回指定字符串在此字符串中从指定位置后第一次出现的索引
        String s2="woaiheima";
        int indexf=s2.indexOf('a',3);
        int indexf2=s2.indexOf('a',2);
        System.out.println(indexf2);   // 2   第二个位置
        System.out.println(indexf);      //8  第八个位置
//lastindexof  方法  从后向前找第一次出现的位置(返回的是索引)
        int indexf3=s2.lastIndexOf('a');
        System.out.println(indexf3);     //8  第八个位置
//substring (int start) 方法  从指定位置开始,一直到末尾
        String s3="wozhendewudi";
        String s4=s3.substring(4);
        System.out.println(s4);   //从第四个位置e开始一直接去到末尾
//substring(int start , int end)方法
        String s5=s3.substring(3,6);
        System.out.println(s5);//hen 要头不要尾
    }
}
String类的转换功能
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
//getBytes()把字符串转化为字节数组
        String s1="abc";
        byte[] arr=s1.getBytes();
        for(int i=0;i
            System.out.println(arr[i] + " ");//97 98 99
        }
        String s2="你好你好"; 
        //会输出负值  gbk码表一个中文代表两个字节
        //gbk码表特点,中文的第一个字节肯定是负数
//toCharArray方法,将字符串转化为字符数组
        String s="heima";
        char arr1[]=s.toCharArray();
        for(int i=0;i
            System.out.println(arr1[i]);     //h   e   i   m   a
        }
// toLowerCase  把字符串转成小写
        String Ssmall = s.toLowerCase();
        System.out.println(Ssmall);       //heima
//toUpperCase   把字符串转成大写
        String Sbig=s.toUpperCase();
        System.out.println(Sbig);          //HEIMA
//concat(String str)       把字符串拼接
        String slong = Ssmall.concat(Sbig);
        System.out.println(slong);         //heimaHEIMA
        String ssf=Sbig+Ssmall+"niubi";
        System.out.println(ssf);
    }
}
✨String类应用(字符串反转)
  1. 通过键盘录入获取字符串Scanner
  2. 将字符串转化成字符数组
  3. 倒着遍历,再拼接起来
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String line=sc.nextLine();
        
        char[] arr=line.toCharArray();
        
        String s="";
        for(int i=arr.length-1;i>=0;i--){
            s=s+arr[i];
        }
    }
}
StringBuffer类
  • StringBuffer相对于String类是线程安全可变的字符序列。如果我们用String类创建一个对象,在对它进行赋值,那么会删除原来的对象,创建新的对象。而StringBuffer则不会产生新的对象。所以在做插入删除的时候,使用StringBuffer可以节省空间。
StringBuffer的构造方法
public StringBuffer() 空参构造
public StringBuffer(int capacity) 指定容量的字符串缓冲区对象 
public StringBuffer(String str) 指定字符串内容的字符串的缓冲对象
public class demo1 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer();
        System.out.println(sb.length());   //输出0 字符串中字符的数量
        System.out.println(sb.capacity()); //输出16,容器的初始容量
        StringBuffer sb2=new StringBuffer("lihai");
        System.out.println(sb2.length());   //输出5 字符串中字符的数量
        System.out.println(sb2.capacity()); //输出21 字符串的length + 初始容量
    }
}
append和insert方法
  • append和insert是在StringBuffer类中的用来添加的方法。

public StringBuffer append(String str) 可以把任意类型数据添加到字符串缓冲区里面,并且返回字符串缓冲区本身
public StringBuffer insert(int offset , String str) 在指定位置把任意类型数据添加到字符串缓冲区里面,并且返回字符串缓冲区本身

  • StringBuffer是字符串缓冲区,当new的时候是在堆内存创建一个对象,底层是一个长度尾16的字符数组。当调用添加方法时,不会再重新创建对象,而是不断向原缓冲区添加字符
import java.util.*;

public class demo1 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer();
        sb.append("niubi");
//deleteCharAt删除索引对应位置的字符
        sb.deleteCharAt(4);
        System.out.println(sb);//输出niub 删除索引为4的字符
        sb.append("ideren");
        System.out.println(sb);//输出niubideren
        sb.delete(2,5);
        System.out.println(sb);//输出nideren
    }
}
  • 清空缓冲区sb.delete(0,sb.length);
StringBuffer的替换功能
public class demo1 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer("niubi");
        sb.replace(0,3,"sha");
        System.out.println(sb);//输出shabi
        sb.reverse();
        System.out.println(sb);//输出ibahs
    }
}
Java中String和StringBuffer的参数传递
  • 基本数据类型的值传递,不改变值。引用数据类型的值传递,改变其值。
  • 所以我们平常使用StringBuffer来作为参数来传递。
public class demo1 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer();
        sb.append("niubi");
        System.out.println(sb);
        change(sb);
        System.out.println(sb);
    }
    public static void change(StringBuffer sb){
        sb.append("deren");//两个引用指向同一个对象
    }
}
磊总结
  • String类和StringBuffer类只是Java学习当中两个很基础的类,除此之外需要我们掌握的类仍然有很多多,养成仔细研究源码的习惯,查看API学习更多的类是我们学习Java的关键之一。
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/957429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号