JDK API

JDK  API :

1. JDK中包含大量的API类库,所谓API  (Application programming interface ,应用程序编程接口)就是一些写好、可以供直接使用的功能(在Java中,这些功能以类的形式封装)

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

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

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

String及常用API

string 是不可变对象

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

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

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

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

String 常量池

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

String常量池

@Test
	 public  void testConstantPool() {
		 String str1="Hello";
    //不会创建新的String对象,而是适应常量翅中已有“hello”
	    String str2="Hello"	 ;
	    System.out.println("str1==str2 :"+str1 == str2); //输出 ?
	   //使用new 关键字会创建新的String对象
	    String str3=new String("Hello");
	    System.out.println("str1==str3 :"+str1 == str3); 
	 }
false
false

内存编码及长度

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

/*获取String对象的长度  */
	 @Test
	 public void testLength() {
		 String str1="Hello";
		 System.out.println("Hello.length() :"+str1.length());
		 String str2="你好";
		 System.out.println("你好.length() :"+str2.length());
	 }
Hello.length() :5
你好.length() :2

使用indexOf实现检索

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

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

trim (查阅API)

/*去掉一个字符串的前导和后续空字符 */
	 @Test
	 public void testTrim() {
		 String userName="good man";
		 userName=userName.trim();
		 System.out.println(userName.length());
		 System.out.println(userName);
	 }
8
good man

charAt

String中定义有charAt ()方法;

/*遍历一个字符串的字符序列 */
	 @Test
	 public void testCharAt() {
		 String name ="What is Java ?";
		for (int i = 0; i < name.length(); i++) {
			char c=name.charAt(i);
			System.out.println(c+ "");
		}
	 }
W
h
a
t
 
i
s
 
J
a
v
a
 
?

startsWith 和 endWith

 /*检测一个字符串是否以指定字符串开始或结尾 */
	 @Test
	 public void testStartWithAndEndWith() {
		 String str="Thinking in java";
		 System.out.println(str.endsWith("java")); //true
		 System.out.println(str.startsWith("T"));   //true
		 System.out.println(str.startsWith("thinking")); //fasle
	 }
true
true
false

大小写变换

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

valueof (查阅API)

	 @Test
	 public void testValueOf() {
		 double pi=3.1415926; 
		 int value=123;
		 boolean flag=true;
		 char[] charArr= {'a','b','c','d','e'};
		 String str=String.valueOf(pi);
		 System.out.println(str);
		 str =String.valueOf(value);
		 System.out.println(str);
		 str=String.valueOf(flag);
		 System.out.println(str);
		 str=String.valueOf(charArr);
		 System.out.println(str);
	 }
3.1415926
123
true
abcde

StringBudier以及API

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

stringBuilder有如下常用构造方法

public StringBuilder( )

public StringBuilder(String str)

StringBuilder常用方法

StringBuilder

stringBuilder的很多方法的返回值均为StringBuilder类型。这些方法的返回语均为:return this

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

buf.append ("ibm").append("java").insert(3,"orale").replace(9,13,"JAVA");

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

Append方法(查阅API)

@Test
	 public void testAppend() {
		 StringBuilder buf=new StringBuilder("Programming Language");
		 buf.append("java").append("cpp")
		 .append("php").append("c#").append("objective-c");
	   System.out.println(buf.toString());
	 }

insert(查阅)

 @Test
	 public void testInsert() {
		 StringBuilder buf=new StringBuilder("javacppphpc#objective-c");
		 buf.insert(9, "php");
		 System.out.println(buf);
	 }
javacppphphppc#objective-c

delete (查阅API)

@Test
	 public void testDelete() {
		 StringBuilder buf =new StringBuilder("javaoralecpp#php") ;
		 buf.delete(4, 4+6);
		 System.out.println(buf);
	 }
javapp#php

StringBuilder 总结

猜你喜欢

转载自blog.csdn.net/abcdefghwelcome/article/details/85008808