JDK API

本文深入解析JDK API中的String类特性,包括不可变性、常量池机制、编码方式、长度获取、检索、截取、字符访问、字符串比较、大小写转换等关键操作。同时介绍了StringBuilder类的使用,展示如何高效处理字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 总结

03-20
### JDK API 文档概述 Java Development Kit (JDK) 提供了一组全面的类库和工具,用于开发基于 Java 的应用程序。这些类库被统称为 **Java Class Library** 或者更具体地说是 **Java Standard Edition APIs**[^1]。 #### 如何访问官方 JDK API 文档? Oracle 官方网站提供了最新版本的 JDK API 文档。开发者可以通过以下链接获取最新的文档资源: [https://docs.oracle.com/en/java/javase/](https://docs.oracle.com/en/java/javase/) 对于特定版本的 JDK(例如 JDK 8, JDK 11),可以导航到对应的子页面找到详细的 API 参考手册。API 文档通常按照包名分类,并提供每个类及其方法的具体描述。 #### 使用 JDK API 进行编程 下面是一个简单的例子,展示如何利用 `java.util` 包中的 `ArrayList` 类来操作集合数据结构: ```java import java.util.ArrayList; public class Example { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); // 添加元素 list.add("Apple"); list.add("Banana"); // 遍历列表 for (String item : list) { System.out.println(item); } } } ``` 上述代码展示了如何创建并初始化一个 `ArrayList` 对象以及向其中添加字符串类型的项目[^2]。 #### 常见的 JDK API 特性 以下是几个常见的特性说明: - **输入输出流**: `java.io.*` 中包含了处理文件读写的功能。 - **网络通信**: 利用 `java.net.*` 实现客户端和服务端之间的交互。 - **多线程支持**: `java.lang.Thread` 和 `java.util.concurrent` 是实现并发程序的核心组件[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值