Java 基础入门 | 第十章 Java 常用类库之lang包

简介: 本章主要内容java.lang包介绍以及包下类的使用重点的类:Object/String/StringBuffer/StringBuilder/包装类了解的类System/Mathjava.util包介绍以及包下类的使用重点的类Date/Calendar/GregorianCalendar了解的类

本章主要内容

java.lang包介绍以及包下类的使用

重点的类:

Object/String/StringBuffer/StringBuilder/包装类

了解的类

System/Math

java.util包介绍以及包下类的使用

重点的类

Date/Calendar/GregorianCalendar

了解的类

Scanner/Random

java.text包介绍以及包下类的使用

SimpleDateFormat/NumberFormat

 

java.lang包

java.lang包下放置了Java开发中常用的类和接口,所以为简化该包下类的使用,java.lang包下的类在使用时不需要导入这些类

java.lang包下常用类有:

    • Object
    • String
    • StringBuffer和StringBuilder
    • 八种基本数据类型的包装类
    • Thread等等

    Object类

    java.lang.Object类是类层次结构中最顶层父类(基类,超类)。所有的类(包括数组)直接或者间接的继承自Object类,同时也继承了该类中的方法

    代码示例

    public class ClassA {
        public void test(){
            System.out.println("ClassA method_test");
        }
    }

    image.gif

    public class ClassB extends ClassA{
        public static void main(String[] args) {
            Object objectA=new ClassA();
            Object objectB=new ClassB();
            //所有对象的父类,所有对象的引用都可以赋值给Object类型的引用变量,包括数组
            Object objectC=new int[2];
        }
    }

    image.gif

    Object的构造方法

    Object类只有一个无参的构造方法

    Object()

    Object中常用的方法

      • boolean equals(Object o) 比较两个对象是否相同
      • int hashCode() 返回一个对象的哈希码
      • String toString() 将一个对象转换为字符串
      public class TestObject {
          public static void main(String[] args) {
              //通过无参构造器创建一个Object类型的对象
              Object o1=new Object();
              System.out.println("o1.hashCode()="+o1.hashCode());
              System.out.println("o1.toString()="+o1.toString());
          }
      }

      image.gif

      boolean equals(Object o)详解

        • Object类的equals方法用于判断两个对象是否相等
        • Object类的equals方法的返回值为boolean的true和false
        • Object类的equals方法只有一种情况返回true:两个非空的引用变量o1和o2指向的是同一个对象时
        • 代码示例
        public class TestEquals {
            public static void main(String[] args) {
                Object O1=new Object();
                Object O2=new Object();
                Object O3=O2;
                System.out.println("O1.equals(O2)="+O1.equals(O2));
                System.out.println("O1.equals(O3)="+O1.equals(O3));
                System.out.println("O2.equals(O3)="+O2.equals(O3));
            }
        }

        image.gif

        equals方法和==的区别

          • ==可以用于比较基本数据类型的值
          • ==可以用于比较两个对象是否相等
          • equals只能比较两个对象是否相等

          String类

          String类代表字符串,提供了开发中常用的字符串处理的方法,如:求字符串的长度、截取字符串、替换字符串等方法

          字符串是常量,它的值创建之后就不可以再修改了。

          String类常用构造方法

            • String() 无参构造方法
            • String(String str) 有一个字符串参数的构造方法
            • String(char[]ch) 有一个char类型数组参数的构造方法
            • String(byte[] b) 有一个byte数组参数的构造方法

            声明和创建字符串对象的方式

            代码示例

            public class TestString {
                public static void main(String[] args) {
                    String s1="hello,我是洛阳泰山";
                    String s2=new String();
                    String s3="";
                    char[] ch=new char[]{'h','e','l','l','0'};
                    String s4=new String(ch);
                    byte[] bts=new byte[]{12,-120};
                    String s5=new String(bts);
                }
            }

            image.gif

            String类常用方法

              • int length() 求字符串值的字符个数
              • boolean equals(Object o) 比较两个字符串是否相同
              • String replace(char old,char n) 字符串替换
              • char charAt(int index) 返回指定字符串指定位置的字符
              • int compareTo(String s) 按字典顺序比较字符串大小
              • boolean endsWith(String s) 比较字符串是否以指定的参数结尾
              • boolean startsWith(String s)比较字符串是否以指定的参数开头
              • String valueOf(int i)将基本数据类型转换为字符串

              String类常用方法

                • boolean isEmpty() 判别一个字符串值的长度是不是为0
                • int indexOf(int ch) 返回指定字符ch在字符串中的索引
                • int lastIndexOf(int ch)返回指定字符ch在字符串中最后出现的索引
                • String substring(int begin)从指定索引位置截取字符串

                StringBuffer和StringBuilder类

                StringBuffer和StringBuilder都是带有缓冲区的可变字符串

                为什么要使用StringBuffer或者StringBuilder

                一个String对象的长度是固定的,不能改变它的内容,也不能附加新的字符至String对象中。可以使用加号“+”运算符来连接字符串以达到附加新字符或字符串的目的,但使用加号“+”运算符会产生一个新的String实例,即需要另外分配空间。如果既想节省开销,又能改变字符串的内容,则可以使用StringBuilder类。

                StringBuffer类的构造方法

                StringBuffer()

                StringBuffer(String s)

                StringBuffer的常用方法

                StringBuffer append(int i)在可变字符串末尾追加I

                StringBuffer insert(int offset,String s)在可变字符串指定位置插入另外一个字符串s

                int length() 返回可变字符串中字符的个数

                String toString() 将可变字符串转化为字符串对象

                字符串总结

                String类、StringBuffer和StringBuilder之间的区别

                  • String字符串是常量,一旦创建无法修改
                  • StringBuffer和StringBuilder是可变字符串,创建之后仍可以修改
                  • StringBuffer是线程安全的、StringBuilder线程不安全

                  包装类

                  java.lang包下为8种基本数据类型提供对应的包装类

                  8中基本数据类型以及对应的包装类

                  基本类型 包装类
                  byte Byte
                  short Short
                  int Interger
                  long Long
                  float Float
                  double Double
                  boolean Boolean
                  char Character

                   

                   

                  包装类提供了字符串、基本数据类型和包装类相互转化的方法

                  image.gif编辑

                  数字基本数据类型的包装类都继承了Number类,它们的使用方式相似,下面以常用的基本数据类型int对应的包装类Integer为例说明数字类型包装类的使用。

                  基本数据类型 int值转化为Integer类型对象

                  int i = 20;
                   Integer integer1 = new Integer(i);//方法一
                   Integer integer2 = Integer.valueOf(i);//方法二

                  image.gif

                  Integer对象转化为基本数据类型int值

                  Integer integer = new Integer(20);
                   int i1 = integer.intValue();

                  image.gif

                  String类型的数字转化为Integer对象

                  String s = “120”;
                  Integer integer1 = new Integer(s);//方法一
                  Integer integer2 = Integer.valueOf(s);//方法二

                  image.gif

                  Integer类型转化为String类型

                  Integer integer = new Integer(20);
                  String s1 = integer.toString();

                  image.gif

                  String类型的数字转化为基本数据类型的int值

                  String s = “120”;
                   int i1 = Integer.parseInt(s);//方法一
                   Integer integer = new Integer(s);
                   int i2 = integer.intValue();//方法二

                  image.gif

                  基本数据类型int转化为字符串

                  int i1 = 20;
                   String str = String.valueOf(i1);//方法一
                   str = Integer.toString(i2);//方法二

                  image.gif

                  Integer的equals方法

                  Integer的equals方法继承自Object,并且进行了重写

                  Integer的equals方法只有一种情况返回true:两个Integer类型的对象 i1 和 i2包含的值相等时;其他情况返回false

                  如:

                  Integer i1 = new Integer(20);
                  Integer i2 = new Integer(30);
                  Integer i3 = new Integer(20);
                  boolean  b = i1.equals(i2);//false
                  b = i1.equals(i3);//true

                  image.gif

                  数字类型包装类总结

                  根据基本数据类型int和对应包装类Integer的知识,总结如下内容

                    • byte/short/long/float/double类型和包装类之间转换的方法
                    • byte/short/long/float/double的包装类和字符串之间的转换方法
                    • byte/short/long/float/double类型和字符串之间的转换方法

                    boolean类型的包装类Boolean

                    Boolean用于将一个基本数据类型boolean值包装为对象

                    将boolean值转换为Boolean对象

                    Boolean b1 = new Boolean(true);//方法一
                    Boolean b2 = Boolean.valueOf(true);//方法二

                    image.gif

                    将Boolean对象转换为boolean值

                    Boolean b =  new Boolean(true);
                     boolean b1 = b.booleanValue();//方法一

                    image.gif

                    String类型对象转换为Boolean对象

                    String s=“true”;
                    Boolean b1 = new Boolean(s);//方法一
                    Boolean b2 = Boolean.valueOf(s);//方法二

                    image.gif

                    将Boolean对象转换为String类型

                    Boolean b = new Boolean(true);
                    String s1 = b.toString();//方法一
                    String s2 = Boolean.toString(b);//方法二
                    String s3 = String.valueOf(b);//方法三

                    image.gif

                    boolean值转换为String对象

                    boolean b = true;
                     String s1 = String.valueOf(b);

                    image.gif

                    String对象转换为boolean值

                    String s = “true”;
                    boolean b1 = Boolean.parseBoolean(s);//方法一
                    Boolean b = new Boolean(s);
                    boolean b2 = b.booleanValue();//方法二

                    image.gif

                    字符包装类Character用于将char类型值包装为对象

                    将char值转换为Character对象

                    Character c1= new Character(‘A’);//方法一
                     Character c2 = Character.valueOf(‘A’);//方法二

                    image.gif

                    将Character对象转换为String

                    Character c1= new Character(‘A’);
                    String str1= c1.toString();

                    image.gif

                    将char转换为String

                    String str2= Character.toString(‘A’);

                    image.gif

                    Character包装类除了提供以上char和Character相互转换的方法外也提供了以下有用的方法

                    方法 描述
                    boolean isLetter(char ch) 判断字符是否是字母
                    boolean isDigit(char ch) 判断字符是否是数字
                    boolean isWhiteSpace(char ch) 判断字符是否是空格
                    boolean isUpperCase(char ch) 判断字符是否是大写
                    boolean isLowerCase(char ch) 判断字符是否是小写
                    char toUpperCase(char ch) 返回字符的大写
                    char toLowerCase(char ch) 返回字符的小写
                    String toString(char ch) 返回字符转字符串

                     

                    包装类总结

                    包装类是将基本数据类型的值包装为Java中的对象,Java语言为8种基本数据类型分别提供了包装类

                    包装类提供了基本数据类型、包装类、字符串之间的相互转换的方法,这些转换的的方法在今后的开发中十分有用。

                    Math类

                    方法 描述

                    double abs(double d)

                    float abs(float f)

                    int abs(int i)

                    long abs(long lng)

                    返回参数的绝对值
                    double ceil(double d) 返回一个大于等于参数的最小整数
                    double floor(double d) 返回一个小于等于参数的最大整数
                    double rint(double d) 返回一个最接近参数的整数(类型为double)

                    long round(double d)

                    int round(double d)

                    返回一个最接近参数的整数(类型为int或long)

                    double min(double arg1,double arg2)

                    float min(float arg1,float arg2)

                    int min(int arg1,int arg2)

                    long min(long arg1,long arg2)

                    返回两个参数的最小值

                    double max(double arg1,double arg2)

                    float max(float arg1,float arg2)

                    int max(int arg1,int arg2)

                    long max(long arg1,long arg2)

                    返回两个数的最大值

                    代码示例

                    public class TestMath {
                        public static void main(String[] args) {
                            Double d=-12.94;
                            System.out.println(Math.abs(d));
                            System.out.println(Math.rint(d));
                            System.out.println(Math.round(d));
                        }
                    }

                    image.gif

                    System类

                    System类代表运行时系统,提供了一些获取设置和获取当前系统运行环境的方法

                    System有三个成员变量

                      • in 标准输入流
                      • out 标准输出流
                      • err 错误输出流

                      System中的方法

                        • System.arrayCope()//快速复制数组的方法
                        • System.exit();//退出Java虚拟机的方法

                        作业

                        相关文章
                        |
                        6月前
                        |
                        存储 Oracle Java
                        java零基础学习者入门课程
                        本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
                        527 0
                        |
                        8月前
                        |
                        安全 Java 数据库连接
                        2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
                        2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
                        1025 3
                        |
                        7月前
                        |
                        Java
                        java入门代码示例
                        本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
                        555 0
                        |
                        7月前
                        |
                        前端开发 Java 数据库连接
                        帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
                        本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
                        1016 3
                        |
                        8月前
                        |
                        NoSQL Java 关系型数据库
                        Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
                        本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
                        892 1
                        |
                        8月前
                        |
                        Java 测试技术 API
                        Java IO流(二):文件操作与NIO入门
                        本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
                        |
                        8月前
                        |
                        Java 编译器 API
                        Java Lambda表达式与函数式编程入门
                        Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
                        |
                        8月前
                        |
                        前端开发 Java 数据库
                        Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
                        本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
                        535 1
                        |
                        7月前
                        |
                        Java API 数据库
                        2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
                        2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
                        2264 0
                        |
                        7月前
                        |
                        监控 Java API
                        2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
                        2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
                        1522 0