2020/7/31
1.API
-
API (Application Programming Interface) :应用程序编程接口
-
java中的API
指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。
2.String类
- Scanner的方法补充
//nextLine缺点:nextLine方法前面不能出现其他键盘输入方法
//next缺点:不能接收空格和回车
import java.util.Scanner;
public class Tset01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("输入整数:");
int i = sc.nextInt();
System.out.println(i);
System.out.println("输入字符串:");
String s = sc.nextLine();
System.out.println(s);
System.out.println("输入字符串:");
String s1 = sc.next();
System.out.println(s1);
}
}
- nextLine缺点:nextLine方法前面不能出现其他键盘输入方法
- next缺点:不能接收空格和回车
1.String类的介绍
- String所在的包是java.lang包,java.lang包下的所有类在使用时都不需要导包。
- String代表字符串类,所有字符串字面值都是字符串的对象。
- String类在打印时不会出现地址值,会出现直接内容。
2.构造方法
方法 | 说明 |
---|---|
new String(String s) | 把字符串变成字符串 |
new String(char[] chs) | 把字符数组变成字符串 |
new String(byte[] bys) | 把字节数组变成字符 |
new String(byte[] bys,int index,int len) | 把字节数组的一部分变成字符串 |
String s=“字符串” | 字符串直接赋值 |
public class Test02 {
public static void main(String[] args) {
//String构造方法
String s1 = new String("abc");
System.out.println(s1);
char[] arr = {'a', 'b', 'c', 'd'};
String s2 = new String(arr);
System.out.println(s2);
byte[] brr = {100, 101, 102, 103};
String s3 = new String(brr);
System.out.println(s3);
第一个参数代表开始索引,第三个参数表示的是个数
String s4 = new String(arr, 1, 2);
System.out.println(s4);
String s5 = "abc";
System.out.println(s5);
}
}
3.创建对象的区别
-
==号:在比较基本类型时比较的是其值是否相同
在比较引用类型时比较的是地址是否相同
4.字符串的常用方法
方法 | 说明 |
---|---|
equals() | 判断字符串的内容是否相同 |
charAt() | 获取某个索引处的字符 |
length() | 获取字符串的长度 |
equalsIgnoreCase() | 判断字符串的内容是否相同,忽略大小写 |
public class Test03 {
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = new String("abc");
String s3 = "abc";
String s4 = "abc";
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
System.out.println(s3.equals(s4));
}
}
5.登陆系统
public class Test04 {
public static void main(String[] args) {
String name = "高绍绪";
String password = "123456";
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入账户名:");
String user = sc.nextLine();
System.out.println("请输入密码:");
String pass = sc.nextLine();
if (user.equals(name) && pass.equals(password)) {
System.out.println("登陆成功");
break;
} else {
if (i == 2) {
System.out.println("账户锁定,请与管理员联系");
}
//System.out.println("请重新输入");
}
}
}
}
6.字符串数组遍历
public class Test05 {
public static void main(String[] args) {
String s = "高绍绪是我的儿子哈哈哈";
for (int i = 0; i < s.length(); i++) {
System.out.println(s.charAt(i));
}
}
}
7.统计字符串中大小写字母和数字的个数
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int count1 = 0;
int count2 = 0;
int count3 = 0;
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 'A' && ch <= 'Z') {
count1++;
} else if (ch >= 'a' && ch <= 'z') {
count2++;
}
else if(ch >= '0' && ch <= '9') {
count3++;
}
}
System.out.println("大写字母" + count1);
System.out.println("小写字母" + count2);
System.out.println("数字" + count3);
}
}
8.把数组拼接成一个字符串
public class Test07 {
public static void main(String[] args) {
int[] arr = {12, 34, 45, 77, 54, 88};
String s = pinjie(arr);
System.out.println(s);
}
public static String pinjie(int[] arr) {
String s = "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
s += arr[i] + "]";
} else {
s += arr[i] + " ";
}
}
return s;
}
}
3.StringBuliding类
- String不可变,一旦创建不能修改.。tringbulider叫做字符串缓冲区,是一个可变的字符串。
1.构造方法
方法 | 说明 |
---|---|
new StringBulider() | 创建一个空的StringBuilder对象 |
new StringBuilder(String) | 把字符串转变为StringBuilder对象 |
public class Test08 {
public static void main(String[] args) {
StringBuilder s = new StringBuilder();
System.out.println(s);
StringBuilder s2 = new StringBuilder("高绍绪我的儿");
System.out.println(s2);
}
}
2.Stringbuilder的常用方法
方法 | 说明 |
---|---|
append() | 给StringBuilder追加内容 |
reverse() | 反转StringBuilder的内容 |
toString() | 把StringBuilder类型转变成String类型 |
- 链式编程
public class Test09 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("高绍绪是我儿子");
sb.append(" ").append("高绍绪真是我儿子").append("hhh");
System.out.println(sb);
}
}
public class Test02 {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder("abc");
//append()可以把任意类型追加到内容的后面
sb.append(true);
sb.append("柳岩");
sb.append(36);
//链式编程(写熟了之后可以用)
sb.append(true).append("abc").append(123);
System.out.println("反转前" + sb);
//反转(不需要传参也不需要接受返回值 把自己本身给反转了)
sb.reverse();
System.out.println("反转后" + sb);
//toString():转成String类型
String s = sb.toString();
System.out.println(s);
}
}
3.String和StringBuilder的相互转换
虽然String和StringBuilder看卡里很像,但不是同一种类型。
调用方法需要对应的类,比如String类有startWitch(),比如StringBuilder有reverse()方法
String->StringBuilder
new StringBuilder(String s);
StringBuilder->String
String s = sb.toString();
4.StringBuilder的好处
StringBuilder因为对象的内容是可变的,所以在修改时执行速度快,在做大量的字符串拼接时就建议使用StringBuilder来完成。
public class Test03 {
public static void main(String[] args) {
//String是不可变的
String s = "";
//获取执行但当前代码的系统时间
long time1 = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
s += "a";
}
long time2 = System.currentTimeMillis();
System.out.println("String :" + (time2-time1)); //5736毫秒
System.out.println(s);
//StringBuilder是可变的
StringBuilder sb = new StringBuilder();
long time3 = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
sb.append("a");
}
long time4 = System.currentTimeMillis();
System.out.println("StringBuilder:" + (time4-time3)); //2毫秒
System.out.println(sb);
}
}
5.StringBuilder完成数组的拼接
public class Test10 {
public static void main(String[] args) {
int[] arr={11,22,34,55,77,88,99};
System.out.println(splic(arr));
}
public static String splic(int[] arr){
StringBuilder s=new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
s.append(arr[i]).append("]");
}else{
s.append(arr[i]).append(",");
}
}
return s.toString();
}
}