java string类api_Java API ——String类

/*** · boolean equals(Object obj):比较字符串的内容是否相同,区分大小写

* · boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

* · boolean contains(String str):判断大字符串中是否包含小字符串

* · boolean startsWith(String str):判断字符串是否以某个指定的字符串开头

* · boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾

* · boolean isEmpty():判断字符串是否为空*/

public classStringDemo05{public static voidmain(String[] args) {//创建字符串对象

String s1 = "helloworld";

String s2= "helloworld";

String s3= "HelloWorld";//boolean equals(Object obj):比较字符串的内容是否相同,区分大小写

System.out.println("equals:" + s1.equals(s2)); //true

System.out.println("equals:" + s1.equals(s3)); //false

System.out.println("-----------------------");//boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

System.out.println("equals:" + s1.equalsIgnoreCase(s2)); //true

System.out.println("equals:" + s1.equalsIgnoreCase(s3)); //true

System.out.println("-----------------------");//boolean contains(String str):判断大字符串中是否包含小字符串

System.out.println("contains:" + s1.contains("hello")); //true

System.out.println("contains:" + s1.contains("hw")); //false

System.out.println("-----------------------");//boolean startsWith(String str):判断字符串是否以某个指定的字符串开头

System.out.println("startsWith:" + s1.startsWith("h")); //true

System.out.println("startsWith:" + s1.startsWith("hello")); //true

System.out.println("startsWith:" + s1.startsWith("world")); //false

System.out.println("-----------------------");//练习:boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾

System.out.println("startsWith:" + s1.endsWith("d")); //true

System.out.println("startsWith:" + s1.endsWith("world")); //ture

System.out.println("startsWith:" + s1.endsWith("wor")); //false

System.out.println("-----------------------");//boolean isEmpty():判断字符串是否为空。

System.out.println("isEmpty:" + s1.isEmpty()); //false

String s4 = "";

String s5= null;

System.out.println("isEmpty:" + s4.isEmpty()); //true//s5对象都不存在,所以不能调用方法,空指针异常

System.out.println("isEmpty:" + s5.isEmpty()); //NullPointerException

}

}

1)练习题:模拟登陆,给三次机会,并提示还有几次,登陆成功后进行玩猜数字游戏。

/***

* 模拟登录,给三次机会,并提示还有几次。如果登录成功,就可以玩猜数字小游戏了。

*

* 分析:

* A:定义用户名和密码。已存在的。

* B:键盘录入用户名和密码。

* C:比较用户名和密码。

* 如果都相同,则登录成功

* 如果有一个不同,则登录失败

* D:给三次机会,用循环改进,最好用for循环。*/

public classStringDemo06{public static voidmain(String[] args) {//定义用户名和密码。已存在的。

String username = "admin";

String password= "admin";//给三次机会,用循环改进,最好用for循环。

for(int x = 0; x < 3; x++){//键盘录入用户名和密码。

Scanner sc = newScanner(System.in);

System.out.println("请输入用户名:");

String name=sc.nextLine();

System.out.println("请输入密码:");

String pwd=sc.nextLine();if (name.equals(username) &&pwd.equals(password)){

System.out.println("登陆成功,开始玩猜数字游戏.");//猜数字游戏

GuessNumberGame.start();break;

}else{if ((2-x) == 0){

System.out.println("账号已冻结,请与管理员联系");

}else{

System.out.println("登陆失败,你还有"+(2-x)+"次机会");

}

}

}

}

}

public classGuessNumberGame {publicGuessNumberGame() {

}public static voidstart(){int number = (int)(Math.random()*100)+1;while(true){//键盘录入数据

Scanner sc = newScanner(System.in);

System.out.println("请输入你要猜的数据(1-100):");int guessNumber =sc.nextInt();if (guessNumber >number){

System.out.println("你猜的数据" + guessNumber + "大了");

}else if(guessNumber

System.out.println("你猜的数据" + guessNumber + "小了");

}else{

System.out.println("恭喜你,猜中了");break;

}

}

}

}

4、String的获取功能

· int length():获取字符串的长度

· char charAt(int index):获取指定索引位置的字符

· int indexOf(int ch):返回指定字符再次字符串中第一次出现处的索引

为什么这里参数是int类型,而不是char类型?

原因是:‘a’ 和 97 其实都可以代码‘a’。

· int indexOf(String str):返回指定字符串再次字符串第一次出现处的索引

· int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引

· int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引

· String substring(int start):从指定位置开始获取字符串,默认到末尾,包括start索引

· String substring(int start,int end):从指定位置开始到指定位置结束获取字符串,包括start索引,不包括end索引

public classStringDemo07 {public static voidmain(String[] args) {//定义一个字符串对象

String s = "helloworld";//int length():获取字符串的长度

System.out.println("s.length:"+s.length()); //10

System.out.println("----------------------");//char charAt(int index):获取指定索引位置的字符

System.out.println("charAt(int index):"+s.charAt(7)); //'r'

System.out.println("----------------------");//int indexOf(int ch):返回指定字符再次字符串中第一次出现处的索引

System.out.println("indexOf(int ch):"+s.indexOf('l')); //2

System.out.println("----------------------");//int indexOf(String str):返回指定字符串再次字符串第一次出现处的索引

System.out.println("indexOf(String str):"+s.indexOf("owo")); //4

System.out.println("----------------------");//int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引

System.out.println("indexOf(int ch,int fromIndex):"+s.indexOf('l',4)); //8

System.out.println("indexOf(int ch,int fromIndex):"+s.indexOf('k',4)); //-1

System.out.println("indexOf(int ch,int fromIndex):"+s.indexOf('l',40)); //-1

System.out.println("----------------------");//int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引

System.out.println("indexOf(String str,int fromIndex):"+s.indexOf("owo",4)); //4

System.out.println("indexOf(String str,int fromIndex):"+s.indexOf("kwl",4)); //-1

System.out.println("indexOf(String str,int fromIndex):"+s.indexOf("owo",40)); //-1

System.out.println("----------------------");//String substring(int start):从指定位置开始获取字符串,默认到末尾,包括start索引

System.out.println("substring(int start):"+s.substring(5)); //"world"

System.out.println("----------------------");//String substring(int start,int end):从指定位置开始到指定位置结束获取字符串,包括start索引,不包括end索引

System.out.println("substring(int start,int end):"+s.substring(3,8)); //"lowor"

System.out.println("substring(int start,int end):"+s.substring(0,s.length())); //"helloworld"

System.out.println("----------------------");

}

}

1)遍历字符串中的每个字符

/** 需求:统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)

* 举例:

* "Hello123World"

* 结果:

* 大写字符:2个

* 小写字符:8个

* 数字字符:3个

*

* 分析:

* 前提:字符串要存在

* A:定义三个统计变量

* bigCount=0

* smallCount=0

* numberCount=0

* B:遍历字符串,得到每一个字符。

* length()和charAt()结合

* C:判断该字符到底是属于那种类型的

* 大:bigCount++

* 小:smallCount++

* 数字:numberCount++

*

* 这道题目的难点就是如何判断某个字符是大的,还是小的,还是数字的。

* ASCII码表:

* 0 48

* A 65

* a 97

* 虽然,我们按照数字的这种比较是可以的,但是想多了,有比这还简单的

* char ch = s.charAt(x);

*

* if(ch>='0' && ch<='9') numberCount++

* if(ch>='a' && ch<='z') smallCount++

* if(ch>='A' && ch<='Z') bigCount++

* D:输出结果。

*

* 练习:把给定字符串的方式,改进为键盘录入字符串的方式。*/

public classStringDem08 {public static voidmain(String[] args) {//定义一个字符串

String s = "Hello123World";//定义三个统计变量

int bigCount = 0;int smallCount = 0;int numberCount = 0;//遍历字符串,得到每一个字符

for(int x = 0; x < s.length(); x++){char ch =s.charAt(x);//判断该字符到底是属于那种类型的

if (ch >= '0' && ch <= '9'){

numberCount++;

}else if (ch >= 'A' && ch <= 'Z'){

bigCount++;

}else if(ch >= 'a' && ch < 'z'){

smallCount++;

}

}//输出结果

System.out.println("大写字母"+bigCount+"个");

System.out.println("小写字母"+smallCount+"个");

System.out.println("数字"+numberCount+"个");

}

}

5、String类的转换功能

· byte[] getBytes():把字符串转换成字节数组

· char[] toCharArray():把字符串转换为字符数组

· static String valueOf(char[] chs):把字符数组转换成字符串

· static String valueOf(int i):把int类型的数据转成字符串

注意:String类的valueOf方法可以把任意类型的数据转成字符串

· String toLowerCase():把字符串转成小写

· String toUpperCase():把字符串转成大写

· String concat(String str):把字符串拼接

public classStringDem09 {public static voidmain(String[] args) {//定义一个字符串对象

String s = "JavaSE";//byte[] getBytes():把字符串转换为字节数组

byte[] bys =s.getBytes();for(int x = 0; x < bys.length;x++){

System.out.println(bys[x]);

}

System.out.println("---------------------");//char[] toCharArray():把字符串转换为字符数组

char ch[] =s.toCharArray();for(int x = 0; x < ch.length; x++){

System.out.println(ch[x]);

}

System.out.println("---------------------");//static String valueOf(char[] chs):把字符数组转成字符串

String s1 =String.valueOf(ch);

System.out.println("s1:"+s1);

System.out.println("---------------------");//static String valueOf(int i):把int类型的数据转成字符串

int i = 100;

String s2=String.valueOf(i);

System.out.println("s2:"+s2);

System.out.println("---------------------");//String toLowerCase():把字符串转成小写

System.out.println("toLowerCase():"+s.toLowerCase());

System.out.println("s:"+s);

System.out.println("---------------------");//String toUpperCase():把字符串转成大写

System.out.println("toUpperCase():"+s.toUpperCase());

System.out.println("---------------------");//String concat(String str):把字符串拼接

String s3 = "hello";

String s4= "world";

String s5= s3 +s4;

String s6=s3.concat(s4);

System.out.println("s5:"+s5);

System.out.println("s6:"+s6);

}

}

输出结果:

74

97

118

97

83

69

---------------------

J

a

v

a

S

E

---------------------

s1:JavaSE

---------------------

s2:100

---------------------

toLowerCase():javase

s:JavaSE

---------------------

toUpperCase():JAVASE

---------------------

s5:helloworld

s6:helloworld

1)练习题:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)

public classStringDemo10 {public static voidmain(String[] args) {//定义一个字符串

String s = "helloWORLD";//先获取第一个字符

String s1 = s.substring(0,1);//获取除了第一个字符以外的字符

String s2 = s.substring(1);//把A转成大写

String s3 =s1.toUpperCase();//把B转成小写

String s4 =s2.toLowerCase();//C拼接D

String s5 =s3.concat(s4);

System.out.println("s5:"+s5);//优化后的代码//链式编程

String result = s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase());

System.out.println("result:"+result);

}

6、String类的其他功能

A:替换功能

·String replace(char old,char new)

·String replace(String old,String new)

B:去除字符串两空格

·String trim()

C:按字典顺序比较两个字符串

·int compareTo(String str)

·int compareToIgnoreCase(String str)

public classStringDemo11 {public static voidmain(String[] args) {//替换功能

String s1 = "helloworld";

String s2= s1.replace('l', 'k');

String s3= s1.replace("owo", "ak47");

System.out.println("s1:" + s1); //s1:helloworld

System.out.println("s2:" + s2); //s2:hekkoworkd

System.out.println("s3:" + s3); //s3:hellak47rld

System.out.println("---------------");//去除字符串两空格

String s4 = " hello world ";

String s5=s4.trim();

System.out.println("s4:"+s4+"---"); //s4: hello world ---

System.out.println("s5:"+s5+"---"); //s5:hello world---//按字典顺序比较两个字符串

String s6 = "hello";

String s7= "hello";

String s8= "abc";

String s9= "xyz";

System.out.println(s6.compareTo(s7));//0

System.out.println(s6.compareTo(s8)); //7

System.out.println(s6.compareTo(s9)); //-16

}

}

1)String类的compareTo方法的源码解析

private final charvalue[];

字符串会自动转换为一个字符数组。public intcompareTo(String anotherString) {//this -- s1 -- "hello"//anotherString -- s2 -- "hel"

int len1 = value.length; //this.value.length--s1.toCharArray().length--5

int len2 = anotherString.value.length;//s2.value.length -- s2.toCharArray().length--3

int lim = Math.min(len1, len2); //Math.min(5,3); -- lim=3;

char v1[] = value; //s1.toCharArray()

char v2[] =anotherString.value;//char v1[] = {'h','e','l','l','o'};//char v2[] = {'h','e','l'};

int k = 0;while (k

char c2 = v2[k]; //c2='h','e','l'

if (c1 !=c2) {return c1 -c2;

}

k++;

}return len1 - len2; //5-3=2;

}//ceshi

String s1 = "hello";

String s2= "hel";

System.out.println(s1.compareTo(s2));//2

2)练习题:把数组中的数据按照指定格式拼接成一个字符串

/***

* 需求:把数组中的数据按照指定个格式拼接成一个字符串

* 举例:

* int[] arr = {1,2,3};

* 输出结果:

* "[1, 2, 3]"

* 分析:

* A:定义一个字符串对象,只不过内容为空

* B:先把字符串拼接一个"["

* C:遍历int数组,得到每一个元素

* D:先判断该元素是否为最后一个

* 是:就直接拼接元素和"]"

* 不是:就拼接元素和逗号以及空格

* E:输出拼接后的字符串

*

* 把代码用功能实现。*/

public classStringDemo12 {public static voidmain(String[] args) {//前提是数组已经存在

int[] arr = { 1, 2, 3};//写一个功能,实现结果

String resutl =arrayToString(arr);

System.out.println("最终结果是:"+resutl);

}/** 两个明确: 返回值类型:String 参数列表:int[] arr*/

public static String arrayToString(int[] arr){//定义一个字符串

String s = "";//先把字符串拼接一个"["

s += "[";//遍历int数组,得到每一个元素

for(int x = 0; x < arr.length; x++){//先判断该元素是否为最后一个

if (x == arr.length-1){//就直接拼接元素和"]"

s +=arr[x];

s+= "]";

}else{//就拼接元素和逗号以及空格

s +=arr[x];

s+= ", ";

}

}returns;

}

}

输出结果:

最终结果是:[1, 2, 3]

3)练习题:字符串反转

/*** 字符串反转

* 举例:键盘录入”abc”

* 输出结果:”cba”

*

* 分析:

* A:键盘录入一个字符串

* B:定义一个新字符串

* C:倒着遍历字符串,得到每一个字符

* a:length()和charAt()结合

* b:把字符串转成字符数组

* D:用新字符串把每一个字符拼接起来

* E:输出新串*/

public classStringDemo13 {public static voidmain(String[] args) {//键盘录入一个字符串

Scanner sc = newScanner(System.in);

System.out.println("请输入一个字符串:");

String line=sc.nextLine();//调用字符串反转方法

String s =myReverse(line);

System.out.println("实现功能后的结果是:" +s);

}public staticString myReverse(String s) {//定义一个新字符串

String result = "";//把字符串转成字符数组

char[] ch =s.toCharArray();//倒着遍历字符串,得到每一个字符

for(int x = ch.length-1; x >=0; x--){//用新字符串把每一个字符拼接起来

result +=ch[x];

}returnresult;

}

}

输出结果:

请输入一个字符串:

hello world

实现功能后的结果是:dlrow olleh

4)统计大串中小串出现的次数(这段程序考虑得可能不是很周全,如果查找的字符串是有重复的,比如小字符串是aoa,大字符串是aoaoaoa,我觉得结果是3,但是这段程序的结果应该是2)。

/*** 统计大串中小串出现的次数

* 举例:

* 在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"

* 结果:

* java出现了5次

*

* 分析:

* 前提:是已经知道了大串和小串。

*

* A:定义一个统计变量,初始化值是0

* B:先在大串中查找一次小串第一次出现的位置

* a:索引是-1,说明不存在了,就返回统计变量

* b:索引不是-1,说明存在,统计变量++

* C:把刚才的索引+小串的长度作为开始位置截取上一次的大串,返回一个新的字符串,并把该字符串的值重新赋值给大串

* D:回到B*/

public classStringDemo14 {public static voidmain(String[] args) {//定义大串

String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";//定义小串

String minString = "java";//写功能实现

int count =getCount(maxString, minString);

System.out.println("Java在大串中出现了:" + count + "次");

}public static intgetCount(String maxString, String minString){//定义一个统计变量,初始化值是0

int count = 0;//先在大串中查找一次小串第一次出现的位置

int index =maxString.indexOf(minString);//索引不是-1,说明存在,统计变量++

while(index != -1){

count++;//把刚才的索引+小串的长度作为开始位置截取上一次的大串,返回一个新的字符串,并把该字符串的值重新赋值给大串

int startIndex = index +minString.length();

maxString=maxString.substring(startIndex);//继续查

index =maxString.indexOf(minString);

}returncount;

}/** 简洁版

* int index;

* while((index = maxString.indexOf(minString)) != -1 ){

* count++;

* maxString = maxString.substring(index + minString.length);

* }

**/}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HDFS是Hadoop分布式文件系统,它提供了Java API来进行文件读写操作。在HDFS中,文件被分成多个块并存储在不同的节点上,因此需要使用分布式文件系统的API来进行文件读写操作。 HDFS Java API提供了以下几个来进行文件读写操作: 1. FileSystem:表示一个文件系统对象,可以通过它来获取文件系统的配置信息、创建文件、删除文件等操作。 2. Path:表示一个文件或目录的路径。 3. FSDataInputStream:表示一个输入流,可以用来读取HDFS中的文件。 4. FSDataOutputStream:表示一个输出流,可以用来向HDFS中写入数据。 下面是一个简单的示例代码,演示如何使用HDFS Java API进行文件读写操作: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; public class HdfsExample { public static void main(String[] args) throws Exception { // 创建一个Configuration对象,用于获取Hadoop配置信息 Configuration conf = new Configuration(); // 获取HDFS文件系统对象 FileSystem fs = FileSystem.get(conf); // 创建一个Path对象,表示要读取的文件路径 Path inputPath = new Path("/input/test.txt"); // 创建一个FSDataInputStream对象,用于读取文件 FSDataInputStream in = fs.open(inputPath); // 读取文件内容 byte[] buffer = new byte[1024]; int len = in.read(buffer); while (len > 0) { System.out.write(buffer, 0, len); len = in.read(buffer); } // 关闭输入流 in.close(); // 创建一个Path对象,表示要写入的文件路径 Path outputPath = new Path("/output/test.txt"); // 创建一个FSDataOutputStream对象,用于写入文件 FSDataOutputStream out = fs.create(outputPath); // 写入文件内容 String content = "Hello, HDFS!"; out.write(content.getBytes()); // 关闭输出流 out.close(); } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值