JavaSE 基础知识(2)--String字符串基本操作

1、什么是JDK API?

JDK中包含大量的API类库,所谓API(Application Programming Interface,应用程序编程接口),就是一些已经写好,可供直接调用的功能(在Java语言中这些功能以类的形式封装)

JDK API包含的类库功能强大,经常使用的有:字符串操作,集合操作,文件操作,输入输出操作,网络操作,多线程等等

2JDK的包结构

为了便于使用和维护,JDK类库按包结构划分,不同的类库划分在不同的包中

经常使用的包入下表所示:

java.lang

Java程序的基础类,如字符串,多线程等该包中的类使用频率非常高,不需要import,可直接使用

java.util

常用工具类,如随机数产生器,集合,日历,时钟等

java.io

文件操作,输入输出操作

java.net

网络操作

java.math

数学运算相关操作

java.security

安全相关操作

java.sql

数据库访问

java.text

处理文字,日期,数字,信息的格式

3、字符串基本操作

3.1 String及其常用api

3.11 String是不可变对象:

·java.lang.String使用了final修饰,不能被继承;

  ·字符串底层封装了字符数组及针对字符数组的操作算法

  ·字符串一旦被创建,对象永远无法改变,但字符串引用可以重新赋值

  ·java字符串在内存中采用Unicode编码模式,任何一个字符对应2个字节的定长编码

3.1.2String常量池

   ·java为了提高性能,静态字符串(字面量/常量/常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串

·对于重复出现的字符串直接量,JVM首先会在常量池中查找,如果存在即返回对象。

public class Test01 {

    /**测试String常量池**/

    @Test

    public void testConstantPool(){

       String str1="Java";

       //不会创建新的对象,而是使用常量池中已有的“Java”

       String str2="Java";

       System.out.println(str1==str2);//输出

       //使用new关键字会创建新的String对象

       String str3=new String("Java");

       System.out.println(str1==str3);//输出 

    }

}

3.1.3内存编码及长度

·String在内存中采用Unicode编码,每个字符占用两个字节;任何一个字符(无论中文还是英文)都算一个字符长度,占用两个字节

package string_test;

import org.junit.Test;

public class Test02 {

    /**获取String对象的长度**/

    @Test

    public void testLength(){

       String str1="java!";

       System.out.println(str1.length());

       String str2="你好java%";

       System.out.println(str2.length());    

    }

}

3.1.4使用indexOf实现检索

·indexOf方法用于实现在字符串中检索另一个字符串

·String提供几个重载indexOf方法

int indexOf(Sting str)

在字符串中检索str,返回其第一次出现的位置,如果找不到返回-1

int indexOf(String str,int fromIndex)

从字符串的fromIndex位置开始检索

·String还定义有lastIndexOf方法:

int lastIndexOf(String str,int from)

Str在字符串中多次出现,将返回最后一次出现的位置

package string_test;

 

import org.junit.Test;

 

public class Test03 {

    /**在一个字符串中检索另一个字符串**/

    @Test

    public void testIndexOf(){

       String str="I can because ,I think I can";

       int index=str.indexOf("can");

       System.out.println(index);

       index=str.lastIndexOf("can");

       System.out.println(index);

       index=str.indexOf("can", 9);

       System.out.println(index);

       index=str.indexOf("Can");

       System.out.println(index);

    }

}

3.1.5使用substring获取字符串

         ·substring方法用于返回一个字符串的子字符串。

         ·substring 常用重载方法定义如下:

String substring(int begingIndex,int endIndex)

返回字符串中从下标beginIndex(包括)开始,到endIndex(不包括)结束的子字符串

String substring(int beginIndex)

返回字符串中从下标beginIndex(包括)开始,到字符串结尾的子字符串

package string_test;

 

import org.junit.Test;

 

public class Test04 {

    /**在一个字符串中截取指定的字符串**/

    @Test

    public void testSubstring(){

       String str="http://www.baidu.com";

       String subStr=str.substring(11, 16);

       System.out.println(subStr);

       subStr=str.substring(7);

       System.out.println(subStr);

    }  

}

3.1.6 trim去除空串

package string_test;

 

import org.junit.Test;

 

public class Test05 {

    /**去除一个字符串前面和后面的空字符**/

    @Test

    public void testTrim(){

       String str=" Study Java made feel happy ";

       String strTrim=str.trim();

       System.out.println(str.length());

       System.out.println(strTrim.length());

    }

}

3.1.7 charAt

         ·String中定义charAt方法

char charAt(int index)

方法charAt用于返回字符串指定位置的字符,参数index表示指定的位置

package string_test;

 

import org.junit.Test;

 

public class Test06 {

    /**遍历一个字符串中的字符序列**/

    @Test

    public void testCharAt(){

       String str="Workingmademefeelhappy?";

       for (int i = 0; i < str.length(); i++) {

           char c=str.charAt(i);

           System.out.print(c+" ");

       }

    }

}

3.1.8  startsWith与endWith

package string_test;

 

import org.junit.Test;

 

public class Test07 {

    /**检测一个字符串是否以固定字符串开头或者结尾**/

    @Test

    public void testStartWithAndEndWith(){

       String str="this is my java?";

       System.out.println(str.startsWith("this"));

       System.out.println(str.endsWith("java"));

       System.out.println(str.endsWith("java?"));

    }

}

3.1.9 大小写转换

package string_test;

 

import org.junit.Test;

 

public class Test08 {

    /**转换字符串中英文字母的大小写形式**/

    @Test

    public void testToUpperAndToLower(){

       String str="沉迷java STUDY无法自拔(o)…";

       String strUpper=str.toUpperCase();//大写

       System.out.println(strUpper);

       String strLower=str.toLowerCase();//小写

       System.out.println(strLower);         

    }

}

3.1.10  valueOf

package string_test;

 

import org.junit.Test;

 

public class Test09 {

    /**将其他类型转换成字符串类型*/

    @Test

    public void testValueOf(){

       double id=1.3520204119;

       int value=111;

       boolean flag=true;

       char[] arr={'s','t','u','d','y','j','a','v','a'};

       String str=String.valueOf(id);

       System.out.println(str);

       str=String.valueOf(value);

       System.out.println(str);

       str=String.valueOf(flag);

       System.out.println(str);

       str=String.valueOf(arr);

       System.out.println(str);

    }

}

3.2 StringBuilder及其API

3.2.1 StringBuilder封装可变字符串

         ·StringBuilder封装可变字符串,对象创建后可以通过调用方法改变其封装的字符序列

         ·StringBuilder有如下常用构造方法:

         public StringBuilder()

         public StringBuilder(String str)

3.2.2StringBuilder 常用方法

StringBuilder类的常用方法

功能描述

StringBuilder  append(String str)

追加字符串

StringBuilder  insert(int dstOffset, String s)

插入字符串

StringBuilder  delete(int start ,int end)

删除字符串

StringBuilder  replace(int start,int end,String str)

替换字符串

StringBuilder  reverse()

字符串反转

3.2.3 StringBuilder 

         ·StringBuilder的很多方法的返回值均为StringBuilder类型,这些方法的返回语句均为:

          return this

         ·由于改变封装的字符串序列后又返回了该对象的引用,可以按如下方式简洁的书写代码:

package string_test;

 

import org.junit.Test;

 

public class Test10 {

    /**StringBuilder 简单的书写方式*/

    @Test

    public void testStringBuilder(){

       StringBuilder buff=new StringBuilder();

       buff.append("I like java").insert(7, "PHP and ").replace(15, 19, "c++");

       System.out.println(buff.toString());

       buff.delete(7, 19).append("java more").insert(0, "but ");

       System.out.println(buff);

    }

}

3.2.4 StringBuilder 小结

    ·StringBuilder是可变字符串。字符串的内容计算,采用StringBuilder实现性能会相对好一些

    ·java的字符串连接的过程是利用StringBuilder实现的

  1. String s="I"; String s1=s+"want"; String s2=s1+"fly";
  2. StringBuilder ss=new StringBuilder(s).append(s1).append(s2);

         ·StringBuffer 和 StringBuilder

-- StringBuffer 是线程安全的,同步处理的,性能稍慢

-- StringBuilder 是非线程安全的,并发处理的,性能稍快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值