大数据java篇——String类

本文详细介绍了Java中String类的各种常用方法,包括字符串比较、字符获取、字符串转换等,并提供了StringBuffer和StringBuilder类的基本使用示例。

String 类的方法

1. equals() 是判断两个对象的内容

    == 判断内存地址,看是否是同一对象

2. charAt(int index) 返回指定位置的char值(0~length-1)

3. toCharArray() 将此字符串转换为一个新的字符数组。

4. indexOf(String str)  返回指定子字符串在此字符串中第一次出现处的索引。

5. startsWith(String prefix) 测试此字符串是否以指定的前缀开始。返回值为Boolean型

    endsWith(String prefix) 测试此字符串是否以指定的后缀结束。返回值为Boolean型

6. toLowerCase() 将String转化为小写,如果字符串中没有应该被转换的字符,则将原字符返回;

    toUpperCase() 将String转化为大写

例:编写一个函数把字符串反转

public class StringDemo {

	public static void main(String[] args) {
		System.out.println(reverseString("abcdefg"));
		

	}
	
	public static String reverseString(String src){
		if (src==null || src.length() < 2){
			return src;
		}
		String temp="";
		for(int i=src.length()-1;i>=0;i--){
			temp=temp+src.charAt(i);
		}
		return temp;
	}

}

7. split(String reg) 根据给定正则表达式的匹配拆分此字符串,返回值为字符串数组 String[] 

package stringdemo;

public class StringDemo {

	public static void main(String[] args) {
		String str1="sb,1993,7,13";
		String[] arr=str1.split(",");
		if(arr != null && arr.length >0){
			for(int i=0;i<arr.length;i++){
				System.out.println(arr[i]);
			}
		}

	}
	
	

}

8. substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。

    substring(int beginIndex , int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginIndex 处开始,直到索引endIndex-1处的字符。因此,该子字符串的长度为 endIndex-beginIndex。

beginIndex - 起始索引(包括)。endIndex - 结束索引(不包括)。 

9. getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 

    getBytes(Charset charset) 使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。

    String(byte[] bytes,Charset charset) String类的一个构造方法,通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String

package stringdemo;

import java.io.UnsupportedEncodingException;

public class StringDemo {

	public static void main(String[] args) throws UnsupportedEncodingException {
		String str="a中b国c";
		byte[] bytes=str.getBytes("iso8859-1");
		System.out.println(new String(bytes,"iso8859-1"));
		
		bytes=str.getBytes("gbk");
		System.out.println(new String(bytes,"gbk"));
		
		bytes=str.getBytes("gb2312");
		System.out.println(new String(bytes,"gb2312"));

	}
	
	

}

StringBuffer类

StringBuffer 类是一个类似于String的字符串缓冲区,可以对字符串进行增删。该类加了同步,是线程安全的,构造方法:

1. StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。

2. StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。

3. StringBuffer(String str)  构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

 

StringBuffer类的方法

1. append(char c) 将 char 参数的字符串表示形式追加到此序列。

2. toString() 返回此序列中数据的字符串表示形式

package stringdemo;

public class StringBufferDemo {

	public static void main(String[] args) {
		StringBuffer buffer = new StringBuffer();
		buffer.append("abc");
		buffer.append("def");
		buffer.append("ghi");
		System.out.println(buffer.toString());

	}

}

3. lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引,返回值为int。(此方法可用于提取文件的后缀名)如:

package stringdemo;

public class LastIndexOfDemo {

	public static void main(String[] args) {
		String str = "d:/downloads/data/a.txt";
		String temp = str.substring(str.lastIndexOf("."));
		System.out.println(temp);

	}

}

4. deleteCharAt(int index) 移除此序列指定位置的 char

StringBuilder类

    一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer 要快。 

 

 

<think>首先,用户的问题是关于使用JavaAPI操作HDFS并获取客户端对象的示例或教程。他们引用了几个站内引用,这些引用似乎来自之前的回答或文档,涉及JavaAPI操作HDFS的具体代码片段。用户的关键点是:“我想查找如何使用JavaAPI操作HDFS并获取客户端对象的示例或教程请问使用JavaAPI操作HDFS获取客户端对象示例代码或学习案例”我需要基于系统级指令来构建回答:-使用中文回答。-结构清晰,逐步解决问题。-保证回答真实可靠。-在行内数学表达式使用$...$,独立公式使用$$...$$,但由于这是一个编程主题,可能数学表达式不多,但如果有的话,要正确处理。-生成相关问题。-在引用的段落末尾添加引用标识。从提供的引用中:-引用[1]:提到在Java项目中创建Configuration和FileSystem对象来操作HDFS。-引用[2]:展示了使用@Test注解测试mkdir操作,涉及FileSystem对象。-引用[3]:给出了一个完整的Java示例代码,用于上传文件到HDFS,包括创建Configuration和FileSystem对象。用户的核心需求是“获取客户端对象”,在Hadoop中,这通常指的是FileSystem对象,它是客户端API的核心。我的回答应该:1.解释如何获取HDFS的客户端对象(即FileSystem对象)。2.提供示例代码。3.参考站内引用,确保真实可靠。4.结构清晰,比如分步骤。5.在末尾生成相关问题。结构:-开头简要介绍。-逐步讲解步骤:a.设置Configuration对象。b.获取FileSystem对象。c.使用对象进行操作。-提供完整代码示例。-添加引用标识。-最后生成相关问题。示例代码基于引用[3],但需要确保正确性。引用[3]中的代码是:```javaimportorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IOUtils;importjava.io.BufferedInputStream;importjava.io.FileInputStream;importjava.io.InputStream;importjava.io.OutputStream;publicclassHDFSExample{publicstaticvoidmain(String[]args)throwsException{Configurationconf=newConfiguration();conf.set("fs.defaultFS","hdfs://localhost:9000");FileSystemfs=FileSystem.get(conf);//其他操作...}}```在这个代码中,FileSystem.get(conf)就是获取客户端对象的部分。我需要使回答完整:-解释步骤。-提供代码。-添加引用。生成相关问题:基于主题,如常见操作、错误处理、优化等。确保中文回答。最终回答结构:1.引言:简要说明获取HDFS客户端对象的重要性。2.步骤:-步骤1:创建Configuration对象并设置HDFS地址。-步骤2:使用FileSystem.get(conf)获取FileSystem对象。-步骤3:使用对象进行文件操作(如上传、下载)。3.完整代码示例。4.引用站内内容。5.相关问题。</think>### 如何使用Java API操作HDFS并获取客户端对象 在Hadoop分布式文件系统(HDFS)中,客户端对象通常指`FileSystem`对象,它是Java API的核心接口,用于执行文件操作(如上传、下载、创建目录等)。获取该对象的步骤如下(基于Hadoop 3.x版本): #### 步骤详解 1. **创建Configuration对象**: 配置HDFS连接参数,包括NameNode地址(例如`hdfs://localhost:9000`)。Configuration对象封装了Hadoop集群的配置信息[^1]。 2. **获取FileSystem客户端对象**: 通过`FileSystem.get(conf)`方法获取客户端实例。此方法基于配置自动连接到HDFS集群,返回一个可操作的FileSystem对象[^2]。 3. **使用客户端对象进行操作**: 调用FileSystem对象的方法执行具体任务,例如: - `mkdirs(Path)` 创建目录 - `copyFromLocalFile()` 上传文件 - `open(Path)` 读取文件 #### 完整示例代码 以下是一个简单的Java程序,展示如何获取FileSystem客户端对象并上传文件到HDFS: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; public class HDFSClientExample { public static void main(String[] args) throws Exception { // 步骤1: 创建Configuration对象并设置HDFS地址 Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); // 替换为你的NameNode地址 // 步骤2: 获取FileSystem客户端对象 FileSystem fs = FileSystem.get(conf); // 这是核心的客户端实例 // 步骤3: 使用客户端对象上传本地文件到HDFS String localFilePath = "./test.txt"; // 本地文件路径 String hdfsFilePath = "/user/hadoop/test.txt"; // HDFS目标路径 try (InputStream in = new BufferedInputStream(new FileInputStream(localFilePath)); OutputStream out = fs.create(new Path(hdfsFilePath))) { IOUtils.copyBytes(in, out, 4096, true); // 执行文件上传 System.out.println("文件上传成功!"); } fs.close(); // 关闭客户端连接 } } ``` #### 关键说明 - **依赖要求**:需添加Hadoop客户端库(如`hadoop-client`)到项目依赖(Maven或Gradle)。 - **配置细节**: - `fs.defaultFS` 必须匹配你的HDFS集群地址(例如`hdfs://namenode:8020`)。 - 如果集群启用Kerberos认证,需额外配置安全参数[^3]。 - **最佳实践**: - 使用`try-with-resources`确保资源关闭,避免连接泄漏。 - 在生产环境中,通过`FileSystem.get(URI, conf)`指定URI增强灵活性。 参考站内内容:在Hadoop环境搭建完成后,我们可以通过Java API来进行HDFS的操作[^3]。使用注解@Test进行测试,调用的还是Linux中的mkdir,让客户端连接对象进行调用(注意这里客户端连接对象要在的上方使用private进行定义,方便在下方方法中的调用)[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值