【详细+超基础】Java-学习笔记 13

简介: 【详细+超基础】Java-学习笔记 13

7fae36d1e520c133b402b12f7f2ff1e.png

九、常用类库


String


用String创建的字符串是固定的 ,不可改变的对象,每一个字符串常量都是字符串类String的一个对象。


String类的常用的构造方法:

1.遇到双引号" "自动创建String类的对象

String s = "hello";  
String w = "world";

2.使用构造方法创建String类的对象

1) public String ( );  // 生成一个空字符串
  String s = new String (); 
2) public String (String str); // 创建一个以str为内容的字符串
    String s = new String ("hello world");
3) public String (char a[]); // 将字符数组a中的字符创建一个新字符串
  char a[] = {'a','b','c'};
  String s = new String (a); 
4) public String (char a[], int startIndex,int count); // 将字符数组a中第startIndex个字符串开始的count个字符组合起来创建为一个新字符串。 startInder从零开始。
  char a[] ={'a','b','c','d','e'};
  String s=new string(a,2,2);
5) public String (byte [] array); // 将字节数组array创建一个新的字符串
  byte[] a={ 54,55,56};
  String s=new String (a); // s="678",'6'的unicode码是54
6) public String (byte [] array,int offset,int length); // 将字节数组array的第offset个数组元素开始的length个字节创建一个新字符串。
  byte[] a={54, 55, 56};
  String s=new String (a,1,2); // s="78";
注意:
    通过双引号和String的构造方法创建字符串对象方式的区别:通过双引号自动创建的字符串对象存在于常量池,通过构造方法创建字符串对象存在于堆内存中。

String类的对象的常用成员方法

1) 获取字符串的长度
    public int length(); // 获取字符串长度
  int n ="hello world".length();
2) 字符串的比较
    public boolean equals(String s); // 判断字符串的内容是否相同
  String first =new String ("hello");
  String second =new String ("abc");
  boolean bol=first.equals(second); 
  public boolean equalsIgnoreCase(String s); // 判断字符串是否相同
  String first= new String ("ABC");
  String second= new String ("abc");
  boolean bol=first.equalsIgnoreCase(second);
  public boolean startsWith(String prefix); // 判断字符是否以字符串prefix为前缀
  String first ="hello";
  first.startsWith("he");
  public boolean  endsWith(String suffix); // 判断字符是否以字符串prefix为后缀
  String first ="hello";
  first.startsWith("lo");
  public int compareTo(String s); // 按照字典顺序进行字符串的计较
  String str="abc"; 
  String s="cde";
  int k=str.compareTo(s);     // k=-2,a比b的Unicode码少2
    int z=str.compareTo("abc");   // z=0;
  int i=str.compareTo("abcdef");  // i=-3,abc比abcdef的长度少3
  注意: 
        1.使用"=="判断两个字符串是否相同,是比较两个字符串的引用是否相同,即地址是否相同,使用equals方    法比较的才是字符串的内容是否相同
3)  public String trim(); // 返回字符串的副本,去掉前导空格和尾部空格   
4) 字符串的检索
  public int indexOf(String s); 
  // 从第一个字符开始寻找s子串首先出现的位置
  public int indexOf(String s,int startpoint);
  // 从第startpoint个字符开始寻找s子串首先出现的位置
  public int lastIndexOf(String s);
  // 从第一个字符开始寻找s子串最后出现的位置
  public int lastIndexOf(String s,int startpoint); 
  // 从第startpoint个字符开始寻找s子串最后出现的位置
  String s="hello world hello java";
  s1=s.indexOf("hello");    // s1=0     从0开始算,第一个字符的索引是0
  s2=s.indexOf("hello",5);  // s2=12
  s3=s.lastIndexOf("lo",1); // s3=15 
5) 字符的检索
    public int indexOf(int char); 
  // 返回从第一个字符开始寻找字符char首次出现的位置
  public int indexOf(int char,int startpoint);
  // 从第startpoint个字符开始寻找字符char首先出现的位置
  public int lastIndexOf(int char );
  // 从第一个字符开始寻找字符char最后出现的位置
  public int lastIndexOf(int char,int startpoint); 
  // 从第startpoint个字符开始寻找字符char最后出现的位置
6) 截取字符串
    public String substring (int startpoint); 
  // 返回从第startpoint个位置开始到结束截取的字符串
  public String substring (int start,int end);
    // 返回从第start个位置到第end个位置(不包括end位置)开始到结束截取的字符串
7) 替换
    public String replace(char oldChar,char newChar);
  // 用新字符串newChar替换字符串当中的旧字符串oldChar,返回替换后的新字符串
  public String replace(String regex, String newString);
  // 用新字符串newString替换字符串中所有的旧字符串regex,返回替换后的新字符串
  String s="i mist thssp";
  String temp=s.replace('t','s');
  // temp的值为"i miss sheep"
8) 字符串连接
    public String concat(String s)
    String str="hello";
  String s="java";
  String k=str.concat(s);
9) 字符串向字符数组转换
    public void getChar(int start,int end,char c[],int offset);
  // 将字符串从start到(end-1)位置的字符复制到字符数组c中,并从c的第offset位置开始存放这些字符
  public char[] toCharArray();
  // 将字符串中的全部字符复制到字符数组当中,返回该数组的引用
  public byte[] 
    // 将字符串转成字节数组
10) public String [] split(String regex); // 返回基于regex拆分此字符串后形成的字符串数组
  String s ="hello world";
  String [] sArray=s.split(" "); // 按空格拆分字符串s
  for (int i=0;i<aArray.length;i++ ){
        System.out.print(sArray[1]);
    }
11) public static String valueOf(type var);
  // valueOf方法:将var转换成字符串,type可以是任何基本类型
  String str =String.valueOf(120);
  // str的值是“120”

StringBuffer


String 定义的字符是不可改变的,如果对 String 对象作出改变,就会改变生成新对象,这种操作方式非常消耗内存,这种操作方式比较消耗内存,为了降低内存消耗和提高系统速度, Java提供了可变字符串缓冲类——StringBuffer。


StringBuffer可以实现多次增删改查字符串内容而不产生新对象,每一个StringBuffer对象都有初始容量,只要字符长度不超过其容量,就不需要分配新的内部缓冲容量。


StringBuffer的构造方法

public StringBuffer(); // 创建一个空的StringBuffer类的对象
public StringBuffer(int length); // 创建长度为length的StringBuffer对象
public StringBuffer(String str); // 用字符串str作参数进行创建StringBuffer对象

String的大多数方法StringBuffer都可以使用,在此之上,StringBuffer增加了String没有的删除字符串的方法。


StringBuffer的成员方法

1) StringBuffer append(type x)
    double d=3.14;
  StringBuffer st= new StringBuffer();
  st.append(true);
  st.append('c').append(d).append(15); // 最终st的值是true3.1415
2)  public char charAt(int n); 获取字符串中索引是n的字符,索引从0开始。
3)  public 

String Tokenizer


StringTokenizer类用于将一个字符串分解成若干个子串。


StringTokenizer的构造方法

public StringTokenizer (String str); // 构造一个使用默认分隔符解析 str 的StringTokenizer对象,Java默认分隔符包括空格、换行符、回车键、Tab键。
public StringTokenizer (String str); // 构造一个指定分隔符delim 解析 str 的StringTokenizer对象
StringTokenizer s1= new StringTokenizer ("我是 中国人");
StringTokenizer s2= new StringTokenizer ("I,am,a,chengxuyuan",",");

StringTokenizer的成员方法

1) public boolean hasMoreTokens(); // 是否还有分隔符,如果有返回true,没有则返回false;
2) public String nextToken(); // 返回字符串中的下一个字符;
3) public Object nextElement(); 
// 返回字符串的下一个子串,与nextToken 方法类似,不同之处在于本方法的返回值是Object,而不是String。
4) public int countTokens(); // 返回字符串中子串的个数。
案例:
import java.util.StringTokenizer;
public class StringTokenizerDemo {
  public static void main(String []args) {
    String s="123,大家好。hello";
    StringTokenizer s1= new StringTokenizer(s,",。");
    while(s1.hasMoreElements()){
      System.out.println(s1.nextElement());
    }
  }
}
运行结果:
    123
  大家好
  hello
相关文章
|
2月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
10天前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
39 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
1月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
1月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
13天前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
26 0
|
13天前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
29 0
|
1月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
2月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
52 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
2月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
92 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)