Java SE核心API(1) —— API、文档注释、String、StringBuilder

一、JDK API类库

  JDK中包含大量的API类库,所谓API(Application programming Interface,应用程序编程接口)就是一些已写好、可供直接调用的功能(在Java语言中,这些功能以类的形式封装)。
  JDK API包含的类库功能强大,经常使用的有:字符串操作、集合操作、文件操作、输入输出操作、网络操作、多线程等等。
  
  JDK类库按照包结构划分,不同功能的类划分在不同的包中:
  java.lang  Java程序的基础类,如字符串、多线程等,该包中的类使用的频率非常高,不需要import,可以直接使用。
  java.util  常用工具类,如集合、随机数产生器、日历、时钟等。
  java.io   文件操作、输入/输出操作。
  java.net  网络操作。
  java.math  数学运算相关操作。
  java.security  安全相关操作。
  java.sql  数据库访问。
  java.text  处理文字、日期、数字、信息的格式。


二、文档注释

  文档注释以”/**”开始,以”*/”结束,加在类和方法的开头,用于说明作者,时间,版本,要实现功能的详细描述等信息。
  通过javadoc工具,可以将文档注释转换为HTML文档说明。学习者和程序员主要通过文档了解API的功能。
  可以在eclipse中使用javadoc命令生成注释的HTML文档。
  javadoc命令使用:javadoc -d docDir 包名或源码


三、字符串常量池

  java.lang.String使用了final修饰,不能被继承。
  字符串一旦创建,对象永远无法改变,但字符串引用可以重新赋值。

string常量池
  Java为了提高性能,静态字符串(字面量/常量/常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串。
  对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果存在即返回该对象。

public void testConstantPool(){
    String str1 = "Hello";
    //不会创建新的String对象,而是使用常量池中已有的"Hello"
    String str2 = "Hello";
    System.out.println(str1 == str2);//true
    //使用new关键字会创建新String对象
    String str3 = new String("Hello");
    System.out.println(str1 == str3);//false
}

四、Junit单元测试方法

  Junit单元测试,可用于自动测试某一个方法。需要导入org.junit.Test,并在测试方法的前面加上@Test注解。


五、字符串string相关常用方法

5.1、length()

  length()方法可以获取字符串的长度。
  String在内存中采用Unicode编码,每个字符占用两个字节。任何一个字符(无论中文还是英文)都算1个字符长度。

5.2、indexOf()

  indexOf方法用于实现在字符串中检索另外一个字符串。
  String提供了几个重载的indexOf方法:
  1、int indexOf(String str)
    在字符串中检索str,返回其第一次出现的位置,如果找不到则返回-1
  2、int indexOf(String str,int fromIndex)
    从字符串的fromIndex位置开始检索
  3、int lastIndexOf(Strng str)
    str在字符串中多次出现时,将返回最后一个出现的位置

5.3、substring()

  substring方法用于返回一个字符串的子字符串。
  substring常用重载方法定义如下:
  1、String substring(int beginIndex,int endIndex)
    返回字符串中从下标beginIndex(包括)开始到endIndex(不包括)结束的子字符串
  2、String substring(int beginIndex)
    返回字符串中从下标beginIndex(包括)开始到字符串结尾的子字符串

package day01;
/**
 * subString用于获取一个字符串的部分内容
 * @author Administrator
 *
 */
public class SubstringDemo {
    public static void main(String []args){
        //            01234567890123
        String url = "www.oracle.com";
        /*
         * 通常情况下,用两个数字表示范围时
         * 都是"含头不含尾"的
         */
        String sub = url.substring(4,10);
        System.out.println(sub);
        //一个参数为从指定位置截取到字符串末尾
        sub = url.substring(4);
        System.out.println(sub);

        url = "www.tarena.com.cn";
        int one = url.indexOf(".");
        int two = url.indexOf(".",one+1);
        String s = url.substring(one+1,two);
        System.out.println(s);
    }
}
5.4、trim()

  trim()去掉一个字符串的最前面和最后面的空格。

5.5、charAt()

  char charAt(int index)返回字符串指定位置的字符,参数index表示指定的位置。

package day01;
/**
 * 使用charAt判断字符串是否为“回文”
 * @author Administrator
 *
 */
public class CharAtDemo2 {
    public static void main(String[] args){
        /*
         * 思路:
         *  判断回文的原则:
         *  正数位置上的字符与倒数位置上的字符一致
         *            0 1 2 3 4 5 6 7 8
         */
        String str = "上海自来水来自上海";
        for(int i=0;i<str.length()/2;i++){
            int last = str.length()-1-i;
            if(str.charAt(i)!=str.charAt(last)){
                System.out.println("不是回文!");
                return;
            }
        }
        System.out.println("是回文");
    }
}
5.6、startsWith()、endsWith()

  startsWith()和endsWith()检测一个字符串是否以指定字符串开头或结尾。

package day01;
/**
 * 检查一个字符串是否是以给定的字符串开始的或结尾的 
 * @author Administrator
 *
 */
public class StartsWithAndEndsWithDemo {
    public static void main(String[] args){
        String str = "Thinking in Java";
        boolean start = str.startsWith("Thin");
        boolean end = str.endsWith("Java");
        System.out.println("是否以T开头:"+start);
        System.out.println("是否以Java结尾:"+end);   
    }
}
5.7、toUpperCase()、toLowerCase()

  toUpperCase()和toLowerCase()转换字符串中英文字母的大小写形式。

package day01;

import java.util.Scanner;

/**
 * 将字符串中英文部分转换为大小写
 * @author Administrator
 *
 */
public class UpperCaseAndLowerCaseDemo {
    public static void main(String[] args){     
        String message = "Af68Zb";
        System.out.println("请输入验证码:"+message);      
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();        
        //将验证码转换为全小写
        message = message.toLowerCase();
        //将用户输入的验证码转换为全小写
        str = str.toLowerCase();
        if(message.equals(str)){
            System.out.println("输入正确");
        }else{
            System.out.println("输入错误");
        }
    }
}
5.8、valueOf()

  valueOf()可以将数字型、布尔型、字符数组型等数据类型转换为字符串类型。

package day01;
/**
 * 将其他数据类型转换为字符串类型
 * @author Administrator
 *
 */
public class ValueOfDemo {
    public static void main(String[] args){
        double pi = 3.1415926;
        //将Double值转换为字符串形式
        String piStr = String.valueOf(pi);
        System.out.println(piStr);
        //将int值转换为字符串形式
        String intStr = String.valueOf(1);
        //将boolean值转换为字符串形式
        String booleanStr = String.valueOf(false);
    }
}

六、StringBuilder可变字符串

  StringBuilder封装可变的字符串,对象创建后可以通过调用方法改变其封装的字符序列。
  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():字符串反转

package day01;
/**
 * StringBuilder
 * 用于解决频繁修改字符串内容带来的资源消耗过度问题
 * 频繁修改字符串的首选
 * @author Administrator
 *
 */
public class StringBuilderDemo {
    public static void main(String[] args){
        String str = "努力学习java";
        StringBuffer builder = new StringBuffer(str);

        //append用于在当前字符串末尾追加给定字符串
        builder.append(",为了找个好工作");
        str = builder.toString();
        System.out.println(str);

        /*
         * replace(int start,int end,String str)
         * 从start(包含)处,到end(不包含)处范围内的
         * 字符串替换为给定的字符串str
         * 
         */
        builder.replace(11, builder.length(), "改变世界");
        str = builder.toString();
        System.out.println(str);

        /*
         * insert(int offset,String str)
         * 在给定的位置offset处插入字符串str
         * 原位置及以后的字符串内容自动向后移动
         */
        builder.insert(9, "就是");
        str = builder.toString();
        System.out.println(str);

        //delete方法:删除指定范围内的字符串
        builder.delete(0, 8);
        str = builder.toString();
        System.out.println(str);

        //活着,就是为了改变世界
        builder.insert(0, "活着");
        str = builder.toString();
        System.out.println(str);

        //反转字符串
        builder.reverse();
        str = builder.toString();
        System.out.println(str);
    }
}

  StringBuilder的很多方法的返回值均为StringBuilder类型,这些方法的返回语句均为: return this。
  由于改变封装的字符序列后又返回了该对象的引用,所以可以按如下简洁的方式书写代码:

buf.append("ibm").insert(2,"oracle").replace(9, 13, "Java");
System.out.println(buf.toString());

  Java的字符串连接就是利用StringBuilder来实现的。

  StringBuffer是线程安全的,同步处理的,性能稍慢
  StringBuilder是非线程安全的,并发处理的,性能稍快

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值