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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据基础之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的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
3月前
|
JSON Java API
【干货满满】分享京东API接口到手价,用Java语言实现
本示例使用 Java 调用京东开放平台商品价格及优惠信息 API,通过商品详情和促销接口获取到手价(含优惠券、满减等),包含签名生成、HTTP 请求及响应解析逻辑,适用于比价工具、电商系统集成等场景。
|
1月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
197 5
|
3月前
|
存储 SQL 缓存
Java字符串处理:String、StringBuilder与StringBuffer
本文深入解析Java中String、StringBuilder和StringBuffer的核心区别与使用场景。涵盖字符串不可变性、常量池、intern方法、可变字符串构建器的扩容机制及线程安全实现。通过性能测试对比三者差异,并提供最佳实践与高频面试问题解析,助你掌握Java字符串处理精髓。
|
4月前
|
自然语言处理 Java Apache
在Java中将String字符串转换为算术表达式并计算
具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
285 14
|
3月前
|
JSON Java API
【干货满满】分享拼多多API接口到手价,用Java语言实现
本方案基于 Java 实现调用拼多多开放平台商品详情 API,通过联盟接口获取商品到手价(含拼团折扣与优惠券),包含签名生成、HTTP 请求及响应解析逻辑,适用于电商比价、导购系统集成。
|
3月前
|
JSON Java API
【干货满满】分享淘宝API接口到手价,用Java语言实现
本文介绍了如何使用 Java 调用淘宝开放平台 API 获取商品到手价,涵盖依赖配置、签名生成、HTTP 请求与响应解析等核心实现步骤。
|
4月前
|
JSON JavaScript 前端开发
Python+JAVA+PHP语言,苏宁商品详情API
调用苏宁商品详情API,可通过HTTP/HTTPS发送请求并解析响应数据,支持多种编程语言,如JavaScript、Java、PHP、C#、Ruby等。核心步骤包括构造请求URL、发送GET/POST请求及解析JSON/XML响应。不同语言示例展示了如何获取商品名称与价格等信息,实际使用时请参考苏宁开放平台最新文档以确保兼容性。
|
2月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
131 14
|
3月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
111 0