大数据基础之java常用API一(Object类、String类、StringBuilder类)

简介: 大数据基础之java常用API一(Object类、String类、StringBuilder类)

@toc


在这里插入图片描述

1. Object类

1.1 概述

Object类是所有类的父类, 所有的类都直接或者间接继承自Object类.

Object类: 是所有类的基类,或者说公共父类,每个类都直接或者间接的继承自Object,所以该类中有的方法,其他类中都有

1.2 构造方法

public Object() //Object类中只有一个空参构造.
所有类的构造方法中都会默认调用super() 会逐级调用直到调用到Object类为止.

1.3 成员方法:

public String toString(); 将对象转换为字符串时调用,可以打印指定内容,类似于Python中的__str__()
public boolean equals(Object obj); 对比两个对象的大小

注意:在开发中一般使用 == 比较是否为同一地址
会使用equals 比较两个对象是否为同一内容
例如: 在开发中 new Person("小红", 12); 与 new Person("小兰", 15); 不是同一对象
但是.在开发中 new Person("小红", 12); 与 new Person("小红", 12); 是同一对象

2. String类

2.1 概述

String代表字符串类, 即: 由多个字符组成的一串数据. 字符串的本质就是一个字符数组.

2.2 构造方法

 //1.构造方法
//   String name = new String(); // 此处为空字符串
char[] arrChar = {'a', 'b', 'c'};
String str1 = new String(arrChar);
System.out.println(str1);
String name = "jack"; // 字符串定义的语法糖 
System.out.println(name);
  1. toString
  2. equals
  3. equalsIgnoreCase
  4. charAt
  5. toCharArray
public static void main(String[] args) {
   String str1 = "abc";
    char[] arrChar = {'a', 'b', 'c'};
    String str2 = new String(arrChar);
    System.out.println(str1);
    System.out.println(str2);
   
     // equals: 比较两个字符串是否相等
       System.out.println(str1 == str2); // false 两个内容相同的字符串对象,地址不一定相同
       System.out.println(str1.equals(str2)); // true equals 比较的是两个字符串中的内容是否相同,所以Strign中一定重写了equals
   
       // equalsIgnoreCase: 比较两个字符串是否相等,忽略大小写
       String str3 = "aBc";
       System.out.println(str1.equals(str3)); // false
       System.out.println(str1.equalsIgnoreCase(str3)); // true 对比内容的时候忽略大小写
   
       // charAt: 可以获取指定位置的字符
       // 获取元素时,索引值从0开始,左至右依次递增.
       char char1 = str3.charAt(1);
       System.out.println(char1); // B
       // 能不能使用索引[]直接从字符串中取值???
       // System.out.println(str3[1]);
   
       // toCharArray: 将字符串拆解为字符数组
       char[] chars = str2.toCharArray();
       System.out.println("chars = " + Arrays.toString(chars));
   
       //探索: 在Python中常用的一些替换 拆分 等等功能在java存在么??
       String str4 = "hello world and java";
       // 字符串替换
       str4 = str4.replace("java", "bigdata");
       System.out.println(str4);
       // 根据分隔符拆分字符串
       String[] s1 = str4.split(" ");
       System.out.println(Arrays.toString(s1)); // [hello, world, and, bigdata]
       // toUpperCase将字符串准换为大写, toLowerCase 将字符串全部转换为小写
       String s2 = str4.toUpperCase();
       System.out.println(s2);
       
       //面试题: 获取字符串的长度怎么做?
       System.out.println(str4.length());
       // 获取数组的长度,怎么做??
       System.out.println(chars.length);
       // 结论: 获取字符串长度,使用的是length方法, 获取数组长度使用的是length属性
       
   }

2.3 String案例

2.3.1 模拟用户登录

public static void main(String[] args) {
        // 1. 定义两个变量,分别保存账号和密码信息
        String userName = "chad_chang";
        String passWord = "123456";
        // 6. 循环三次,每次获取循环的次数
        // 由于我们是循环指定的次数,所以此时我们选择for循环
        for (int i = 1; i <= 3; i++) {
            // 2. 让用户键入账号密码信息
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入您的账号:");
            String inputUserName = sc.nextLine();
            System.out.println("请输入您的密码:");
            String inputPassWord = sc.nextLine();
            // 3. 比对账号密码是否正确
            // 判断的是地址相同,这里的需求时判断数值是否相同,所以应该选择equals进行相等判断
//            if (userName == inputUserName && passWord == inputPassWord) {
            if (userName.equals(inputUserName) && passWord.equals(inputPassWord)) {
                // 4. 如果正确 提示 欢迎您
                System.out.println("您登录成功了!!!");
                // 如果输入账号密码正确,则跳出循环结束程序
                break;
            } else {
                // 5. 如果不正确 提示剩余次数(3-循环次数)
                System.out.println("输入错误,您还有" + (3 - i) + "次机会");
                if (3 - i == 0) {
                    // 7. 如果剩余循环次数为0 , 则提示您的账号已经被锁定
                    System.out.println("您已经三次输入错误,账号已经被锁定");
                }
            }
        }

    }

2.3.2 统计字符次数

 public static void main(String[] args) {
        // 键盘录入字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入随机的一个字符串:");
        String nextLine = sc.nextLine();
        // 可以更具ascii码的大小判断字符的类型
//        char a = 98;
//        System.out.println(a);
        //创建几个变量分别记录数字,大写字母,小写字母的数量
        int upperCharCount = 0;
        int lowerCharCount = 0;
        int numberCount = 0;
        // 遍历字符串(获取字符串中的每一个字符)
        for (int i = 0; i < nextLine.length(); i++) {
            char c1 = nextLine.charAt(i);
            // 根据数值的范围统计该类型字符出现的次数
            if (c1 >= 'a' && c1 <= 'z') {
                lowerCharCount++;
            } else if (c1 >= 'A' && c1 <= 'Z') {
                upperCharCount++;
            } else if (c1 >= '0' && c1 <= '9') {
                numberCount++;
            }
        }
        System.out.println("大写字母有:" + upperCharCount);
        System.out.println("小写字母有:" + lowerCharCount);
        System.out.println("数字字符有:" + numberCount);
    }

2.3.3 字符串反转

public static void main(String[] args) {
    // 1.获取用户键入的字符串信息
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入随机的一个字符串:");
    String nextLine = sc.nextLine();
    // 快速抽取方法的快捷键:ctrl + alt + m
    reverse(nextLine);
    // 思考:在python中直接使用reverse可以进行字符串反转,在java中有没有类似的方法呢??

}

private static void reverse(String nextLine) {
    //2.创建一个新的字符串用于保存反转后的结果
    String newString = "";
    // 遍历字符串(获取字符串中的每一个字符)
    for (int i = 0; i < nextLine.length(); i++) {
        // 获取每一次遍历得到的字符信息
        char c1 = nextLine.charAt(i);
        newString = c1 +  newString;
    }
    System.out.println(newString);
}

3. StringBuilder类

分析如下代码, 执行效率是高还是低呢?

String s = "hello";
s += "world";    
System.out.println(s);

解释:
如果字符串进行拼接操作, 每次拼接, 都会构建一个新的String对象, 即耗时, 又浪费内存空间. 而这种操作还不可避免,.那有没有一种比较好的方式来解决这个问题呢?
答案是肯定的, 我们可以通过Java提供的StringBuilder类来解决这个问题.

3.1 概述

StringBuilder类在java.lang包下, 无需导包, 可以直接使用.
StringBuilder是一个可变的字符序列, 也叫字符串缓冲区类.
我们可以把它看做一个容器, 这里的可变指的是StringBuilder对象中的内容是可变的
String和StringBuilder之间的区别
String: 内容是不可变的.
StringBuilder: 内容是可变的.

3.2 构造方法

public StringBuilder()
解释: 创建一个空白可变字符串对象, 它不含有任何内容.
public StringBuilder(String str)
解释: 根据字符串的内容, 来创建可变字符串对象.

  1. append
  2. reverse
  3. toString
public class Demo01 {
  public static void main(String[] args) {
      //StringBuilder对象的定义:
      StringBuilder sb1 = new StringBuilder();// 此时为空字符串
      System.out.println(sb1);
     StringBuilder sb2 = new StringBuilder("hello world!!!");
     StringBuilder sb3 = new StringBuilder("hello world!!!");
// 执行打印方法时,自动调用了toString();
// 此时证明StringBuilder类中重写了toString 方法,输出的是StringBuilder中保存的字符串信息
    System.out.println(sb2); // hello world!!!
    String string = sb2.toString();
  
          // append  给sb1添加字符信息
          // append 方法返回值就是当前的StringBuilder对象本身
          sb1.append(123);
          sb1.append("你好");
          // append 可以反复添加数据
          System.out.println(sb1);
          // 可以使用链式编程的方式进行调用
          sb1.append(123).append(456).append(678);
          System.out.println(sb1);
  
          // reverse 反转字符串
          // 在原有数据上进行了反转,产生新的数据
  //        sb2.reverse();
  //        System.out.println(sb2);
  
 // 拓展:
  // StringBuilder 中的equals没有重写, 还是去对比的两个对象的地址值是否相等
  System.out.println(sb2.equals(sb3)); // false
  
   }
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
3天前
|
Java 索引
String字符串常用函数以及示例 JAVA基础
String字符串常用函数以及示例 JAVA基础
|
2天前
|
自然语言处理 Java API
Java 8的Stream API和Optional类:概念与实战应用
【5月更文挑战第17天】Java 8引入了许多重要的新特性,其中Stream API和Optional类是最引人注目的两个。这些特性不仅简化了集合操作,还提供了更好的方式来处理可能为空的情况,从而提高了代码的健壮性和可读性。
25 7
|
2天前
|
存储 安全 Java
Java中的这些String特性可能需要了解下
Java中的String特性你知道哪些?虽然String很常见,通过源码可以看到String的值传递、字符串表和不可变性。本文基于JDK17说明。
9 1
|
3天前
|
设计模式 算法 Java
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
|
4天前
|
Java
Java String 避免空指针的方法
Java String 避免空指针的方法
5 0
|
5天前
|
安全 Java 开发者
Java一分钟之-文件与目录操作:Path与Files类
【5月更文挑战第13天】Java 7 引入`java.nio.file`包,`Path`和`Files`类提供文件和目录操作。`Path`表示路径,不可变。`Files`包含静态方法,支持创建、删除、读写文件和目录。常见问题包括:忽略异常处理、路径解析错误和权限问题。在使用时,注意异常处理、正确格式化路径和考虑权限,以保证代码稳定和安全。结合具体需求,这些方法将使文件操作更高效。
11 2
|
5天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5天前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之怎样可以将大数据计算MaxCompute表的数据可以导出为本地文件
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之可以使用什么方法将MySQL的数据实时同步到MaxCompute
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5天前
|
分布式计算 DataWorks 数据库
DataWorks操作报错合集之DataWorks使用数据集成整库全增量同步oceanbase数据到odps的时候,遇到报错,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
25 0