店铺业务场景分析、BigDecimal是Java提供的一个不变的、任意精度的有符号十进制数对象。它提供了四个构造器,有两个是用BigInteger构造、接口怎么使用的、重载与重写的区别?分别是什么?

简介: 店铺业务场景分析一、协同店铺、竞争店铺极海数据返回给前端数据结构不一样导入的数据结构很有可能和自定义采集得到的数据结构不一样

店铺业务场景分析

一、协同店铺、竞争店铺极海数据返回给前端数据结构不一样

导入的数据结构

很有可能和自定义采集得到的数据结构不一样

导入的数据结构不一定有人去维护,相对固定

而采集的数据范围一般在初期不确定

二、下面两个id是一致的,点位采点要把survey ID带过去,添加接口把survey ID再传回给到后台,然后这个点位就绑定上了店铺

三、审批流

1、老的审批流会报错,删不了、修改不了。(新的没问题)

老数据怎么处理

2、审批流带来的原有方式校验不合理的改造

BigDecimal是Java提供的一个不变的、任意精度的有符号十进制数对象。它提供了四个构造器,有两个是用BigInteger构造


BigDecimal精度和范围比普通的好用的

主要常用的方法是加减乘除和输出、比较

3.1、常用方法
add(BigDecimal)
BigDecimal对象中的值相加,返回BigDecimal对象
subtract(BigDecimal)
BigDecimal对象中的值相减,返回BigDecimal对象
multiply(BigDecimal)
BigDecimal对象中的值相乘,返回BigDecimal对象
divide(BigDecimal)
BigDecimal对象中的值相除,返回BigDecimal对象
toString()
将BigDecimal对象中的值转换成字符串
doubleValue()
将BigDecimal对象中的值转换成双精度数
floatValue()
将BigDecimal对象中的值转换成单精度数
longValue()
将BigDecimal对象中的值转换成长整数
intValue()
将BigDecimal对象中的值转换成整数
int a = bigdemical.compareTo(bigdemical2)
比较,结果a = 1,表示bigdemical大于bigdemical2;0等于;-1小于

BigDecimal是Java提供的一个不变的、任意精度的有符号十进制数对象。它提供了四个构造器,有两个是用BigInteger构造


System.out.println(new BigDecimal(123456789.02).toString());
    System.out.println(new BigDecimal("123456789.02").toString());
    double f = 234.353333000000000000000000;
    BigDecimal b = new BigDecimal(f);
    System.out.println(b);

(String)构造器,则完全可预知的,new BigDecimal(“.1”)如同期望的那样精确的等于.1,因此,(String)构造器是被优先推荐使用的。

重载与重写的区别?分别是什么?

1 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

–》改参数类型,数量

public class Overloading {
    public int test(){
        System.out.println("test1");
        return 1;
    }
    public void test(int a){
        System.out.println("test2");
    }   
    //以下两个参数类型顺序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }   
    public String test(String s,int a){
        System.out.println("test4");
        return "returntest4";
    }   
    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

2 重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写是父类与子类之间多态性的表现形式,重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

子类—》父类

当需要在子类中调用父类的被重写方法时,要使用 super 关键字。

class Animal{
   public void move(){
      System.out.println("动物可以移动");
   }
}
class Dog extends Animal{
   public void move(){
      super.move(); // 应用super类的方法
      System.out.println("狗可以跑和走");
   }
}
public class TestDog{
   public static void main(String args[]){
      Animal b = new Dog(); // Dog 对象
      b.move(); //执行 Dog类的方法
   }
}

总结:

重载和重写都实现了多态

接口怎么使用的,接口有方法体吗?接口与抽象类有什么区别?

1、接口的主体包括抽象方法,默认抽象,可省略abstract,由于接口代表着一个对外行为的集合,所以任何方法在接口内都是public(公开的)。



public interface IUserDao extends IBaseDao{
int batchDel(Listids);
void deleteById(Integer id);
SystemAdmin login(String username);
SetgetPerSetByUserId(Integer id);
public void modifyPassword(User user);

}


一个类实现多个接口—》解决单继承问题(Java是单继承的)

接口怎么使用?

一般为public interface。。。

用一个类实现去实现该接口。

2、接口没有方法体 接口体中只进行方法的声明,不允许提供方法的实现 方法的定义没有方法体,且用分号结尾。现在开发通常接口没有方法体。


扩展:java8的接口新特性(可以有方法体的接口)

interface MyInterface{

String myNewName(String newName);

default String myOldName(){
    return "chao";
}

}


3、接口与抽象类有什么区别?

1 属性:接口没有普通属性,只有静态属性,只能public final static 修饰。

抽象类可以有普通属性或静态属性

2 方法:接口中的方法没有方法体, 默认public abstarct 修饰,不能定义静态方法(static)。

而抽象类可以有普通方法,也可以没有抽象方法,可以定义静态方法(static)

3 构造函数:接口中没有构造函数,抽象类中可以有构造器,但是它不能用于new对象,而是用子类电泳来初始化抽象类操作 (构造方法–》构造函数与类名相同)


构造方法的声明:

修饰符 class_name(类名) (参数列表){

逻辑代码

}


4 初始化块:接口不能包含初始化块,而抽象方法可以


应用:SSM中dao,service,mapper层中用到了接口等等


相关文章
|
4天前
|
Java 程序员
Java 一个 Scanner.nextInt 造成的奇怪问题及分析解决过程
Java 一个 Scanner.nextInt 造成的奇怪问题及分析解决过程
|
1天前
|
存储 Java
|
6天前
|
存储 安全 Java
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
这篇文章是关于Java面试的第二天笔记,涵盖了HashMap与HashTable的区别、ConcurrentHashMap的实现原理、IOC容器的实现方法、字节码的概念和作用、Java类加载器的类型、双亲委派模型、Java异常体系、GC如何判断对象可回收、线程的生命周期及状态,以及sleep、wait、join、yield的区别等十道面试题。
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
|
6天前
|
存储 关系型数据库 MySQL
一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)
这篇文章是关于Java面试中关于数据库性能优化和MySQL特性的五个问题,包括处理慢查询、ACID特性保证、MVCC概念、MySQL主从同步原理以及MyISAM和InnoDB存储引擎的区别。
|
6天前
|
存储 Java 编译器
刷完一千道java笔试题的常见题目分析
这篇文章是关于刷完一千道Java笔试题后的常见题目分析,涵盖了Java基础知识点,如标识符命名规则、抽象类与接口的区别、String类的equals方法、try-catch-finally块的执行逻辑、类与实例方法的区别、this与super关键字的用法、面向对象的基本概念、重写与重载的原则等,并建议结合JVM内存结构图加深理解。
刷完一千道java笔试题的常见题目分析
|
6天前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
14 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
1天前
|
Java
"Java排序大揭秘:Comparable与Comparator,究竟有何神秘区别?掌握它们,告别排序难题!"
【8月更文挑战第19天】Java提供Comparable与Comparator两种排序机制。Comparable位于`java.lang`包,定义了`compareTo()`方法以实现类的自然排序;Comparator位于`java.util`包,通过`compare()`方法提供外部定制排序。实现Comparable固定了排序策略,适用于类自带排序逻辑;使用Comparator则可在不改动类的前提下灵活定义多种排序规则,适合多样化的排序需求。选择合适机制可优化排序效率并增强代码灵活性。
|
3天前
|
算法 安全 Java
深入解析Java多线程:源码级别的分析与实践
深入解析Java多线程:源码级别的分析与实践
|
7天前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
28 7
|
6天前
|
安全 Java 数据库
一天十道Java面试题----第四天(线程池复用的原理------>spring事务的实现方式原理以及隔离级别)
这篇文章是关于Java面试题的笔记,涵盖了线程池复用原理、Spring框架基础、AOP和IOC概念、Bean生命周期和作用域、单例Bean的线程安全性、Spring中使用的设计模式、以及Spring事务的实现方式和隔离级别等知识点。