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虚拟机的方法

                        作业

                        相关文章
                        |
                        12天前
                        |
                        监控 安全 Java
                        Java中的多线程编程:从入门到实践####
                        本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
                        |
                        18天前
                        |
                        Java 大数据 API
                        14天Java基础学习——第1天:Java入门和环境搭建
                        本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
                        |
                        24天前
                        |
                        存储 安全 Java
                        🌟Java零基础-反序列化:从入门到精通
                        【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
                        64 5
                        |
                        21天前
                        |
                        安全 Java 调度
                        Java中的多线程编程入门
                        【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
                        32 1
                        |
                        27天前
                        |
                        Java 数据处理 开发者
                        Java多线程编程的艺术:从入门到精通####
                        【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
                        44 3
                        |
                        6月前
                        |
                        Java
                        java面向对象——包+继承+多态(一)-2
                        java面向对象——包+继承+多态(一)
                        44 3
                        |
                        6月前
                        |
                        SQL Java 编译器
                        java面向对象——包+继承+多态(一)-1
                        java面向对象——包+继承+多态(一)
                        39 2
                        |
                        存储 Java C语言
                        Java面向对象进阶5——包和final(含源码阅读)
                        包在操作系统中其实就是一个文件夹。包是用来分门别类的管理技术,不同的技术类放在不同的包下,方便管理和维护
                        102 0
                        Java面向对象进阶5——包和final(含源码阅读)
                        |
                        存储 Java
                        Java SE基础知识详解第[8]期—面向对象进阶(包、权限修饰符、抽象类、接口)
                        Java SE基础知识详解第[8]期—面向对象进阶(包、权限修饰符、抽象类、接口)
                        Java SE基础知识详解第[8]期—面向对象进阶(包、权限修饰符、抽象类、接口)
                        下一篇
                        无影云桌面