java中函数的返回值能不能是字符串数组,怎样实现?

java中函数的返回值能不能是字符串数组,怎样实现?,第1张

必须可以

2.5 字符的处理

2.5.1 字符串的表示

Java语言中,把字符串作为对象来处理,类String和StringBuffer都可以用来表示一个字符串。(类名都是大写字母打头)

1.字符串常量

字符串常量是用双引号括住的一串字符。

"Hello World!"

2.String表示字符串常量

用String表示字符串:

String( char chars[ ] );

String( char chars[ ], int startIndex, int numChars );

String( byte ascii[ ], int hiByte );

String( byte ascii[ ], int hiByte, int startIndex, int numChars );

String使用示例:

String s=new String() ; 生成一个空串

下面用不同方法生成字符串"abc":

char chars1[]={'a','b','c'};

char chars2[]={'a','b','c','d','e'};

String s1=new String(chars1);

String s2=new String(chars2,0,3);

byte ascii1[]={97,98,99};

byte ascii2[]={97,98,99,100,101};

String s3=new String(ascii1,0);

String s4=new String(ascii2,0,0,3);

3.用StringBuffer表示字符串

StringBuffer( ); /分配16个字符的缓冲区/

StringBuffer( int len ); /分配len个字符的缓冲区/

StringBuffer( String s ); /除了按照s的大小分配空间外,再分配16个

字符的缓冲区/

2.5.2 访问字符串

1.类String中提供了length( )、charAt( )、indexOf( )、lastIndexOf( )、getChars( )、getBytes( )、toCharArray( )等方法。

◇ public int length() 此方法返回字符串的字符个数

◇ public char charAt(int index) 此方法返回字符串中index位置上的字符,其中index 值的 范围是0~length-1

◇ public int indexOf(int ch)

public lastIndexOf(in ch)

返回字符ch在字符串中出现的第一个和最后一个的位置

◇ public int indexOf(String str)

public int lastIndexOf(String str)

返回子串str中第一个字符在字符串中出现的第一个和最后一个的位置

◇ public int indexOf(int ch,int fromIndex)

public lastIndexOf(in ch ,int fromIndex)

返回字符ch在字符串中位置fromIndex以后出现的第一个和最后一个的位置

◇ public int indexOf(String str,int fromIndex)

public int lastIndexOf(String str,int fromIndex)

返回子串str中的第一个字符在字符串中位置fromIndex后出现的第一个和最后一个的位置。

◇ public void getchars(int srcbegin,int end ,char buf[],int dstbegin)

srcbegin 为要提取的第一个字符在源串中的位置, end为要提取的最后一个字符在源串中的位置,字符数组buf[]存放目的字符串, dstbegin 为提取的字符串在目的串中的起始位置。

◇public void getBytes(int srcBegin, int srcEnd,byte[] dst, int dstBegin)

参数及用法同上,只是串中的字符均用8位表示。

2.类StringBuffer提供了 length( )、charAt( )、getChars( )、capacity()等方法。

方法capacity()用来得到字符串缓冲区的容量,它与方法length()所返回的值通常是不同的。

2.5.3 修改字符串

修改字符串的目的是为了得到新的字符串,类String和类StringBuffer都提供了相应的方法。有关各个方法的使用,参考java 2 API。

1.String类提供的方法:

concat( )

replace( )

substring( )

toLowerCase( )

toUpperCase( )

◇ public String contat(String str);

用来将当前字符串对象与给定字符串str连接起来。

◇ public String replace(char oldChar,char newChar);

用来把串中出现的所有特定字符替换成指定字符以生成新串。

◇ public String substring(int beginIndex);

public String substring(int beginIndex,int endIndex);

用来得到字符串中指定范围内的子串。

◇ public String toLowerCase();

把串中所有的字符变成小写。

◇ public String toUpperCase();

把串中所有的字符变成大写。

2.StringBuffer类提供的方法:

append( )

insert( )

setCharAt( )

如果 *** 作后的字符超出已分配的缓冲区,则系统会自动为它分配额外的空间。

◇ public synchronized StringBuffer append(String str);

用来在已有字符串末尾添加一个字符串str。

◇ public synchronized StringBuffer insert(int offset, String str);

用来在字符串的索引offset位置处插入字符串str。

◇ public synchronized void setCharAt(int index,char ch);

用来设置指定索引index位置的字符值。

注意:String中对字符串的 *** 作不是对源 *** 作串对象本身进行的,而是对新生成的一个源 *** 作串对象的拷贝进行的,其 *** 作的结果不影响源串。

相反,StringBuffer中对字符串的连接 *** 作是对源串本身进行的, *** 作之后源串的值发生了变化,变成连接后的串。

2.5.4 其它 *** 作

1.字符串的比较

String中提供的方法:

equals( )和equalsIgnoreCase( )

它们与运算符'= ='实现的比较是不同的。运算符'= ='比较两个对象是否引用同一个实例,而equals( )和equalsIgnoreCase( )则比较 两个字符串中对应的每个字符值是否相同。

2.字符串的转化

javalangObject中提供了方法toString( )把对象转化为字符串。

3.字符串"+" *** 作

运算符'+'可用来实现字符串的连接:

String s = "He is "+age+" years old";

其他类型的数据与字符串进行"+"运算时,将自动转换成字符串。具体过程如下:

String s=new StringBuffer("he is")append(age)append("years old")toString();

注意:除了对运算符"+"进行了重载外,java不支持其它运算符的重载。

import javautilScanner;

import javautilSet;

import javautilTreeMap;

/

需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

分析:

A:定义一个字符串(可以改进为键盘录入)

B:定义一个TreeMap集合

键:Character

值:Integer

C:把字符串转换为字符数组

D:遍历字符数组,得到每一个字符

E:拿刚才得到的字符作为键到集合中去找值,看返回值

是null:说明该键不存在,就把该字符作为键,1作为值存储

不是null:说明该键存在,就把值加1,然后重写存储该键和值

F:定义字符串缓冲区变量

G:遍历集合,得到键和值,进行按照要求拼接

H:把字符串缓冲区转换为字符串输出

录入:linqingxia

结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)

/

public class TreeMapDemo {

public static void main(String[] args) {

// 定义一个字符串(可以改进为键盘录入)

Scanner sc = new Scanner(Systemin);

Systemoutprintln("请输入一个字符串:");

String line = scnextLine();

// 定义一个TreeMap集合

TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();

//把字符串转换为字符数组

char[] chs = linetoCharArray();

//遍历字符数组,得到每一个字符

for(char ch : chs){

//拿刚才得到的字符作为键到集合中去找值,看返回值

Integer i = tmget(ch);

//是null:说明该键不存在,就把该字符作为键,1作为值存储

if(i == null){

tmput(ch, 1);

}else {

//不是null:说明该键存在,就把值加1,然后重写存储该键和值

i++;

tmput(ch,i);

}

}

//定义字符串缓冲区变量

StringBuilder sb= new StringBuilder();

//遍历集合,得到键和值,进行按照要求拼接

Set<Character> set = tmkeySet();

for(Character key : set){

Integer value = tmget(key);

sbappend(key)append("(")append(value)append(")");

}

//把字符串缓冲区转换为字符串输出

String result = sbtoString();

Systemoutprintln("result:"+result);

}

}

/不懂里面的的一些方法的可以找本书看看Map集合方面的,还有学会查API,否则你一辈子都读不懂JAVA程序的,其实我这个不用分析的话应该是这个问题的最简解了吧。。。。/

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12189212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存