API慨述-帮助文档的的使用
API概述
API(Application Programming Interface): 应用程序编程接口
编写程序去控制机器人踢足球,程序需要向机器人发出向前跑、向后跑、射门、抢球等各种命令。机器人厂商一定会提供一些用于控制机器人的接口类,这些类中定义好了操作机器人各种动作的方法。其实,这些接口类就是机器人 厂商提供给应用程序编程的接口,大家把这些类称为API
Java API: 指的就是 JDK 中提供的各种功能的 Java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的, 只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些 API 如何使用
如何下载API文档
1.下载地址,点击进入:
http://www.oracle.com/technetwork/java/javase/documentation/jdk8-doc-downloads-2133158.html
(图1
)
2.下载成功后,解压下载的压缩文件,点击进入 docs/api 下的 index.html 文件即可。
(图2
)
API文档如何阅读
(图3
)
eclipse 中将鼠标放到类或方法上,即可看到相关的注释说明:再按下 F2 即可将注释窗口固定。
(图4
)
IDEA 中需要设置才能看到相应说明。设置:File->Setting->Editor->General
(图5
)
键盘录入字符串
API使用练习
需求:按照帮助文档的使用步骤学习 Scanner 类的使用,并实现键盘录入一个字符串,最后输出在控制台
1
2
3
4
5
6
7
8
9
10
|
import java.util.Scanner;
概念: Scanner是用来获取键盘录入的数据
构造:
Scanner sc = new Scanner(System.in);
方法:
int num = sc.nextInt(); //获取用户在控制台录入的数字
String str = sc.next(); //获取用户在控制台录入的字符串, 结束标记: 空格、tab、换行符或其他分隔符, 也就是在遇到下一个词的开头时停止读取
String str = sc.nextLine(); //获取用户在控制台录入的字符串, 结束标记: 回车换行符. 不建议使用(因为会和nextInt冲突)
double d = sc.nextDouble(); //获取用户在控制台录入的小数
|
技巧
Scanner 的 nextInt() 方法会读取整数,然后留在输入流中的是回车符(换行符)。然而,Scanner 的 next() 方法不会读取换行符或其他空白字符。它只会读取下一个词,而词是由非空白字符组成的连续字符序列。因此,即使在输入流中存在上一个 nextInt() 方法留下的回车符,next() 方法也不会读取它,而是从输入流的下一个词开始读取。
String概述
String 类又称作不可变字符序列
String 类在 java.lang 包下,Java 程序默认导入 java.lang 包下的所有类,所以使用的时候不需要导包
Java 字符串就是 Unicode 字符序列,例如字符串 “Java” 就是 4 个 Unicode 字符 “J” “a” “v” “a” 组成的
Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个预定义的类 String,每个用双引号括起来的字符串都是 String 类的一个实例,也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象
字符串不可变,它们的值在创建后不能被更改
1
2
3
4
5
6
7
8
|
public static void main(String[] args){
String s1 = "abc123";
int length = s1.length();
System.out.println(length);
s1 = "def"; //这一步是让s1这个字符串类型的变量,记录了一个新的对象。
System.out.println(s1);
}
|
String类常见构造方法
方法名 |
说明 |
public String() |
创建一个空白字符串对象,不含有任何内容 |
public String(char[] chs) |
根据字符数组的内容,来创建字符串对象 |
public String(char[] chs) |
根据字符数组的内容,来创建字符串对象 |
String s = “abc”; |
直接赋值的方式创建字符串对象,内容就是abc |
String 这个类比较特殊,打印其对象名的时候, 不会出现内存地址, 而是该对象所记录的真实内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public static void main(String[] args){
//public String():创建一个空白字符串对象,不含有任何内容
String s1 = new String();
System.out.println(s1);
//public String(char[] chs):根据字符数组的内容,来创建字符串对象
char[] chs = {'a','b','c'};
String s2 = new String(chs);
System.out.println(s2); //abc
//public String(String original): 根据传入的字符串内容,来创建字符串对象
String s3 = new String("123");
System.out.println(s3); //123
}
|
创建字符串对象的区别对比
- 问题:构造方法能创建对象,双引号也能创建字符串对象,有什么区别吗?
- 注意:== 号做比较
基本数据类型:比较的是具体的值
1
2
3
|
int a = 10;
int b = 20;
System.out.println(a == b); //false
|
引用数据类型:比较地址值
1
2
3
|
Student s1 = new Student(23);
Student s2 = s1;
System.out.println(s1 == s2); //true
|
问题:下列代码的运行结果是?
1
2
3
4
5
6
7
8
9
|
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); //true
char[] chs = {'a','b','c'};
String s3 = new String(chs);
String s4 = new String(chs);
System.out.println(s3 == s4); //false
|
结论
双引号创建的字符串对象,在字符串常量池中存储,通过构造方法创建的字符串对象,在堆内存中存储
以 " "
方式给出的字符串,只要字符序列相同 (顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串常量池中维护
1
2
|
String s1 = "abc";
String s2 = "abc";
|
字符串常量池:当使用 双引号创建字符串对象的时候,系统会 检查该字符串是否在字符串常量池中存在
(图6
)
注意:字符串常量池在 JDK 7 版本开始, 从方法区中挪到了堆内存
通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
1
2
3
4
|
char[] = chs {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);
System.out.println(s1 == s2); //false
|
上面的代码中,JVM 会首先创建一个字符数组,然后每一次 new 的时候都会有一个新的地址
(图7
)
String特点
String 字符串的特点
- Java 程序中所有的双引号字符串,都是 String 类的对象
- 字符串不可变,它们的值在创建后不能被更改
- 虽然 String 的值是不可变的,但是它们可以被共享 (字符串常量池的特点)
(图8
)
一般我们比较字符串,比较的都是值是不是相等,用 System.out.println(str1.equals(str2));
字符串对象里包含的字符是不是一样的,对象不一样没关系,我们只要内容一样就行
变量拼接
1
2
3
4
5
6
7
8
|
public class Test{
public static void main(string[] args){
String s1 = "abc";
String s2 = "ab";
String s3 = s2 + "c"; //变量跟 + 号作拼接
System.out.println(s1 == s3); //false
}
}
|
当字符串之间使用 +
号串联(拼接)的时候,系统底层会自动创建一个 StringBuilder
对象
然后再调用其 append
方法完成拼接
拼接后,再调用其 toString
方法转换为 String
类型
(图9
)
常量拼接
1
2
3
4
5
6
7
|
public class Test{
public static void main(String[] args){
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2); //true
}
}
|
Java 存在常量优化机制,在编译的时候,就会将 “a”+“b”+“c” 拼接为 “abc”, 然后 s1、s2 都会指向常量池中的内存地址
字符串连接
1
2
3
|
String s1 = "Hello";
String s2 = "World!"
String s = s1 + s2; //HelloWorld!
|
符号 "+"
把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式
当 "+"
运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接
1
2
3
4
|
int age = 18;
String str = "age is" + age; //str赋值为"age is18"
//这种特性通常被用在输出语句中
System.outprintln("age is" + age);
|
String类和常量池
全局字符串常量池(String Pool)
全局字符串常量池中存放的内容是在类加载完成后存到 String Pool 中的,在每个 JVM 中只有一份,存放的是字符串常量的引用值(在堆中生成字符串对象实例), 也就是放一堆常量在里边
class文件常量池(Class Constant Pool)
class 常量池是在编译的时候每个 class 都有的,在编译阶段,存放的是常量(文本字符串、final 常量等)和符号引用。
运行时常量池(Runtime Constant Pool)
运行时常量池是在类加载完成之后,将每个 class 常量池中的符号引用值转存到运行时常量池中,也就是说,每个 class 都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。
1
2
3
4
5
6
7
8
9
|
// 字符串相等判断 (以后一般判断字符串值是否相等,使用equals()
String str1 = "abc";
String str2 = new String("abc");
String str3 = "abc";
System.out.println(str1 == str3); //true
System.out.println(str2 == str3); //false
System.out.println(str2.equals(str3)); //true
|
String类常用的方法
String类的常用方法列表
名称 |
说明 |
char charAt(int index) |
返回字符串中第 index 个字符 |
boolean equals(String other) |
如果字符串与 other 相等,返回 true; 否则,返回 false。 |
boolean equalslgnoreCase(String other) |
如果字符串与 other 相等(忽略大小写),则返回 true; 否则,返回 false。 |
int indexOf(String str) |
返回从头开始查找第一个子字符串 Str 在字符串中的索引位置。如果未找到子字符串 str,则返回 -1。 |
lastIndexOf(String str) |
返回从未尾开始查找第一个子字符串 str 在字符串中的索引位置。如果未找到子字符串 str,则返回 -1。 |
int length( ) |
返回字符串的长度。 |
String replace(char oldChar,char newChar) |
返回一个新串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。 |
boolean startsWith(String prefix) |
如果字符串以 prefix 开始,则返回 true。 |
boolean endsWith(String prefix) |
如果字符串以 prefix 结尾,则返回 true。 |
String substring(int beginlndex) |
返回一个新字符串,该串包含从原始字符串 beginlndex 到串尾。 |
String substring(int beginlndex,int endIndex) |
返回一个新字符串,该串包含从原始字符串 beginIndex 到串尾或 endIndex-1 的所有字符。 |
String toLowerCase( ) |
返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母。 |
String toUpperCase( ) |
返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母。 |
String trim( ) |
返回一个新字符串,该串删除了原始字符串头部和尾部的空格。 |
String[ ] split(string str) |
把字符串按照指定的规则 “str”,进行切分,返回被切分后的所有字符串 |
char[ ] tocharArray( ) |
将字符串拆分为字符数组 |
演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
String str1 = new String("abcdefg");
String str2 = "abcdefg";
String str3 = "abcdEFG";
String str4 = "def";
//charAt : 返回字符串中第0个字符
System.out.println(str2.charAt(0)); //a
System.out.println(str2.charAt(str2.length() - 1)); //g 通常用此方法取最后一个字符
//equals : 判断2个字符串的值是不是相等
System.out.println(str1.equals(str2)); //true
System.out.println(str1.equals(str3)); //false
//equalsIgnoreCase : 忽略大小写判断2个字符串的值是不是相等
System.out.println(str2.equalsIgnoreCase(str3)); //true
//indexOf : 从开头到结尾查找,返回找到的第一个子字符串的索引位置,如未找到,返回-1
System.out.println(str2.indexOf(str4)); //3
System.out.println("abcdefgdefg".indexOf(“def”)); //3
System.out.println("abcdefgdefg".indexOf(“DEF”)); //-1
//lastindexOf : 从末尾开始查找
System.out.println("abcdefgdefg".lastindexOf(“def”)); //7
//length : 输出字符串长度
System.out.println(str2.length()); //7
//replace : 字符串的替换
System.out.println("abcdefgdefg".replace("defg","abc")); //abcabcabc 这个不用对应,因为是字符串
System.out.println("abcdcd".replace("d","D")) ; //abcDcD 这个要对应,一个字符替换一个字符
//startsWith / endsWith
System.out.println("abcdfg".startsWith("ab")); //true
System.out.println("abcdfg".endsWith("dfg")); //true
//substring : 截取子字符串
System.out.println("abcdefg".substring(3)); //defg
System.out.println("abcdefg".substring(2,4)); //cd
//toLowerCase / toUpperCase
System.out.println("abcdEFG".toLowerCase()); //abcdefg 大写改小写
System.out.println("abcdefg".toUpperCase()); //ABCDEFG 小写改大写
//trim
System.out.println(" a b ".trim()); //原来长度6, trim()之后, a b长度3, 去开头和结尾空格, 中间的空格没去除
System.out.println(" a b ".replace(" ","")); //ab 将空格替换为空字符串
//Split
String[] fileNameArr = fileName.split("\\.");
/*
Split( )里放的是正则表达式, 正则表达式里的 "." 代表的是任意字符, 所以需要 "\" 来转义, 然后再加一个 "\" 表示 "\" 是个普通的"\"
正则表达式里用\\
普通的用\
*/
//tocharArray()
public static void main(String[] args){
//1.键盈录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
//2.将字符串拆分为字符数组
char[] chars = s.toCharArray();
//3.遍历字符数组
for (int i=0;i<chars.length;i++){
System.out.println(chars[i]);
}
}
|
String 是不可变字符序列,所有的替换,截取子字符串,去空格,转换大小写等都是生成了新字符串,老的字符串不变
案例:用户登录
需求:已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public static void main(String[] args){
//1.已知用户名和密码,定义两个字符串表示即可
String username = "admin";
String password = "123456";
//2.键盘录入要登录的用户名和密码,用Scanner实现
Scanner sc = new Scanner(System.in);
for(int i =1; i<=3; i++){ //3次机会
System.out.println("请输入用户名:");
String scUsername = sc.nextLine();
System.out.println("请输入密码:");
String scPassword = sc.nextLine();
//3.拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。
if(username.equals(scUsername) && password.equals(scPassword)){
System.out.println("登录成功");
break;
}else{
if(i== 3){
System.out.println("您的登录次数已达到今日上限,请明天再来");
}else{
System.out.println("登录失败,您还剩余" + (3-i) + "次机会");
}
}
}
}
|
案例:遍历字符串
需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public static void main(String[] args){
//1.键盘录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
//2.将字符串拆分为字符数组
char[] chars = s.toCharArray();
//3.遍历字符数组
for (int i=0; i<chars.length; i++){
System.out.println(chars[i]);
}
}
|
案例:统计字符次数
需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数 (不考虑其他字符)
- 大写字母:ch>=‘A’ && ch<=‘Z
- 小写字母:ch>=‘a’ && ch<=‘z
- 数字:ch>=‘0’ && ch<=‘9
把字符转换成数值之后, 再进行判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public static void main(String[] args){
//1.键盘录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
//2.要统计三种类型的字符个数,需定义三个统计变量,初始值都为0
int bigCount = 0;
int smallCount = 0;
int numCount = 0;
//3.遍历字符串,得到每一个字符
char[] chars = s.toCharArray();
for (int i=0;i<chars.length;i++){
char c = chars[i];
//4.判断该字符属于哪种类型,然后对应类型的统计变量+1
if(c>='A'&& c<='Z'){
bigCount++;
}e1seif(c>='a' && c<='z'){
smallCount++;
}e1seif(c>='0' && c<='9'){
numCount++
}
}
//5.输出三种类型的字符个数
System.out.println("大写字母字符:" + bigCount);
System.out.println("小写字母字符:" + samllCount);
System.out.println("数字字母字符:" + numCount);
}
|
手机号屏蔽(字符串截取)
需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽
最终效果为:156****1234
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public static void main(String[] args){
//1.键盘录入一个字符串,用Scanner实列
Scanner sc = new Scanner(System.in);
System.out.println("请输入手机号:");
String telString = sc.nextLine();
//2.截取字符串前三位
String start telstring.substring(0,3);
//3.截取字符串后四位
String end telstring.substring(7);
//4.将截取后的两个字符串,中间加上****进行拼接,输出结果
System.out.println(start + "****" + end);
}
|
敏感词替换(字符串替换)
需求:键盘录入一个字符串,如果字符串中包含(TMD), 则使用***替换
1
2
3
4
5
6
7
8
9
10
11
|
public static void main(String[] args){
//1.键盘录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入:");
String s = sc.nextLine();
//2.替换敏感词
String result = s.replace("TMD", "***")
//3.输出结果
System.out.println(result);
}
|
切割字符串
需求:以字符串的形式从键盘录入学生信息,例如:“张三,23” 从该字符串中切割出有效数据, 封装为 Student 学生对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public static void main(String[] args){
//2.键盘录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生信息:");
String stuInfo = sc.nextLine();
//stuInfo="张三,23";
//3.根据逗号切割字符串,得到(张三)(23)
String[] sArr = stuInfo.split(",")
//System.out.println(sArr[0]);
//System.out.println(sArr[1]);
//4.从得到的字符串数组中取出元素内容,通过Student类的有参构造方法封装为对象
Student stu = new Student(sArr[0],sArr[1]);
//5.调用对象getXxx.方法,取出数据并打印。
System.out.println(stu.getName() + "..." + stu.getAge());
}
|
StringBuilder概述
StringBuilder: 是一个 可变的字符串 类,我们可以把它看成是一个容器
作用:提高字符串的操作效率
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
概述: StringBulider就是字符串编译器,专门用来做字符串拼接.
构造:
public StringBuilder(); //创建一个空的容器
public StringBuilder(String str); //创建一个里边已经存储了str字符串的容器
方法:
public StringBulider append(任意类型); //在容器中追加数据
public StringBulider reverse(); //对容器中的内容进行翻转
public int length(); //计算容器中字符的长度
public String toString(); //把StringBuilder转换为String
转换:
//String -> StringBulider
StringBuilder sb = new StringBuilder(str字符串);
//StringBulider -> String
String str = sb对象.toString();
|
StringBuilder的构造方法
1
2
3
4
5
6
7
8
9
10
|
public static void main(String[] args){
//public StringBuilder():创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
System.out.println(sb);
//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
StringBuilder sb2 = new StringBuilder("abc");
System.out.println(sb2); //abc
}
|
打印 String 对象和 StringBuilder 对象都会出现元素内容, 而不会出现内存地址
StringBuilder常用的成员方法
- public StringBuilder append(任意类型):添加数据,并返回对象本身
- public StringBuilder reverse( ): 返回相反的字符序列
- public int length( ): 返回长度(字符出现的个数)
- public String toString( ): 通过 toString( ) 就可以实现把 StringBuilder 转换为 String
StringBuilder 可以添加任意类型的数据, 但是这些数据进入到容器后, 他们就变成了字符串数据了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
sb.append(123);
sb.append("abc");
sb.append(true);
System.out.println(sb); //1223abctrue
sb.append("\n");
sb.append(456);
/**
1223abctrue
456
*/
System.out.println(sb);
}
|
链式编程:如果一个方法返回的是对象类型,对象就可以继续向下调用方法
sb.append(“红色”).append(“蓝色”).append(“绿色”);
StringBuilder不常用的成员方法
appendCodePoint(int):将输入的数字转为 unicode 字符
1
2
3
4
|
StringBuilder sb = new StringBuilder();
sb.append("我").appendCodePoint(97);
System.out.println(sb);//我a
System.out.println(Character.toChars(97));//a
|
setCharAt(int i, char c):将第 i 个元素设置为 c(可以理解为替换)
1
2
3
4
|
StringBuilder sb = new StringBuilder();
sb.append("我abc123");
sb.setCharAt(0,'a');
System.out.println(sb);//aabc123
|
insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)
1
2
3
4
|
StringBuilder sb = new StringBuilder();
sb.append("我abc123");
sb.insert(3,"你");
System.out.println(sb);//我ab你c123
|
delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串
1
2
3
4
|
StringBuilder sb = new StringBuilder();
sb.append("我abc123");
sb.delete(2, 5);
System.out.println(sb);//我a23
|
String Builder提高效率原理
String 原理图
(图10
)
一个加号,堆内存中俩对象
String s2 = s1 + "b";
堆中创建了 001
和 002
对象, 只要你使用 +
号拼接, 堆中会自动创建一个 StringBuilder 对象, 拼完以后调用 toString 方法
String Builder 提高效率原理图
(图11
)
也就是说如果使用 StringBuilder 对象做拼接的话, 及时进行 10 万次的字符串拼接, 堆内存中也只有一个 StringBuilder 对象, 这就是他提高效率的原理
String Builder 和 String 的区别
- String: 内容是不可变的
- StringBuilder: 内容是可变的
对称字符串案例(String和StringBuilder之间的转换)
需求:键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是
对称字符串:123321、111
非对称字符串:123123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public static void main(String[] args){
//1.键盘录入一个字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入对称字符串:");
String s = sc.nextLine();
//2.将键盘录入的字符串反转
//将字符串封装为StringBuilder对象,目的是为了掉用其反转的方法
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String reverseStr = sb.toString();
//s:String
//sb:StringBuilder
//3.使用反转后的字符串,和原字符串进行比对
if(s.equals(reverseStr)){
System.out.println("是对称字符串");
}else{
System.out.println("不是对称字符串");
}
}
|
String Builder 和 String 相互转化
1.StringBuilder 转换为 String
public String toString( ): 通过 toString( ) 就可以实现把 StringBuilder 转换为 String
2.String 转换为 String Builder
public StringBuilder(String s): 通过构造方法就可以实现把 String 转换为 StringBuilder
StringBuilder拼接字符串案例
需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如,数组为int[ ] arr = {1, 2, 3};, 执行方法后的输出结果为:[1,2,3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public static void main(String[] args){
//1.定义一个int类型的数组,用静态初始化完成数组元素的初始化
int[] arr = {1,2,3};
String s = arrayToString(arr); //arrayToString()是下面自定义的方法
System.out.println(s);
}
//2.定义一个方法,返回值类型String, 参数列表int[] arr
public static String arrayToString(int[] arr){
//3.在方法中用StringBuilder按照要求进行拼接,并把结果转成String返回
StringBuilder sb = new StringBuilder("[");
for (int i=0;i<arr.length;i++){
if(i == arr.length -1){
sb.append(arr[i]).append("]");
}else{
sb.append(arr[i]).append(",")
}
return sb.toString();
}
|