首页 > 其他分享 >规约学习

规约学习

时间:2024-06-01 11:34:18浏览次数:27  
标签:Object return 规约 Double valueOf 学习 flag Integer

1. Set<Long> values = ...

 if(values.contains(42)) 会出现问题

 

即使我们明确地声明希望在两种不同的情况下分别获得Double和Integer的0值,结果却始终返回的是Double类型的0值。这是因为根据JLS#15.25,不同的数值类型间的运算首先会经过双目类型提升(Binary Numeric Promotion)将不同类型的数值转化为同一类型后再进行计算。因此上述的运算实际上与下面的运算是等同的:

Object getZeroOnCondition(boolean flag) {
    return Double.valueOf(
            flag ?
                    Double.valueOf(0).doubleValue() :
                    (double) Integer.valueOf(0).intValue());
}

如果想要在两种不同的情况下获得不同类型的0值,可以直接显式地将数值类型转换为非数值类型,或者使用分支语句。

正例

// 显式地将数值类型转换为非数值类型
Object getZeroOnConditionWithCast(boolean flag) {
    return flag ?
            (Object) Double.valueOf(0) :
            (Object) Integer.valueOf(0);
}

// 或者使用分支语句
Object getZeroOnConditionWithBranch(boolean flag) {
    if (flag) {
        return Double.valueOf(0);
    } else {
        return Integer.valueOf(0);
    }
}

反例

Object getZeroOnCondition(boolean flag) {
    return flag ?
            Double.valueOf(0) :
            Integer.valueOf(0);
}

 

标签:Object,return,规约,Double,valueOf,学习,flag,Integer
From: https://www.cnblogs.com/zzlback/p/18225661

相关文章

  • 【计算机毕业设计】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模
    谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米','小米','燕麦','玉米渣','红豆','绿豆','花生仁','荞麦','黄豆','黑米','黑豆')进行训练......
  • hook的几种方式及原理学习
    原文概述对于大型的工程项目,依赖许多人的配合,包含大量不同的代码库与服务,有的我们能够访问程序的源代码,有的可以访问程序的可重定位文件,有的可以访问到可执行文件及其环境,假如我们想在在不同的层面改变或者添加一些逻辑,操作系统、编译器以及程序语言、代码库等都提供了一些机制......
  • 构建无与伦比的深度学习环境:在CentOS上实现GPU资源管理容器的终极指南
    在CentOS上构建无与伦比的深度学习环境并实现GPU资源管理容器的过程,可以概括为以下关键步骤:一、安装NVIDIA驱动首先,为了使用GPU进行深度学习训练,你需要安装NVIDIA驱动。这通常包括以下步骤:导入ELRepo仓库的GPG密钥:bash复制代码rpm--importhttps://www.elrepo.org......
  • 《计算机网络微课堂》实验5 交换机的自学习算法
    本实验的目的在于验证交换机的自学习算法。首先需要构建网络拓普,我们使用三台计算机,然后使用一个交换机把它们连接起来,我们选择自动连线将每个计算机连接到交换机上就可以了,那么交换机的接口是橙色的,我们切换右下角的实时和仿真模式,多切换几遍,直到交换机的接口变为绿色,接下来给各......
  • gRPC入门学习之旅(九)
    gRPC入门学习之旅目录 gRPC入门学习之旅(一)gRPC入门学习之旅(二)gRPC入门学习之旅(三)gRPC入门学习之旅(四)gRPC入门学习之旅(七) 3.10、客户端编译生成GRPC类1.在“解决方案资源管理器”中,使用鼠标左键选中项目名称“Demo.Grpc.Common”,然后单击鼠标右键,在弹出......
  • [机器学习] 低代码机器学习工具PyCaret库使用指北
    PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习库和框架(如scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Ray等)的......
  • PyTorch 的 torch.nn 模块学习
    torch.nn是PyTorch中专门用于构建和训练神经网络的模块。它的整体架构分为几个主要部分,每部分的原理、要点和使用场景如下:1.nn.Module原理和要点:nn.Module是所有神经网络组件的基类。任何神经网络模型都应该继承nn.Module,并实现其forward方法。使用场景:用于定义和......
  • 新手学习STM32还是ESP32
    对于新手来说,选择学习STM32还是ESP32取决于个人的学习目标和背景。以下是针对这两种微控制器的详细分析,以便您做出更明智的选择:STM321.处理器架构与性能STM32采用单核或多核处理器架构,基于ARMCortex®-M0,M0+,M3,M4和M7内核。这些内核具有高性能,优化的指令集和较大的内存,能够......
  • 学习Django【2】把视图和路由连接起来的是URLconfigs的配置文件
    在view.py视图中定义:defdetail(request,question_id):returnHttpResponse("You'relookingatquestion%s."%question_id)defresults(request,question_id):response="You'relookingattheresultsofquestion%s."......
  • 【机器学习算法】回归算法(上)
    本文介绍几种常见的线性回归算法目录线性回归和多元线性回归多项式回归与一般的线性回归鲁棒回归过拟合与正则化Lasso回归Ridge回归线性回归和多元线性回归        线性回归是一种统计学方法,用于建立一个或多个自变量(解释变量)与一个因变量(响应变量)之......