• 类型的方法,以及关于Stringbuffer和String builder的相关补充


    xxxValue() 方法用于将 Number 对象转换为 xxx 数据类型的值并返回。

    相关的方法有:

    类型方法及描述
    byte

    byteValue() :

    以 byte 形式返回指定的数值。

    abstract double

    doubleValue() :

    以 double 形式返回指定的数值。

    abstract float

    floatValue() :

    以 float 形式返回指定的数值。

    abstract int

    intValue() :

    以 int 形式返回指定的数值。

    abstract long

    longValue() :

    以 long 形式返回指定的数值。

    short

    shortValue() :

    以 short 形式返回指定的数值。

    参数

    以上各函数不接受任何的参数。

    返回值

    转换为 xxx 类型后该对象表示的数值。

    实例

    Test.java 文件

    public class Test{

       public static void main(String args[]){
          Integer x = 5;
          // 返回 byte 原生数据类型
          System.out.println( x.byteValue() );

          // 返回 double 原生数据类型
          System.out.println(x.doubleValue());

          // 返回 long 原生数据类型
          System.out.println( x.longValue() );     
       }
    }

    编译以上程序,输出结果为:

    5
    5.0
    5


    java 在编译 Integer i1 = 127 时,会翻译成 Integer i1 = Integer.valueOf(127)

    JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?

    最简单的回答是,stringbuffer 基本没有适用场景,你应该在所有的情况下选择使用 stringbuiler,除非你真的遇到了一个需要线程安全的场景,如果遇到了,请务必在这里留言通知我。

    然后,补充一点,关于线程安全,即使你真的遇到了这样的场景,很不幸的是,恐怕你仍然有 99.99....99% 的情况下没有必要选择 stringbuffer,因为 stringbuffer 的线程安全,仅仅是保证 jvm 不抛出异常顺利的往下执行而已,它可不保证逻辑正确和调用顺序正确。大多数时候,我们需要的不仅仅是线程安全,而是锁。

    最后,为什么会有 stringbuffer 的存在,如果真的没有价值,为什么 jdk 会提供这个类?答案太简单了,因为最早是没有 stringbuilder 的,sun 的人不知处于何种愚蠢的考虑,决定让 stringbuffer 是线程安全的,然后大约 10 年之后,人们终于意识到这是一个多么愚蠢的决定,意识到在这 10 年之中这个愚蠢的决定为 java 运行速度慢这样的流言贡献了多大的力量,于是,在 jdk1.5 的时候,终于决定提供一个非线程安全的 stringbuffer 实现,并命名为 stringbuilder。顺便,javac 好像大概也是从这个版本开始,把所有用加号连接的 string 运算都隐式的改写成 stringbuilder,也就是说,从 jdk1.5 开始,用加号拼接字符串已经没有任何性能损失了。

    如诸多评论所指出的,我上面说,"用加号拼接字符串已经没有任何性能损失了"并不严谨,严格的说,如果没有循环的情况下,单行用加号拼接字符串是没有性能损失的,java 编译器会隐式的替换成 stringbuilder,但在有循环的情况下,编译器没法做到足够智能的替换,仍然会有不必要的性能损耗,因此,用循环拼接字符串的时候,还是老老实实的用 stringbuilder 吧。

  • 相关阅读:
    C++中的字符串可以这样换行写
    2020年最受欢迎的 10 门编程语言
    10 本最适合初学者和高级程序员的Python书籍
    手把手教你用 Python + Flask 搭建个人博客
    CentOS VS Ubuntu,谁才是更好的 Linux 版本?
    Python丨为什么你学不好设计模式?
    突破C++瓶颈,在此一举!
    从零上手 GDB 调试,看这个教程就够了~
    搞机器学习需要数学基础吗?
    用 Python 读写 Excel 表格,就是这么的简单粗暴且乏味
  • 原文地址:https://www.cnblogs.com/xuyinyin/p/10863052.html
Copyright © 2020-2023  润新知