java大数据开发面向对象篇(封装二)

1.API

1.1API概述

API(Applicatin Programming Interface):应用程序编程接口

java API:指jdk中提供的各种功能的java类,可以直接使用,也可以使用帮助文档查看。

1.2如何使用帮助文档

①右键打开帮助文档(没有帮助文档的同学去下载一个)

jdk1.8 中文帮助文档

链接:百度网盘 请输入提取码
提取码:gxjy

注意:如果打开帮助文档后右侧是空白,那么需要右击帮助文档,打开属性,将此处勾选即可

 

②找到索引选项卡中的输入框

③在输入框中输入你想要查找的类,例如:Random

④看类在哪个包下

⑤看类的描述

⑥看构造方法

 

⑦看成员方法

1.3API的练习

需求:按照帮助文档的使用步骤学习Scanner类的使用,并实现键盘录入一个字符串,最后输出在控制台。

package Test1;
/*
     从键盘录入一个字符串类型的数据并打印到控制台
 */


import java.util.Scanner;

public class ScannerString {
    public static void main(String[] args) {
        //创建对象 快捷键 Alt+shift+enter
        Scanner sc = new Scanner(System.in);
        
        //获取对象的值
        System.out.println("请输入字符串");
        String line =sc.nextLine();

        //打印数据

        System.out.println(line);
        
    }

}

2.String

2.1String概述

String类在java.long包下,所以使用的时候不需要导包

String类代表字符串,Java程序中的所有字符串文字(如“abc”)都被实现为此类的实例

也就是说,Java程序中所有的双引号字符串,都是String类的对象。

字符串特点:

  • 字符串不变,它们的值在创建后不能被更改;

  • 虽然String的值是不可变的,它们可以被共享;

  • 字符串效果上虽然是字符数组(char[]),但底层原理上是字节数组(byte[])。JDK8及以前是字符数组,JDK9之后是字节数组。

2.2String构造方法

package Test2;
/*
    Dtring 构造方法
         public String();创建一个空白字符串,不含有任何内容
         public String(char[] chs);根据字符数组的内容,来创建字符串对象
         public String(byte[] bys);根据字节数组的内容,来创建字符串对象
        (建议使用) String s ="abc"; 直接赋值的方式创建字符串对象,内容就是abc
 */
public class StringMethod {
    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[] bys = {97,98,99};
        String s3 = new String(bys);
        System.out.println("s3:"+s3);

        // String s ="abc"; 直接赋值的方式创建字符串对象,内容就是abc
        String s4 = "abc";
        System.out.println("s4:"+s4);

    }
}

2.3String对象的特点

①通过new创建的字符串对象,每一次new都会开辟一个内存空间,虽然内存相同,但地址不同。

②以" "方式给出的字符串,只要字符序列相同,无论在代码中出现几次,JVM都只会建立一个String对象,并在字符串池中维护。

package Test3;

public class StringSame {
    public static void main(String[] args) {
        //创建对象
        char[] chars ={'a','b','c'};
        String s1 = new String(chars);
        String s2 = new String(chars);
        String s3 = "abc";
        String s4 = "abc";
        //判断s1与s2的地址是否相同
        System.out.println(s1==s2);

        //判断s1与s3的地址是否相同
        System.out.println(s1==s3);

        //判断s3与s4的地址是否相同
        System.out.println(s3==s4);

    }
}

运行结果:

2.4字符串的比较

使用==比较

基本数据类型:比较的是数据值是否相同

引用数据类型:比较的是地址值是否相同

而字符串是一个对象,它比较的是内容是否相同,是通过一个方法来实现的,叫:equal()

public  boolean equal(Object an Object):将此字符串与指定对象进行比较。由于比较的是字符串对象,所以参数直接传递一个字符串。

package Test4;

public class StringDemo4 {
    public static void main(String[] args) {
        //创建对象
        char[] chars ={'a','b','c'};
        String s1 = new String(chars);
        String s2 = new String(chars);
        String s3 = "abc";
        String s4 = "abc";
        //判断字符串对象的地址是否相同
        System.out.println(s1==s2);
        System.out.println(s1==s3);
        System.out.println(s3==s4);
        System.out.println("-------");

        //比较字符串的内容是否相同
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println(s3.equals(s4));

    }
}

 运行结果:

2.5实例:用户登录

 需求:已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示。

package Test5;

import java.util.Scanner;

/*
      需求:已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示。
 */
public class StringDemo5 {
    public static void main(String[] args) {
        //定义两个字符串
        String name = "小白";
        String code = "123456";

        for(int i =1;i<=3;i++) {
            //创建对象,从键盘获取用户名和密码
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String inputName = sc.nextLine();
            System.out.println("请输入密码:");
            String inputCode = sc.nextLine();

            //判断用户输入用户名和密码是否相同

            if (name.equals(inputName) && code.equals(inputCode)) {
                System.out.println("登录成功");
                break;
            }
            else {
                if((3-i)==0){
                    System.out.println("您的账户被锁定,请与管理员联系");
                }else{
                    System.out.println("您输入的用户名或密码错误,你还有" + (3-i) + "次机会");
                }

            }


        }


    }
}

2.6实例:遍历字符串

需求:键盘录入一个字符串,并使用程序实现在控制台遍历字符串

思路:①使用Scanner实现从键盘录入一个字符串

           ②创建一个String类对象接收字符串

           ③使用for循环遍历字符串。使用对象.length()返回字符串长度,用对象.charAt()返回字符串              索引处的值,字符串索引也是从0开始。

package Test6;

import java.util.Scanner;

/*
    需求:键盘录入一个字符串,并使用程序实现在控制台遍历字符串
 */
public class StringDemo6 {
    public static void main(String[] args) {
        //创建对象
        Scanner sc = new Scanner(System.in);

        //接收字符串
        System.out.println("请输入字符串:");
        String s1 = sc.nextLine();

        //使用for循环遍历字符串
        for(int i=0;i<s1.length();i++){
            System.out.println(s1.charAt(i));

        }
    }
}

2.7实例:统计字符次数

需求:键盘录入一个字符串,统计该字符串中大写字母字符、小写字母字符、数字字符出现的次数(不考虑其他字符)

思路:①创建Scanner对象

           ②创建String对象接收键盘录入字符串

           ③定义三个计数变量,赋值为0

           ④使用for循环遍历字符串,使用if条件判断语句判断大写字母、小写字母、数字

注意:这里的关键是如何判断大写字母、小写字母和数字。因为遍历字符串后得到的内容是字符,所以只用判断字符的区间就可以。大写字母是:'A'<=chr=<'Z',小写字母是:'a'<=chr=<'z',数字是:'0'<=chr=<'9';

package Test7;

import java.util.Scanner;

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

 */
public class StringDemo7 {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //创建String对象接收键盘录入字符串
        System.out.println("请输入字符串:");
        String s = sc.nextLine();

        //定义三个计数变量,赋值为0
        int big=0;
        int small=0;
        int number=0;

        //使用for循环遍历字符串
        for(int i =0;i<s.length();i++){
            //使用if条件判断语句判断大写字母
            if (s.charAt(i) >='A' && s.charAt(i) <= 'Z') {
                big++;

            }else if(s.charAt(i) >='a' && s.charAt(i) <= 'z'){
                small++;
            }else if(s.charAt(i) >='0'&& s.charAt(i) <='9'){
                number++;
            }
        }
        System.out.println("大写字母的个数:"+big);
        System.out.println("小写字母的个数:"+small);
        System.out.println("数字的个数:"+number);
    }
}

2.8实例:字符串拼接 

需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如int[] arr={1,2,3},执行方法后的输出结果为[1,2,3]

思路:①定义一个int类型的数组并进行初始化

           ②定义一个方法,在方法中定义一个空字符串,根据输出结果拼接字符串“[”

           ③使用for循环遍历数组,当到达数组最后一个数字时,只拼接数组中的数字;其他位置拼               接数字加“,”;遍历结束后拼接“]”

           ④调用方法并赋值给String对象s,输出结果。

package Test8;
/*
需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,
调用该方法,并在控制台输出结果。例如int[] arr={1,2,3},执行方法后的输出结果为[1,2,3]
 */
public class StringDemo8 {
    public static void main(String[] args) {
            //定义int类型的数组
        int[] arr={1,2,3};
       String s =arrayToString(arr);
        System.out.println(s);
    }
    //定义方法
    public static String arrayToString(int[]arr){
        String s = "";
        s+="[";
        //遍历数组
        for(int i = 0;i<arr.length;i++){
            if(i==arr.length-1){
                s+=arr[i];
            }else{
                s+=arr[i];
                s+=",";
            }
        }
        s+="]";
        return s;
    }

}

2.9实例:字符串反转

需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用方法后,在控制台输出结果

           例如:键盘录入abc,输出结果cba

思路:①创建Scanner对象,从键盘获取输入

           ②定义方法,在方法中逆遍历字符串,将字符串进行拼接、

           ③调用方法,输出结果

package Test9;

import java.util.Scanner;

/*
* 需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用方法后,在控制台输出结果
      例如:键盘录入abc,输出结果cba
* */
public class StringDemo9 {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);
        //从键盘录入字符串
        System.out.println("请输入字符串:");
        String s = sc.nextLine();
        //调用方法
        String s1 = turnString(s);
        //输出结果
        System.out.println(s1);
    }
//    定义方法
    public static String turnString(String s){
        //定义空字符串
        String ss = "";
        //倒着遍历字符串
        for(int i=s.length()-1;i>=0;i--){
         ss+=s.charAt(i);
        }
        return ss;
    }
}

2.10帮助文档查看String方法

        方法名说明
public boolean equals(Object an Object)判断字符串内容是否相等
public charAt(int index)返回指定索引处的char值
puublic int length()返回字符串的长度

3.StringBuilder

3.1 StringBuilder描述 

如果对字符串进行拼接,每次拼接都会产生一个新的String对象,既耗时又耗空间。所以有了StringBuilder类来解决这个问题。

StringBuilder是一个可变的字符串类,我们可以把它当做一个容器,这里的可变指的是StringBuiler对象的内容是可变的。

String和StringBuilder的区别:

String:内容不可变

StringBuilder:内容可变   

3.2StringBuilder的构造方法

构造方法作用
StringBuilder()构造空白的可变字符串对象,不含有任何内容
StringBuilder(String str)根据字符串内容,创建可变字符串对象

 

package test1;

public class StringBuilderDemo1 {
    public static void main(String[] args) {
        //    创建空白的可变字符串对象
        StringBuilder sb =  new StringBuilder();
        System.out.println("sb:"+sb);
        System.out.println("sb.length():"+sb.length());
        //创建带字符的可变字符串对象
        StringBuilder sb2 = new StringBuilder("HelloWorld");
        System.out.println("sb:"+sb2);
        System.out.println("sb.length():"+sb2.length());
    }



}

3.3StringBuilder添加和反转

方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()返回相反的字符序列
package test2;

public class StringBuilderDemo2 {
    public static void main(String[] args) {
        //创建一个空的可变字符串对象
        StringBuilder sb = new StringBuilder();
        //使用append方法添加内容

        //链式编程
        sb.append("我爱你").append("一万年").append(100000).append("年");
        System.out.println("sb:"+sb);

        //使用reverse反转字符串
        sb.reverse();
        System.out.println("sb:"+sb);

    }
}

3.4 String与StringBuilder相互转换

①StringBuilder转化为String

public String toString():通过toString()可以实现把StringBuilder转化为String

②String转化为StringBuilder

public StringBuilder(String s):通过构造方法就可以实现String转化为StringBuilder

package test3;
/*
①StringBuilder转化为String

public String toString():通过toString()可以实现把StringBuilder转化为String

②String转化为StringBuilder

public StringBuilder(String s):通过构造方法就可以实现String转化为StringBuilder
* */
public class StringBuilderDemo3 {
    public static void main(String[] args) {
       /* //        StringBuilder转化为String
        StringBuilder sb = new StringBuilder();
        sb.append("hello");
//public String toString():通过toString()可以实现把StringBuilder转化为String
       // String s = sb;这个是错误的
        String s = sb.toString();
        System.out.println(s);*/

        //String转化为StringBuilder
        String s = "World";
       // StringBuilder sb =s;这个是错误的
        //public StringBuilder(String s):通过构造方法就可以实现String转化为StringBuilder
        StringBuilder sb = new StringBuilder(s);
        System.out.println(sb);
    }

}

3.5案例:字符串拼接升级版   

需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如int[] arr={1,2,3},执行方法后的输出结果为[1,2,3]                                            思路:①定义int类型的数组,并进行初始化

           ②定义方法,在方法体中创建StringBuilder对象,遍历字符串,使用append方法进行字符               串拼接。

           ③通过toString()方法将StringBuilder转化为String对象,并返回String类型的返回值

           ④调用方法,输出结果

package test4;
/*
需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。
        例如int[] arr={1,2,3},执行方法后的输出结果为[1,2,3]
*/
public class StringBuilderDemo4 {
    public static void main(String[] args) {
        //定义数组
        int[] arr ={1,2,3};
        //调用方法
        String s1 = arrayReturn(arr);
        System.out.println(s1);

    }
    //定义方法
    public static String arrayReturn(int[] arr){
        //创建StringBuilder对象
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i=0;i<arr.length;i++){
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]);
                sb.append(",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

3.6案例:字符串反转升级版                                                                   

需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用方法后,在控制台输出结果

           例如:键盘录入abc,输出结果cba

思路:①创建Scanner对象,从键盘获取输入

           ②定义方法,在方法体中将String对象转换为StringBuilder对象,使用StringBuilder的                     reverse()方法,将字符串进行反转,再将StringBuilder转化为String对象

           ③调用方法,输出结果

package test5;

import java.util.Scanner;

/*
* 需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用方法后,在控制台输出结果

  例如:键盘录入abc,输出结果cba
* */
public class StringBuilderDemo5 {
    public static void main(String[] args) {
        //创建Scanner对象,从键盘获取输入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = sc.nextLine();
        //调用方法
        String s2 =reverseString(s);
        System.out.println(s2);
    }
    //定义方法
    public static String reverseString(String s){
        //将String对象转换成StringBuilder对象
        StringBuilder sb = new StringBuilder(s);
        String s1=sb.reverse().toString();
        return s1;
    }
}

3.7帮助文档查看StringBuilder方法

方法名说明
public StringBuilder append(任意类型)添加数据,返回对象本身
public StringBuilder reverse()返回相反字符序列
public String toString()通过toString()实现把StringBuilder转换为String

                                      

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值