Java复习17

BigDecimal
434 09_BigDecimal的基本使用

用于小数的精确运算

构造方法:

  • BigDecimal(String val)

四则运算:

  • add(BigDecimal b):加法
  • subtract(BigDecimal b):减法
  • mutiply(BigDecimal b):乘法
  • divide(BigDecimal b):除法
package itheima01;
/*
    基本使用
 */

import java.math.BigDecimal;

public class BigDecimalDemo01 {
    public static void main(String[] args) {
        System.out.println(0.1 + 0.2);//0.30000000000000004
        System.out.println(0.1 - 0.2);//-0.1
        System.out.println(0.1 * 0.2);//0.020000000000000004
        System.out.println(0.1 / 0.2);//0.5

        System.out.println("--------------");

        BigDecimal bd1 = new BigDecimal("0.1");
        BigDecimal bd2 = new BigDecimal("0.2");

        System.out.println(bd1.add(bd2));//0.3
        System.out.println(bd1.subtract(bd2));//-0.1
        System.out.println(bd1.multiply(bd2));//0.02
        System.out.println(bd1.divide(bd2));//0.5
    }
}
435 10_BigDecimal中除法的注意事项
package itheima01;
/*
    除法的注意事项:
        public BigDecimal divide(另一个Decimal对象,精确几位,舍入模式)
            RoudingMode.Up:进一法
            RoudingMode.FLOOR:去尾法
            RoundingMode.HALF_UP:四舍五入
 */

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo02 {
    public static void main(String[] args) {
        BigDecimal bd1 = new BigDecimal("10.0");
        BigDecimal bd2 = new BigDecimal("3.0");

//        System.out.println(bd1.divide(bd2));//ArithmeticException
        /*
            参数1:表示参与运算的BigDecimal对象
            参数2:表示小数点后面精确到多少位
            参数3:舍入的模式
         */

//        System.out.println(bd1.divide(bd2, 2, RoundingMode.UP));//3.34
        System.out.println(bd1.divide(bd2, 2, RoundingMode.FLOOR));//3.33
        System.out.println(bd1.divide(bd2, 2, RoundingMode.HALF_UP));//3.33
        System.out.println(bd1.divide(bd2, 2, RoundingMode.HALF_DOWN));//3.33
        System.out.println(bd1.divide(bd2, 2, RoundingMode.HALF_EVEN));//3.33

    }
}
436 11_注解概述和JDK内置注解
  • @override:用来修饰方法,表示该方法是重写父类的方法,如果不是,就会报错

    public class Fu{
        public void show(){
            System.out.println("fu show");
        }
    }
    
    public class Zi extends Fu{
        @Override
        public void show(){
            System.out.println("Zi show");
        }
    }
    
  • 注解(Annotation):也叫元数据,一种代码级别的说明,它是JDK1.5及以后版本引入的一个特性

  • 它可以声明在包、类、字段、方法、局部变量、方法参数等的面前,用来对这些元素进行说明

  • JDK1.5之后的新特性

  • 说明程序的

注解和注释

  • 注解:用来说明程序,给计算机看的
  • 注释:用来对程序进行说明的文字,给程序员看的

@Override

  • 用于指定方法重写父类的方法,只能修饰方法,不能修饰其他程序元素
  • 单独来看,可能丝毫看不出程序中@Override有任何作用,因为它的作用是告诉编译器检查这个方法,保证父类要包含一个被该方法重写的方法
  • 标识方法是重写父类的
@Target(ElementType.METHOD)//表示其只能放在方法上
@Retention(RetentionPolicy.SOURCE)//只在源码中,class文件中是不存在的

@Deprecated

  • 用于表示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器会给出警告
  • Java9为@Deprecated增加了两个属性:
    • since:该String类型的属性指定该API从那个版本被标记为过时
    • forRemoval:该Boolean类型的属性指定该API在将来是否会被删除
  • 表示该方法是过时方法
@Retention(RetentionPolicy.RUNTIME)//将来这个注解信息是在class文件中,并且在运行是Java虚拟机可以得到其信息
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})//表示将来可以放的位置

@SuppressWarnings

  • 指示被该注解修饰的程序元素(以及该程序元素中的所有子元素)取消显示指定的编译器警告
  • 使用注解来关闭编译器警告时,移动要在括号里使用name=value的形式为该注解的成员变量设置值
  • @SuppressWarnings(value=“all”)
  • 用来取消编译器的检查
package itheima02;

import java.util.ArrayList;
import java.util.List;

    @SuppressWarnings(value = "all")
public class Test {
    public static void main(String[] args) {
        Fu f=new Fu();
        f.method();


        List<String> list=new ArrayList();
    }
}

@FunctionalInterface

  • Java8新增的,只能用来修饰接口,表示该接口是一个函数式接口
  • 函数式接口:接口中有且仅有一个抽象方法
  • Lambda表达式的使用前提:接口中有且仅有一个抽象方法
  • 表示该接口是一个函数式接口
package itheima02;

@FunctionalInterface
public interface inter {
    void show();
//    void show2();
}
437 12_元注解
  • 对注解进行注解的注解。也就是写在注解上面的注解

两个常用元注解

  • @Retention

    • 只能用于修饰注解定义,用于指定被修饰的注解可以保留多长时间
    • 包含了一个RetentionPolicy类型的value成员变量,所以使用的@Retention时必须为该value成员变量指定

    @Retention中可使用的值定义在RetentionPolicy中,常用值如下:

    • RetentionPolicy.CLASS:编译器把注解记录在class文件中,当运行Java程序时,JVM不可获取注解信息,这是默认值
    • RetentionPolicy.RUNTIME:编译器把注解记录在class文件中,当运行Java程序时,JVM也可获取注解信息,开发中常用
    • RetentionPolicy.SOURCE:注解中保留在源代码中,编译器直接丢弃这种注解
  • @Target

    • 只能用于修饰注解定义,用于指定被修饰的注解能用于修饰哪些程序单元,包含一个名为value的成员变量

    @Target中可使用的值定义在ElementType中,常用值如下:

    • @Target(Element.TYPE):可以用于接口、类、枚举、注解
    • @Target(Element.FIELD):可以用于属性字段、枚举的常量
    • @Target(Element.METHOD):可以用于方法
    • @Target(Element.PARAMETER):可以用于方法参数
    • @Target(Element.CONSTRUCTOR):可以用于构造函数
    • @Target(Element.LOCAL_VARIABLE):可以用于局部变量
438 13_自定义注解
  • 定义格式:

    元注解

    public @interface 注解名称{

    ​ 属性列表;

    }

    注解的本质:

    public interface MyAnnotation extends Annotation{}

    • 是一个接口,该接口默认继承Annotation接口
    • 既然是接口,那么内部定义的内容就是接口中可以定义的内容

    注解的属性:

    • 属性:接口中的抽象方法
    • 格式:返回值类型 属性名称()[default 默认值]

    注解属性类型可以有以下列出的类型:

    • 基本数据类型
    • String
    • 枚举类型
    • 注解类型
    • Class类型
    • 以上类型的以为数组类型
439 14_注解使用的注意事项

注解的使用和解析

使用注解:

  • 如果注解有多个属性,则可以在注解括号中用“,”号隔开分别给对应的属性赋值
  • 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时可以不进行属性的赋值
  • 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可
  • 数组赋值时,值使用{}包裹。如果数组中只有一个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值