首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java魔法堂:初探MessageFormat.format和ChoiceFormat

FormatType ,指定使用不同的Format子类对入参进行格式化处理。...模式中的占位符: 0 ,代表该为位为数字,若不存在则用0填充 # ,代表该为位为数字 , ,代表分隔符, 如模式为 #,# ,那么格式化10时会返回1,0    2...ChoiceFormat     相当于以数字为键,字符串为值的键值对。分别使用一组double类型的数组作为键,一组String类型的数组作为值,两数组相同索引值的元素作为一对。    .../* 输出 * hello0 * hello1 * hello0 * hello3 */    注意:当找不到对应的键值对时,则使用第一或最后一对键值对。    ...示例——结合MessageFormat使用 double[] limit = {0, 1}; String[] format = {"Hello0", "Hello1{1}"}; ChoiceFormat

87580

Android P 行为变更

更新 ICU 库 平台使用的 ICU 库已更新至 ICU 58 版本;Android 8.0 (API 版本 26) 和8.1 (API 等级 27) 使用的 ICU 库则更新至 ICU 60 版本...此版本 ICU 包括一系列小而实用的更改项,如 Emoji 5.0 数据支持、日期 / 时间格式优化 (详情可阅读 ICU 59 和 ICU 60 发布说明)。...您可前往 “Android Developers 官方文档” 阅览 “ Legacy 测试库 ” 页面,查看如何在 Android P 中使用测试库。...Android P 中 UTF-8 解码器更为严格,同时遵循 Unicode 标准,即: 非最短形式编码的 UTF-8, 如 0, AF>,现在属于不规范编码; 代理形式编码的 UTF-8,如...*注意:FLAG_ACTIVITY_NEW_TASK 标签的要求属为预期行为,并且从 Android N 就对此作了强制要求。但是 Android N 系统中的错误暂时导致此要求没有被强制执行。

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    dotnet 使用 ToUpperInvariant 替换 ToUpper 以避免初始化 icu 过慢

    在应用软件启动过程中,客户端应用软件是对性能敏感的。比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑。...一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpperInvariant 替换 ToUpper 方法可以避免初始化 icu 模块,减少 icu 模块初始化过慢影响启动性能...,如以下代码 chars[0] = char.ToUpper(chars[0], CultureInfo.InvariantCulture); 以上代码将会导致在启动过程中初始化 ICU 模块,而 ICU...,可以看到基本命令行解析所有时间都用在了 ICU 初始化上,这是不合理的 优化的方法是换成 ToUpperInvariant 从而规避 ICU 的初始化,如以下代码 chars[0] = char.ToUpperInvariant...(chars[0]); 为什么这两个方法的调用会有 ICU 上的差异?

    21110

    libxml2剖析(2):编译

    ICU实现了对数字、日期、货币等设置的国际化支持,提供了强大的BIDI算法,对阿拉伯语和希伯来语等BiDi语言提供了完善的支持。ICU分为ICU4J和ICU4C,分别对应Java和C/C++平台。...这个库是在一种无限制的开放源码许可证下发布的,这使它可以用在各种商业程序、开源程序中。详细可参考官网http://site.icu-project.org/。      ...ICU库比较大,binary就有几十MB以上。一般使用libiconv就足够了,这也是libxml2缺省使用编码转换库。在编译libxml2时缺省是会链接到iconv库的,我们上面选择的是不链接。...使用这个声明可以省掉在DEF文件中手工定义导出哪些函数的工作。...本变量标记这样的特殊情况。Linux, Windows上本变量值为0。     7)@HAVE_WCHAR_T@: 是否使用宽字符处理。若上面使用了宽字符处理,本变量值为1。

    2.1K20

    java 枚举(enum) 全面解读

    Enum类接受一个继承自Enum的泛型.(在反编译java文件中没有体现泛型是因为,泛型在阶段就会被类型类型擦除,替换为具体的实现.)....- other.ordinal; } ordinal: 表示枚举的顺序,从Color类中可以看出,它是从0开始按自然数顺序增长,且其值是final类型,外部无法更改.对于 ordinal()方法...它的实现比其他方式需要更多的内存空间,所以在Android这种受资源约束的设备中尽量避免使用枚举单例,而选择 双重检查锁(DCL)和静态内部类的方式实现单例....你应该严格避免在Android上使用枚举. 导致很多开发者把它当成了教条,禁止在Android上使用枚举....因此,不建议在Android中使用枚举常量,而更偏向于使用 static final来定义常量. 但是,枚举常量中有类型安全检查的功能,使用常规的实现,没有这种功能.

    96610

    Android 新特性_Android10使用

    实际测试中虽然没有Google官方说的那般优秀,但依旧对续航起到了一定的改善作用。Doze休眠机制是当设备处于空闲状态时,通过推迟应用的 CPU 和网络活动以实现省电目的的系统模式。...设备中系统和应用使用的 RAM。...3.4 作用域目录访问 在Android N 中,应用可以使用新的 API 请求访问特定的外部存储目录,包括可移动媒体上的目录,如 SD 卡。...但由于Android N内置了部分ICU4J API,如果Android应用只使用了这部分的API,那今后就可以不再集成庞大的高达10MB左右的ICU4J库了。...开发者可以在Google Play上针对使用Android N的用户提供不含ICU4J的轻量安装包,而针对更早版本系统提供包含ICU4J的完整安装包。 4.

    1.2K20

    Kotlin Vocabulary | 枚举和 R8 编译器

    这方面的问题在 Kotlin 中显得更加有趣,因为 Kotlin 最终会编译为 Java 字节码,但是它却提供了 Java 所没有的功能。那么 Kotlin 是怎么做到的呢?这些功能有没有额外开销?...D8 D8 是整个链条中的第二个编译器,它把 Java 字节码转换为 DEX 代码。到了这一步,您已经有了能够运行在 Android 中的代码。不过,您也可以选择继续使用第三个编译器 —— R8。...使用 Kotlin 时,也仅仅是将其转换为 Java 编程语言中的枚举而已,并没有多大开销。(我们曾经提到避免使用枚举,但那是很多年前的事了,而且运行时也与今日不同。所以现在使用枚举没什么问题。)...} // ... } } 这段代码中没有对枚举直接使用 switch 语句,而是调用了一个数组。...$0[BlendMode.FADE.ordinal()] = 3; $EnumSwitchMapping$0[BlendMode.ADD.ordinal()] = 4; } }

    1K50

    JDK中枚举的底层实现

    前提 上一篇文章复习介绍了JDK中注解的底层实现,跟注解一样比较常用,但是底层实现比较神秘的还有枚举类型。趁着国庆假期的最后两天,把JDK中枚举的底层实现也进行一次探究。...JDK的枚举描述 国际惯例,先看一下JavaSE-8的语言规范中JLS-8.9对枚举类型的定义和描述: ?...枚举类型不能使用abstract或者final修饰,否则会产生编译错误。 枚举类型的直接超类是java.lang.Enum。 枚举类型除了枚举常量定义之外没有其他实例,也就是枚举类型不能实例化。...枚举类型禁用反射操作进行实例化(这个特性就是Effetive Java中推荐使用枚举实现单例的原因)。...小结 JDK中枚举的底层实现就是使用了enum关键字声明的枚举类编译后最终会变成public final修饰同时实现了继承了泛型抽象类java.lang.Enum并且指定泛型参数为自身的普通Java类,

    86920

    深度了解Android 7.0 ,你准备好了吗?

    ● 自定义视图:两个新的 API ,在通知中使用自定义视图时可以充分利用系统装饰元素,如通知标题和操作。...Vulkan是完全从零开始设计,以最小化驱动器中的 CPU 开销,并能让应用更直接地控制 GPU 操作。Vulkan还允许多个线程同时执行工作,如命令缓冲区构建,以获得更好的并行化。...十三、Android 中的 ICU4J API ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。...Android N 在android.icu软件包下显示 Android 框架中的 ICU4J API 子集,供应用开发者使用。...如果已在应用中使用 ICU4J 捆绑包,切换到 Android 框架中提供的android.icu API 可以大量节省 APK 大小。

    2.9K10

    走进 JDK 之 Enum

    说实话,在我这些年的开发生涯中,用过枚举的次数大概两只手都可以数的过来。当然你不能说枚举一无是处,只能说是我对 Java 理解的还不够深刻,在可以使用枚举的时候并没有去使用。...字段 private final String name; // 枚举实例的名称,就是枚举声明中的名称 private final int ordinal; // 在枚举声明中的次序,从 0 开始 枚举类就只有这两个字段...ordinal 就是声明中的次序,之所以在 switch 中可以使用枚举,就是因为编译器会自动调用枚举的 ordinal() 方法。...找遍了 Enum.java 也没有看到这个方法,既然父类中没有这个方法,那么一定是在子类中声明的了。下面我们来验证一下。...站在 Android 开发者的角度,实际上官方是不建议我们使用枚举的。 枚举占用的空间通常是静态常量的两倍。你应该严格避免在 Android 中使用枚举。 其实我并不是完全赞同。

    66930

    深度了解Android 7.0 ,你准备好了吗?

    ● 自定义视图:两个新的 API ,在通知中使用自定义视图时可以充分利用系统装饰元素,如通知标题和操作。 ?...Vulkan是完全从零开始设计,以最小化驱动器中的 CPU 开销,并能让应用更直接地控制 GPU 操作。Vulkan还允许多个线程同时执行工作,如命令缓冲区构建,以获得更好的并行化。...十三 Android 中的 ICU4J API ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。...Android N 在android.icu软件包下显示 Android 框架中的 ICU4J API 子集,供应用开发者使用。...如果已在应用中使用 ICU4J 捆绑包,切换到 Android 框架中提供的android.icu API 可以大量节省 APK 大小。

    1.5K30

    【小家Spring】聊聊Spring中的格式化:Formatter、AnnotationFormatterFactory、DateFormatter以及@DateTimeFormat...

    是一个FormatterRegistrar new DateTimeFormatterRegistrar().registerFormatters(formatterRegistry); // 如没有导入...@Bean,还没有一个很好的用于之地 在基于xml配置中,这么做:我们就可以自定义一个名字为...ChoiceFormat允许将格式化运用到某个范围的数,通常与MessageFormat一同使用。...nextDouble(double d)静态方法查找大于d的最小double值,用在limits数组中,从而使limits数组形成一个右开区间数组,例如:limits = {0,1,ChoiceFormat.nextDouble...数组按照索引0的值,即输出"星期一" } ChoiceFormat类的构造方法也允许我们传入一个模式字符串,format方法会根据这个模式字符串执行格式化操作:doubleNum [占位符]

    3.9K31

    Android组件化专题-路由动态注入跳转参数以及获取其他模块的fragment

    微信公众号:Android研究院 关注可了解更多的Android知识,专注于移动领域,不知代码还有人生的哲学。...最为一名有梦想的码农,我理想中的写法: 在相应的Activity,通过一个注解就可以拿到跳转传递过来的参数的值,然后直接使用。...; } //检查是否配置group如果没有配置 则从path中截取组名 checkRouterGroup(routerMeta)...image.png 到此为止,我们的路由框架实现了以下功能: 支持直接解析标准URL路由地址进行跳转,并自动注入参数到目标页面中 支持多模块工程使用 支持模块间的通信 支持获取其他模块的fragment...Android的组件化专题: 组件化配置 APT实战 路由框架原理 模块间的业务通信

    2K20

    实习入职第五天:参数中的可变参数等小知识点

    Returns: the ordinal value of this enum constant. java.lang.Enum.ordinal()方法返回此枚举常量的序数(其枚举声明中的位置,其中初始常量分配的序数为零...如果没有设置adapter则tempadapter与我们自己的adapter是一样的。   ...我们自定义adapter里面的getitem方法里面返回的position是不包括header的,是我们自定义adapter中数据position编号从0开始,也就是说与我们传进去的list的位置是一样的...> arg0, View arg1, int arg2,long arg3)   arg2是当前click的位置,这个位置是指在tempadapter中的位置,从0开始如果listview中添加了header...也就是说当我们在使用点击事件时,listView列中的位置为arg2-1   一般在开发中,为了达到我们想要的动态添加的效果主要的做法是:在listview.setadapter之前添加所需要的控件

    52120

    7. JDK拍了拍你:字符串拼接一定记得用MessageFormat#format

    在日常开发中,我们经常会有格式化的需求,如日期格式化、数字格式化、钱币格式化等等。...如0-9这是个digit就可以用来表示number,如1024就是由1、0、2、4这四个digit组成的 看了这个表格的符号规则,估计很多同学还是一脸懵逼。...- 0的个数决定整数部分长度,不够高位补0;#则无此约束,N多个#是一样的效果 小数部分: - 可保留小数点后N位(0和#效果一样) - 若小数点后位数不够,若使用的0那就低位补0,若使用#就不补...sourceStrPattern, args); System.out.println(formatedStr); } 运行程序,输出: Hello girl,my name is YourBatman 有没有中似曾相似的感觉...说明:还是那句话,没有绝对的谁好谁坏,如果你的系统对性能不敏感,那就是方便第一 经典使用场景 这个就很多啦,最常见的有:HTML拼接、SQL拼接、异常信息拼接等等。

    2.1K00
    领券