API文档、字符串基本操作

1、API文档

   1.1 JDK API

  1. 什么是JDK API

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

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

     2、JDK包结构

为了便于使用和维护,jdk类库按照包结构划分,不同功能的类划分在不同的包中;

经常使用的包如下表所示

功能
java.lang java程序的基础类,如字符串、多线程等,该包中的类使用的频率非常高,不需要import,可以直接使用
java.util常用工具类,如集合、随机数产生器、日历、时钟等
java.io文件操作、输入输出操作
java.net网络操作
java.math数学运算相关操作
java.security安全相关操作
java.sql数据库访问
java.text

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

   1.2文档注释规范

          1、文档注释

               ·以/**开始,以*/结束;

               ·加在类和方法的开头,用于说明作者、时间、版本、要实现的功能的详细描述等信息;

               ·通过javdoc工具,可以轻松的将注释转换为HTML文档说明;学习者和程序员主要通过文档了解API的功能;
               ·文档注释不同于普通的注释(//...或/*....*/),普通注释写在程序之中,用于程序员进行代码维护和交流,无法通过工具生成文档,而文档注释写在类和方法的开头,专门用于生成供API使用者进行参考的文档资料。

          2、文档注释规范

                类注释:写在类前面的注释,在包名之后,类定义开始之前


/**
 * the<code>JavaDoc</code> class used to test JAVA DOCUMENT 
 * @author zhangying 作者
 * @see com.danei.pdf03.unit1 参见
 * @since jdk1.0 始于jdk1.0
 */
public class JavaDoc {
}

              方法注释:如下图

/**
	 * this is the entrance to the whole programe
	 * 
	 * @param args
	 * @return void
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

          3、javadoc命令生成文档

             ·目标HTML文档存储到docDir下,执行以下步骤:

                 —切换到包含想要生成文档的源文件目录,如果有嵌套的包,则必须切换到包含子目录的目录

                —如果是一个包,运行命令:javadoc -d docDir nameOfPackage

               —多个包生成文档,运行:javadoc -d docDir nameOfPackage1,nameOfPackage2...

              —如果文件在默认包中,运行:javadoc -d docDir  *.java

 

zhangyingdeMacBook-Pro:unit1 zhangying$ javadoc -d docDir *.java
正在加载源文件JavaDoc.java...
正在加载源文件StringTest.java...
正在构造 Javadoc 信息...
正在创建目标目录: "docDir/"
标准 Doclet 版本 1.8.0_151
正在构建所有程序包和类的树...
正在生成docDir/com/danei/pdf03/unit1/JavaDoc.html...
正在生成docDir/com/danei/pdf03/unit1/StringTest.html...
正在生成docDir/com/danei/pdf03/unit1/package-frame.html...
正在生成docDir/com/danei/pdf03/unit1/package-summary.html...
正在生成docDir/com/danei/pdf03/unit1/package-tree.html...
正在生成docDir/constant-values.html...
正在构建所有程序包和类的索引...
正在生成docDir/overview-tree.html...
正在生成docDir/index-all.html...
正在生成docDir/deprecated-list.html...
正在构建所有类的索引...
正在生成docDir/allclasses-frame.html...
正在生成docDir/allclasses-noframe.html...
正在生成docDir/index.html...
正在生成docDir/help-doc.html...
zhangyingdeMacBook-Pro:unit1 zhangying$ ls

2、字符串基本操作

String是不可变对象

       2.1 String及常用API

 ·String是不可变对象

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

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

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

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

        2.2String常量池

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

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

//在常量池中创建字符串常量对象:"zhang"
		String string1 = "zhang";
		System.out.println(string1.toString());
		//在常量池中创建字符串常量对象:"wang"
	    String string2  = "wang";
	    System.out.println(string2.toString());
	    //创建String类型的引用变量--》不指向任何对象
	    String string3 = null;
	    //由于没有指向任何String类型的对象,此时若操作String对象方法
	    //则会报出空指针异常
//	    string3.length();
	    //创建另一个String类型引用变量指向对象:"zhang"
	    String string4 = "zhang";
	    //比较两个对象是否是同一个对象
	    System.out.println(string1 == string2);

       2.3内存编码及长度

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

    /**
	 * 获取String对象的长度
	 */
	public static void testLength() {
		String str1 = "Hello";
		System.out.println(str1.length());
		String str2 = "Hi,你好";
		System.out.println(str1.length());
	}

        2.4使用indexOf实现检索

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

·String提供几个重载的indexOf方法

int indexOf(String str)

在字符串中检索str,返回其第一次出现的位置,如果找不到则返回-1
int indexOf(String str,int fromIndex)从字符串的fromIdex索引位置开始检索str字符串

·String还定义了lastIndexOf方法

int lastIndexOf(String str, int from)str在字符串中多次出现时,将返回最后一个出现的位置
public static void testIndexOf() {
		String string = "I hope you will happy everday";
		//获取字符串"hope"第一次出现的位置
		int index = string.indexOf("hope");
		System.out.println(index);//2
		//从索引为6开始检索"p"第一次出现的位置
		System.out.println(string.indexOf('p',6));//18
		//检索'p'在字符串string中最后一次出现的位置
		System.out.println(string.lastIndexOf('p'));
		//从索引19处检索‘p’最后一次出现的位置
		//注意在lastIndexOf中fromIndex指的是倒着检索的开始index
		System.out.println(string.lastIndexOf('p', 4));//4
		}

       2.5使用subString获取子串

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

·subString常用重载方法如下

String subString(int beginIndex, int endIndex)返回字符串中从下标beginIndex(包括)开始到endIndex(不包括)结束的字符串
String subString(int beginIndex)返回字符串中从下标beginIndex(包括)开始到字符串结尾的子字符串
public static void testSubString() {
		String string = "I hope you will happy everday";
		System.out.println(string.substring(2));//hope you will happy everday
		System.out.println(string.substring(0,3));//I h
	}

        2.6trim

public static void testTrim() {
		String string = "   d f k   ";//前后各三个空字符
		System.out.println(string.length());//11
		//去掉前后空格后
		System.out.println(string.trim().length());//5
	}

        2.7 charAt

·String中定义有charAt()方法:

char charAt(int index)方法charAt()用于返回字符串指定位置的字符,参数index表示指定的位置
public static void testCharAt() {
		String name = "whatisjava?";
		for (int i = 0; i < name.length(); i++) {
			char c = name.charAt(i);
			System.out.print(c+" ");//w h a t i s j a v a ? 
		}

       2.8startsWith和endsWith

    /**
	 * 检测一个字符串是否以指定字符串开头或结尾
	 */
	public static void testStartWithAndEndWith() {
		String str = "Thinking in java";
		System.out.println(str.startsWith("Thin"));
		System.out.println(str.endsWith("java"));
		System.out.println(str.startsWith("thing"));
	}

       2.9 大小写变换

    /**
	 * 转换字符串中英文字母的大小写形式
	 */
	public static void testToUpperCaseAndToLowerCase() {
		String string ="我喜欢java";
		String upperString = string.toUpperCase();
		System.out.println(upperString);
		String lowerString = string.toLowerCase();
		System.out.println(lowerString);
		
	}

      2.10 valueOf

    /**
	 * valueOf将其他类型转换为String类型
	 */
	public static void testValueOf() {
		double d = 3.1415926;
		int i = 5;
		byte b = 2;
		short s =3;
		char c = 'c';
		float f = 23.0f;
		char[] ch = {'1','2'};
		System.out.println(String.valueOf(d));
		System.out.println(String.valueOf(i));
		System.out.println(String.valueOf(b));
		System.out.println(String.valueOf(s));
		System.out.println(String.valueOf(c));
		System.out.println(String.valueOf(f));
		System.out.println(String.valueOf(ch));
		
	}

3、StringBuilder及API

      3.1StringBuilder封装可变字符串

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

·StringBuilder常用的构造方法:

    public StringBulider()

    public StringBuilder(str);

public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 调用无参构造函数初始化StringBuilder对象
		StringBuilder sBuilder = new StringBuilder();
		System.out.println(sBuilder.length());
		System.out.println(sBuilder.capacity());// 默认初始容量为16
		
		//使用有参构造函数初始化StringBuider对象
		String string = "123456";
		StringBuilder sBuilder2 = new StringBuilder(string);
		System.out.println(sBuilder2.length());//长度就为字符串的长度
		System.out.println(sBuilder2.capacity());//容量为16+字符串的长度
	}

·StringBuilder常用方法:

/**
	 * 测试StringBulider常用方法:insert
	 */
	@Test
	public void testInsert() {
		String string = "hello";
		StringBuilder sBuilder =new StringBuilder(string);
		String actualValue = sBuilder.insert(5, "zhang").toString();
		String expectedValue = "hellozhang";
		//断言实际值与预期值是否相等
		Assert.assertEquals(actualValue, expectedValue);
		
		String string2 = null;
		String string3 =new String();
		System.out.println(string2);//null
		System.out.println(string3);//空字符串
		
		//插入string2,实际插入null
		System.out.println(sBuilder.insert(sBuilder.length(), string2));//hellozhangnull
		//插入string3,实际插入为空字符串
		System.out.println(sBuilder.insert(sBuilder.length(), string3));//hellozhangnull
	}
    /**
	 * 测试StringBulider常用方法:append
	 */
	@Test
	public void testAppend() {
		String string = "hello";
		StringBuilder sBuilder =new StringBuilder();
		
		String actualValue = sBuilder.append(string).toString();
		String expectedValue = "hello";
		Assert.assertEquals(actualValue, expectedValue);
	}

   

    /**
	 * 测试StringBulider常用方法:delete
	 * 
	 */
	@Test
	public void testDelete() {
		StringBuilder sBuilder = new StringBuilder("welcome come to china,zhang");
		//删除从fromindex(包括)到endindex(不包括)的字符串
		System.out.println(sBuilder.delete(22, sBuilder.length()));//welcome come to china,
		//删除某个字符
		System.out.println(sBuilder.deleteCharAt(21));//welcome come to china
	}

   3.2StringBuilder总结

  1.  StringBuilder是可变字符串,字符串的内容计算,建议使用StringBuilder,这样性能会好一些
  2.   java字符串的连接过程是使用StringBuilder实现的
  3.  StringBuilder和StringBuffer

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

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

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值