2015年12月

Java 8 默认方法(Default Methods)

Posted by Ebn Zhang on December 20, 2015

Java 8 引入了新的语言特性——默认方法(Default Methods)。

Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces.

默认方法允许您添加新的功能到现有库的接口中,并能确保与采用旧版本接口编写的代码的二进制兼容性。

默认方法是在接口中的方法签名前加上了 default 关键字的实现方法。

- 阅读剩余部分 -

使用BigDecimal divide不整除异常问题

通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的

异 常 :Java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
应用场景:1/3=0.3333333333....
解决之道:就是给divide设置精确的小数点divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN)

原 型:BigDecimal divide (BigDecimal divisor, int scale, int roundingMode)
返回一个 BigDecimal ,其值为 (this / divisor) ,其标度为指定标度。

java float加减运算精度丢失问题

计算货币的时候,使用double和float计算含有小数时,出现的结果不准确。google了一把网上的文档说明。

float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类可以解决上述问题,java的设计者给编程人员提供了一个很有用的类BigDecimal,他可以完善float和double类无法进行精确计算的缺憾

- 阅读剩余部分 -

DialogFragment简单使用

简介

DialogFragment在Android系统版本3.0(API 11)引入,拥有Framgment健全的生命周期,不但可以像Fragment一样自定义布局,还可以使用Dialog来创建具体的弹出。官方建议在使用弹出框(Dialog),首选用DialogFragment。

使用

创建Dialog实现的对话框,此时DialogFragment更像是一个容器。

public class FireMissilesDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage(R.string.dialog_fire_missiles)
               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // FIRE ZE MISSILES!
                   }
               })
               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                   }
               });
        // Create the AlertDialog object and return it
        return builder.create();
    }
}

- 阅读剩余部分 -