Java之常用类小结案例讲解

Java常用类

包装类

由于Java语言中的基本类型不是面向对象,并不具备对象的性质,实际使用存在很多不便。Java在java.lang包中提供了八种基本类型对应的包装类,可以方便地将它们转化为对象进行处理,并且可以调用一些方法。Java中基本类型和包装类的对应关系如下表所示:

基本数据类型名称 包装类名称
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

从JDK1.5版本开始,引入了自动装箱和自动拆箱的 概念。装箱指的是将基本类型的值转换成包装类对象,拆包指的是将包装类对象转换成基本类型的值。自动装箱和拆箱在Java中很常见,在赋值或者方法调用时都有可能发生。、

装箱与拆箱基本操作代码如下:

package com.Cuc.demo01;

/**
 * 装箱与拆箱
 * @author ZpF
 */

public class BoxingAndUnBoxing {
    public static void main(String[] args) {
        Integer x=new Integer(10);//手动装箱
        Integer y=11;//自动装箱
        int m=x.intValue();//手动拆箱
        int n=y;//自动拆箱
        System.out.println(m);
        System.out.println(n);
    }
}

自动装箱和拆箱虽然能使代码变的简洁但也存在一些问题,通过以下代码进行说明。

package com.Cuc.demo01;

/**
 * 自动装箱中的一个陷阱
 * @author ZpF
 */

public class BoxingAndUnBoxing {
    public static void main(String[] args) {
        /**
         * Java会缓存-128-127的数值,在范围内会复用这个对象(内存分配是同一个地址)
         */
        Integer i1=10;
        Integer i2=10;
        System.out.println(i1==i2);//true i1和i2都指向内存中同一地址,所以为同一对象
        System.out.println(i1.equals(i2));//true

        /**
         * Java会缓存-128-127的数值,超过这一范围会重新创建一个对象
         */
        Integer i3=210;
        Integer i4=210;
        System.out.println(i3==i4);//false
        System.out.println(i3.equals(i4));//true
    }
}

包装类中的常量

每一种包装类都提供了一些常量,比较典型的常量有如下所示:

名称 说明
MAX_VALUE 最大值
MIN_VALUE 最小值
SIZE 以二进制补码的形式所占的位数
BYTES 以二进制补码形式所占的字节数
TYPE **类型的class对象

每一种不同的包装类提供不同的常量,以上只是举例其中部分进行说明,真正用到时还要具体分析。

包装类的构造方法

Integer类、Double类、Boolean类提供了两种构造方法。

  1. 以基本数据类型的值为入参创建对象。
  2. 以String字符串为入参创建对象。

示例代码如下:

package com.Cuc.demo01;

/**
 * 包装类的构造方法
 */
public class Consructor {
    public static void main(String[] args) {
        Integer i1=new Integer(10);
        Integer i2=new Integer("10");
        Double i3=new Double(20.1);
        Double i4=new Double("20.1");
        Boolean i5=new Boolean(true);
        Boolean i6=new Boolean("false");
    }
}

Character类只提供了一种构造方法,以char字符为创建一个Character类对象。

package com.Cuc.demo01;

/**
 * Character包装类的构造方法
 */
public class Consructor {
    public static void main(String[] args) {
        Character i7=new Character('帅');
    }
}

包装类中的常用方法

每一种包装类都提供了许多常用方法,在具体需要时查阅相关资料选择合适的方法。

Math类

Java中提供了Math类来处理复杂的数学运算,如平方根、对数、三角函数、指数等。Math类中还提供了一些常用的数学常量,如PI、E等。Math类中的方法都被定义为static静态方法,直接使用Math.method格式调用(method代表方法名)。Math类没有构造方法,也就是说Math类不能实例化对象,因为数学本身就是抽象的,没有具体实例化对象。Math类是java.lang基础包中提供的。

枚举

枚举类型在编程语言中很常见,它是在JDK1.5版本引入的特性,是一种特殊的数据类型。枚举类型将一系列含义相同、预先定义好的常量组合起来,其中每个常量都各自有定义好的相同类型的值。

枚举定义

Java中枚举类型的定义格式如下:

public enum [枚举类名]{
[枚举值代码块]
}

因为枚举和Class类一样,都是需要被外部访问的,所以权限修饰符都是public;enum为枚举类型的关键字;枚举类的名称与Class定义相同,一般为首字母大写,因为表示的是常量,所以枚举类型的字段一般为全大写字母。“[枚举代码块]”中定义了每个枚举值的名称和内容。

下面是一个关于颜色枚举的定义的示例:

package com.Cuc.demo01;

/**
 * 枚举值定义
 * @author ZpF
 */
public enum ColorEnum {
    RED,GREEN,YELLOW,BLUE;
}

使用枚举值可以直接通过“枚举类名.枚举值名”的方式来访问。

枚举的常见方法

枚举类型的对象继承java.lang.Enum类。枚举类型中的常见方法如下所示:

方法 功能描述
values() 将枚举类型成员属性按数组形式返回
valueOf() 将普通字符转换为枚举对象
compareTo() 比较两个枚举对象在定义时的前后顺序
ordinal() 获取枚举成员的索引位置

代码示例:

package com.Cuc.demo01;

/**
 * enum使用
 * @author ZpF
 */
public class UseNum {
    public static void main(String[] args) {
        ColorEnum colorArray[]=ColorEnum.values();
        for (int i = 0; i < colorArray.length; i++) {
            System.out.println("依次打印枚举类型成员"+colorArray[i]);

        }
        System.out.println("RED和GREEN的比较结果为:"+ColorEnum.RED.compareTo(ColorEnum.GREEN));
        for (int i = 0; i < colorArray.length; i++) {
            System.out.println("依次获取枚举类型成员索引位置:"+colorArray[i].ordinal());
        }
    }
}

运行结果:

枚举类型中也可以添加自定义的构造方法,但是构造方法必须是私有的,被关键字private修饰。

package com.Cuc.demo01;

/**
 * 枚举值定义
 * @author ZpF
 */
public enum ColorEnum {
    RED("红色"),GREEN("绿色"),YELLOW("黄色"),BLUE("蓝色");
    public String color;

    private  ColorEnum() {
    }

    private  ColorEnum(String color) {
        this.color = color;
    }
}
package com.Cuc.demo01;

/**
 * enum使用
 * @author ZpF
 */
public class UseNum {
    public static void main(String[] args) {
        ColorEnum colorArray[]=ColorEnum.values();
        for (int i = 0; i < colorArray.length; i++) {
            System.out.println("依次打印枚举类型成员:"+colorArray[i].color);

        }

    }
}

运行结果:

到此这篇关于Java之常用类小结案例讲解的文章就介绍到这了,更多相关Java之常用类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java常用类库Apache Commons工具类说明及使用实例详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

  • Java 常用类解析:java异常机制,异常栈,异常处理方式,异常链,异常丢失详解

    1.java标准异常概述 Throwable表示任何可以作为异常被抛出的类,有两个子类Error和Exception.从这两个类的源代码中可以看出,这两个类并没有添加新的方法,Throwable提供了所以方法的实现.Error表示编译时和系统错误.Exception是可以被抛出的异常类.RuntimeException继承自Exception(如NullPointerException),表示运行时异常,JVM会自动抛出. 2.自定义异常类 自定义异常类方法: 通过继承Throwable或Exc

  • Java线程安全的常用类_动力节点Java学院整理

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用.在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的. statck:堆栈类,先进后出 hashtable:就比hashmap多了个线程安全 除了这些之外,其他的集合大都是非线程安全的类和接口. 线程安全的类其方法是同步

  • JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解

    1.UUID类库 UUID 根据时间戳实现自动无重复字符串定义 // 获取UUID public static UUID randomUUID() // 根据字符串获取UUID public static UUID fromString(String name) 应用:对文件进行自动命名处理 import java.util.UUID; class Demo { public static void main(String[] args) { System.out.println(UUID.ra

  • 基于JavaMail的常用类详细介绍

    应用服务器(1) javax.mail.Properties类 JavaMail需要Properties来创建一个session对象.它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机. 用法: 复制代码 代码如下: Properties props = new Properties ();   props.put("mail.smtp.host", "smtp.163.com");//可以换上你的smtp主机名. 复制代码

  • Java常用类String的面试题汇总(java面试题)

    1.比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等.简单来说,基本数据类型都可以使用==.而引用类型使用==比较不了. 2.如何将字符串转化成int? 使用包装类Integer.Integer.valueOf("2");其他基本数据类型都是类似 3.为什么在Java中存储密码要使用char[],而不使用String. 因为St

  • Java开发常用类库之Hutool详解

    简介与安装 简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当: Hutool是项目中"util"包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可

  • Java常用类库StringBuffer,Runtime,日期操作类等类库总结

    1):StringBuffer类: String.StringBuffer.StringBuilder的区别 1.String一旦声明,不可改变,StringBuffer与StringBuilder声明的内容可以改变 2.StringBuffer类中提供的方法都是同步方法,属于安全的线程操作,而StringBuilder类中大的方法都是属于异步方法,属于非线程安全的操作. 2):Runtime类 Runtime类是Java中与运行时环境有关的操作类,利用此类可以取得系统的内存信息,也可以利用此类

  • Java之常用类小结案例讲解

    Java常用类 包装类 由于Java语言中的基本类型不是面向对象,并不具备对象的性质,实际使用存在很多不便.Java在java.lang包中提供了八种基本类型对应的包装类,可以方便地将它们转化为对象进行处理,并且可以调用一些方法.Java中基本类型和包装类的对应关系如下表所示: 基本数据类型名称 包装类名称 byte Byte short Short int Integer long Long float Float double Double char Character boolean Bo

  • Java对文件进行基本操作案例讲解

    File文件类 java.io.File是文件和目录的重要类(JDK6及以前是唯一) 目录也使用File类进行表示 File类与操作系统无关,但会受到操作系统的权限限制 常用方法 createNewFile , delete , exists , getAbsolutePath , getName , getParent , getPath isDirectory , isFile , length , listFiles , mkdir , mkdirs File不涉及到具体的文件内容.只会涉

  • Java之策略模式比较器案例讲解

    Comparable 比较器,内置定义的比较方法,实现比较 较简单 Comparator 策略模式,需要定义不同的策略和比较的对象,实现比较 较复杂 打个比方,狗有foot一种属性我们用Comparable比较器完成比较 猫有height和weight两种属性,我们用Comparator策略模式完成比较 一.Comparable --狗比较 缺点:自定义排序规则,规则定义好之后,再改起来就不方便,还需要重新开发Sort比较类 1.狗对象 package com.longze.guosh.stra

  • Java之String.format()方法案例讲解

    前言:  String.format()作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,这里根据查阅的资料做个学习笔记,整理成如下文章,供后续复习查阅. 一. format()方法的两种重载形式: 1. format(String format, Object ... args) 该方法使用指定的格式字符串和参数返回一个格式化的字符串,格式化后的新字符串使用本地默认的语言环境. 2. format(Local l, String format, Pbject ... args) 其中,

  • Java实现线程通信的案例讲解

    什么是线程通信.如何实现? 所谓线程通信就是线程间相互发送数据,线程通信通常通过共享一个数据的方式实现. 线程间会根据共享数据的情况决定自己该怎么做,以及通知其他线程怎么做. 线程通信常见模型 生产者与消费者模型:生产者线程负责生产数据,消费者线程负责消费数据. 要求:生产者线程生产完数据后,唤醒消费者,然后等待自己;消费者消费完该数据后,唤醒生产者,然后等待自己 public class 多线程_5线程通信 extends Thread{ public static void main(Str

  • Java之SpringCloudAlibaba Sentinel组件案例讲解

    Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. 官网:https://github.com/alibaba/Sentinel 中文官网:https://github.com/alibaba/Sentinel/wiki Sentinel与Hystrix的区别 由于Hystrix不再积极的开发,进入维护阶段,现在越来越多的开发者在项目中使用Spring Cloud Al

  • Java之单链表问题解决案例讲解

    单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. 链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据. 问题 问题1:给定一个单链表,判断链表中是否有环 问题2:给定一个链表,返回链表开始入环的第一个节点,如果无环,则返回null class Node{ public int data; Node next; public Node(int da

  • 带你了解Java常用类小结

    目录 Java常用类 包装类 包装类中的常量 包装类的构造方法 包装类中的常用方法 Math类 枚举 枚举定义 枚举的常见方法 总结 Java常用类 包装类 由于Java语言中的基本类型不是面向对象,并不具备对象的性质,实际使用存在很多不便.Java在java.lang包中提供了八种基本类型对应的包装类,可以方便地将它们转化为对象进行处理,并且可以调用一些方法.Java中基本类型和包装类的对应关系如下表所示: 基本数据类型名称 包装类名称 byte Byte short Short int In

  • Vue中router-link常用属性使用案例讲解

    目录 Vue中router-link常用属性使用 router-link属性 vue中的router-link属性详解 router-link标签 router-link属性值详解 Vue中router-link常用属性使用 在vue1.0版本的超链接标签还是原来的a标签,链接地址由v-link属性控制而vue2.0版本里超链接标签由a标签被替换成了router-link标签,但最终在页面还是会被渲染成a标签的至于为什么要把a换成router-link原因还是有的,比如我们之前一直惯用的nav导

  • Java中Object类常用的12个方法(小结)

    目录 前言 1. getClass 方法 2. hashCode 方法 3. equals 方法 4. clone 方法 5. toString 方法 6. notify 方法 7. notifyAll 方法 8. wait(long timeout) 方法 9. wait(long timeout, int nanos) 方法 10. wait 方法 11. finalize 方法 前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的"老祖宗&qu

随机推荐