1、API
API(Application Programmming Interface)应用程序接口
JavaAPI:指的是JDK(java development kit Java开发工具包)中提供的各种功能的Java类 这些类将底层的实现封装起来的,我们不需要关心这些类是如何实现的,只需要学习这些类如何让使用,我们可以通过帮助文档学习这些API如何使用。
1.3、API使用练习
需求:按照帮助文档的使用步骤学习Scanner类的使用,并实现键盘录入一个字符串,最后在控制台输出。
package com.itheima_01;
/*
* 需求:按照帮助文档的使用步骤学习Scanner类的使用,并实现键盘录入一个字符串,最后在控制台输出。
*Scanner:用于获取键盘录入数据。(基本类型数据,字符串数据)
* public String nextLine();
* 获取键盘录入字符串数据
* */
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
// public String nextLine();
// 接受数据
System.out.println("请输入一个字符串数据");
String line=sc.nextLine();
System.out.println("你输入的数据是:"+line);
}
}
2、String
String是引用类型
String类代表字符串,Java程序中所有字符串文字(例如“abc”)都被实现为此类的实例也就是说,Java程序中所有的双引号字符串,都是String类的对象。
字符串的特点:
字符串不可变,他们的值在创建后不能被更改
虽然String的值是不可改变的,但是他们可以被共享
字符串效果上相当于字符数组(char[ ])(jdk8之前),但是底层原理是字节数组(byte[ ])(jdk9以后)
package com.itheima_02;
/*
* String构造方法:
* public String();创建一个空白字符串,不含任何内容
* public String(char [] chs);根据字符数组的内容,来创建字符串对象
* public String(byte [] bys);根据字节数组的内容,来创建字符串对象
* String ="abc";直接赋值的方式创建字符串对象,内容就是abc
* 推荐使用直接赋值的方式
/
public class StringDemo_02 {
public static void main(String[] args){
// public String();创建一个空白字符串,不含任何内容
String s1=new String();
System.out.println("s1:"+s1);
// public String(char [] chs);根据字符数组的内容,来创建字符串对象
char [] chs={'a','b','c'};
String s2=new String(chs);
System.out.println("s2:"+s2);
// public String(byte [] bys);根据字节数组的内容,来创建字符串对象
byte []byt={97,98,99};
String s3=new String(byt);
System.out.println("s3:"+s3);
// String ="abc";直接赋值的方式创建字符串对象,内容就是abc
String s4="abc";
System.out.println("s4:"+s4);
}
}
2.3、String对象的特点
package com.itheima_03;
public class StringDmeo_01 {
public static void main (String[] args){
char []chs={'a','b','e'};
String s1=new String(chs);
String s2=new String(chs);
// 引用类型用==,比较的是地址是否相等
System.out.println(s1==s2);
// 用equals()比较的是内容是否相等
System.out.println(s1.equals(s2));
String s3="abc";
String s4="abc";
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
System.out.println(s1.equals(s3));
}
}
案例:用户登陆
需求:已知用户名和密码,请用程序实现模拟用户登陆,总共给三次机会,登录之后,给出相应提示。
package com.itheima_03;
import java.util.Scanner;
/*
* 需求:已知用户名和密码,请用程序实现模拟用户登陆,总共给三次机会,登录之后,给出相应提示。
*
* 需求分析:
* 需求创建一个String类 导包,用户可以在控制台输入name和password
n创建两个成员变量 name password
用equals()判断name与所给的username内容是否相等,password与pwd内容是否相等
设置校验次数为3次,每次校验失败都给出提示
* */
public class StringDemo_02 {
public static void main(String[] args) {
// 定义两个数组,用字符串表示
char[] chs1 = {'y', 'l'};
String un = new String(chs1);
char[] chs2 = {'a', 'b', 'c'};
String pwd = new String(chs2);
for (int i = 0; i < 3; i++) {
// 输入的不对就在循环一次,超过三次就锁定
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String name = sc.nextLine();
System.out.println("请输入用户密码");
String password = sc.nextLine();
if (un.equals(name) && pwd.equals(password)) {
System.out.println("登陆成功");
} else {
if (2 - i == 0)
{
System.out.println("账户已锁定,请与管理员联系");
} else {
System.out.println("你还有" + (2 - i) + "次机会");
}
}
}
}
}
案例:遍历字符串
需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
package com.itheima_03;
import java.util.Scanner;
/*
* 需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
* 分析:
* 导包,输入一个字符串
* 然后把字符串给一个字符串数组,
* 对字符串数组进行遍历
* 可以用一个方法
*
*
* */
public class StringDemo_03 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextLine();
// line.charAt(0);
// line.charAt(1);
// line.charAt(2);
// System.out.println(line.charAt(0));
// 输出字符串的长度
System.out.println(line.length());
// 字符串的数组长度需要加上line.length()
for (int i=0;i<line.length();i++)
{
line.charAt(i);
System.out.println(line.charAt(i));
}
}
}
案例:统计字符串中大写字母、小写字母、数字的个数并输出
package com.itheima_04;
import java.util.Scanner;
public class StringDemo_01 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextLine();
// String ch=line.charAt(0);
int a=0;
int b=0;
int c=0;
for (int i=0;i<line.length();i++)
{
line.charAt(i);
// System.out.println(line.charAt(i));
if(line.charAt(i)>='A'&&line.charAt(i)<='Z')
{
a++;
// System.out.println("大写字母有:"+line.charAt(i));
// System.out.println(a);
}else if(line.charAt(i)>='a'&&line.charAt(i)<='z')
{
b++;
// System.out.println("小写字母有:"+line.charAt(i));
// System.out.println(b);
}else if(line.charAt(i)>='0'&&line.charAt(i)<='9')
{
c++;
// System.out.println("数字有:"+line.charAt(i));
// System.out.println(c);
}
}
System.out.println("大写字母:"+a+" 小写字母:"+b+" 数字的个数:"+c);
}
}
案例:拼接字符串
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串,调用该方法,并在控制台输出结果,例如,数组为int[ ]arr={1,2,3};执行方法后的输出结果为:[1,2,3]
注意:+
在没有碰到字符串的时候,作用是数值运算的加法作用,当第一次遇到字符串的时候,将成为字符串连接符,其后所有的量都将先被转换为字符串然后做拼接。
package com.itheima_04;
public class StringDemo_02 {
public static void main (String[] args){
int [] arr={1,2,3};
String ch=arrayToString(arr);
System.out.println(ch);
}
// 定义一个方法,用于把int数组中数据按照指定的格式拼接成一个字符串
/* 两个需要注意的地方:
返回值应该是String
参数:int [] arr
* */
public static String arrayToString(int [] arr){
String s=" ";
// 字符串类型可以用+ 连接。
// 当+前面不是数字时,+就起连接作用
s+="[";
for (int i=0;i<arr.length;i++)
{
if(2-i>0)
{
s+=arr[i];
s+=',';
}else
{
s+=arr[i];
}
}
s+="]";
return s;
}
}
案例:字符串反转
需求:定义一个方法,实现字符串录入,调用该方法,在控制台输出结果。
例如:键盘输入abc,输出cba
package com.itheima_04;
import java.util.Scanner;
public class StringDemo_03 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String line=sc.nextLine();
System.out.println("你输入的字符串长度为:"+line.length());
String ch=getString(line);
System.out.println(ch);
}
// 定义一个方法,将字符出遍历倒序输出
public static String getString(String line)
{
String s="";
for(int i=line.length()-1;i>=0;i--)
{
s+=line.charAt(i);
}
return s;
}
}
3、StringBuilder
package com.itheima_05;
/*
* 先创建对象,有对象之后才能调用方法
* */
public class StringBuilder_01 {
public static void main(String[] args) {
StringBuilder s1=new StringBuilder();
System.out.println("s1:"+s1);
System.out.println("s的长度"+s1.length());
StringBuilder s2=new StringBuilder("avs");
System.out.println("s2:"+s2);
System.out.println("s2的长度"+s2.length());
// append()用于添加任意类型的数据,并且对象可以返回他本身
StringBuilder s3=new StringBuilder ("ni,");
s3.append("hao,").append("I,").append("am,").append("yl");
System.out.println("s3:"+s3);
// reverse()用于将对象倒序输出
StringBuilder s4=new StringBuilder ("uoy eovl");
s4.reverse();
System.out.println("s4:"+s4);
// int [] arr={1,2,3,4,5};
// arr[].reverse();
// System.out.println(arr);
}
}
package com.itheima_05;
public class StringBuilder_02 {
public static void main(String[] args) {
// 将String转换为StringBuilder
String s1=new String("abc");
System.out.println("s1:"+s1);
StringBuilder sb=new StringBuilder(s1);
sb.append("efg"); //String转换成SB之后,就可以使用append
sb.reverse();
System.out.println(sb);
// 将StringBuilder转换为String
StringBuilder sb1=new StringBuilder("woxuehuile");
sb1.append("+chifan");
String s=sb1.toString();
// s+="woxuehuile";
// s.append("chifan"); 转换之后就不不能再用append() reverse()了
// s.reverse();
System.out.println(s);
System.out.println(s.length());
}
}
案例:拼接字符串
需求: 定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果,例如:数组为int [ ] arr={1,2,3};执行方法后的输出结果为:[1,2,3]
package com.itheima_05;
/*
* 需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,
* 调用该方法,并在控制台输出结果,
* 例如:数组为int [ ]arr={1,2,3};执行方法后的输出结果为:[1,2,3]
* */
public class StringBuilderTest_01 {
public static void main(String[] args) {
int[] arr={1,2,3};
String s1=arrayToString(arr);
System.out.println("s1:"+s1);
}
// 定义一个方法,将数组遍历,并且将数组元素类型转换成String类型
public static String arrayToString(int [] arr) {
StringBuilder s=new StringBuilder();
// s+="[";
s.append("[");
for(int i=0;i<arr.length;i++)
{
// System.out.println(arr[i]);
// s+=",";
if(arr.length-i>1)
{
s.append(arr[i]).append(",");
// s+=",";
// s.append("]");
}else
{
// s+=arr[i];
s.append(arr[i]);
}
}
s.append("]");
// System.out.println(s);
// 将StringBuilder转化String
String s0=s.toString();
return s0;
}
}
案例:在控制台输入一个字符串,调用一个方法,将字符串倒序输出。使用StringBuilder
package com.itheima_05;
import java.util.Scanner;
/*
* 需求:
* 定义一个方法,实现字符串反转,键盘录入一个字符串,调用该方法后,在控制台输出结果。
*分析:
* 导包,键盘输入字符串
* 在定义方法中利用StringBuilder 中的reversr()来实现字符串的反转
* */
public class StringBuilderTest_02 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串");
String s=sc.nextLine();
String ch=reverse(s);
System.out.println("反转后的字符串为:"+ch);
}
// 定义一个方法,用来输入的字符串反转
public static String reverse(String s){
// String sb=s.toString(); 将SB转换为String
StringBuilder sb=new StringBuilder(s);
sb.reverse();
// System.out.println(sb);
String s1=sb.toString();
return s1;
}
}