1、传统的数据传递方式 - Bundle 传递数据 1、Navigation 组件中的 Bundle 数据传递 之前的 默认 Navigation 跳转方法 , 只需要传入 navigation 资源...方法 , 传入对应的 Navigation 导航资源 和 要传递的 Bundle 参数 ; // 按照 action_fragmentA_to_fragmentB 对应的 action 的导航路线走...FragmentB 的参数为 name = Tom , age = 18 2、使用 Bundle 传递数据安全性差 使用 传统的方式 , 在 Fragment 之间 传递 数据 , 类型很不安全 ,...设置 传递的数据时 , 需要设置 放入的 数据类型 , 如下代码所示 : // 正常方式传递参数 var args: Bundle = Bundle().apply { // 设置 Bundle...会出现错误 ; 下面的代码中 , 调用 getInt(“Name”) 也不会报错 ; 上面的 使用 Bundle 在 Fragment 之间传递 参数 , 没有类型检查 , 即使写错了数据类型 也不会报错
BigDecimal subtract(BigDecimal val):返回两数之差。 BigDecimal multiply(BigDecimal val):返回两数之积。...public class Demo03BigDecimal { public static void main(String[] args) { BigDecimal b1 =...Date(long time):获取指定时间,传递毫秒值。...参数需要传递 Temporal 的实现类对象, 注意要传递LocalDateTime,因为Duration计算精确时间偏差,所以需要传递能操作精确时间的 LocalDateTime private...(包装类) 包装类是基本数据类型对应的类,它们使得基本数据类型具有类的特性。
Java平台类库中包含许多不可变类,如String、基本类型的包装类、BigInteger和BigDecimal等。... */ public static void main(String[] args) { Planet planet = new Planet(...BigDecimal从技术上讲不是不可变的, 因为它没有声明为final. 四、使用场景 不可变类最适合表示抽象数据类型(如数字、枚举类型或颜色)的值。...Java 类库中的基本数据类型的包装类(如Integer 、 Long 和 Float )都是不可变的,其它数字类型(如 BigInteger 和 BigDecimal )也是不可变的。...同样地,在 通信系统的 组件间 进行 消息传递,将消息对象设计成不可变的是明智的。
如果您想回顾过去发布的内容,请参考下面链接查看: 导航组件概览 导航到对话框 这篇文章主要介绍 SafeArgs,它属于导航组件,并且可以在应用不同的目的地 (界面) 之间提供更加便捷的数据传递功能。...导航组件可以通过 Bundles 传递数据,这个机制也可用于 Android 中跨 activity 传递数据。...这里我们也可以使用同样的方式,为要传递的数据创建一个 Bundle,然后在接收侧将数据提取出来。 不过导航组件有更好的方法: SafeArgs。...这里我希望传递的是所需显示的甜甜圈信息,所以数据类型设置为 Long,和数据库里的 id 的数据类型一致。 ?...通过这样的方式,您可以更好地利用数据封装,在目的地之间仅仅传递所需的数据而无需在更大的范围内暴露数据。 请继续关注我们后续的关于导航组件的内容,接下来我们会介绍如何使用 Deep Link。
一、基本类型 1、基本类型 不使用New创建,声明一个非引用传递的变量,且变量的值直接置于堆栈中,大小不随运行环境变化,效率更高。使用new创建的引用对象存储在堆中。...强制转换:把一种数据类型转换为另外一种数据类型。 类型提升:表达式运算中有不同的数据类型,类型会自动向范围大的提升。...2、BigDecimal 支持任意精度的定点数,通常用来进行精确的货币计算,在公司的日常开发中,这里通常是硬性要求。...public class IntType08 { public static void main(String[] args) { BigDecimal dec1 = new BigDecimal...(3.0) ; BigDecimal dec2 = new BigDecimal(2.11) ; // 精确加法运算 BigDecimal res1 =
01、原始类型的 float 第一题是这样的,代码如下 public class FloatPrimitiveTest { public static void main(String[] args...02、包装器类型 Float 再来看第二题,代码如下: public class FloatWrapperTest { public static void main(String[] args...无非是把原始类型的 float 转成了包装器类型 Float,并且使用 equals 替代 == 进行判断。 这一次,我以为包装器会解决掉精度的问题,所以我猜想输出结果为 true。...04、BigDecimal 的赋值方式 来看第四题,代码如下: public class BigDecimalTest { public static void main(String[] args...解释:如果必须将一个 double 作为参数传递给 BigDecimal 的话,建议传递该 double 值匹配的字符串值。
import java.math.BigInteger; public class BigIntegerDemo { public static void main(String[] args...]); System.out.println("余数:" + bis[1]); } } //运行结果 商:2 余数:0 BigInteger类 由于在运算的时候,float类型和...void main(String[] args) { System.out.println(0.09 + 0.01); System.out.println(1.0 -...因此,正在被传递给构造的值不是正好等于0.1,虽然表面上。...{ public static void main(String[] args) { BigDecimal bd1 = new BigDecimal("0.09");
01、原始类型的 float 第一题是这样的,代码如下: public class FloatPrimitiveTest { public static void main(String[] args...02、包装器类型 Float 再来看第二题,代码如下: public class FloatWrapperTest { public static void main(String[] args) {...无非是把原始类型的 float 转成了包装器类型 Float,并且使用equals 替代== 进行判断。 这一次,我以为包装器会解决掉精度的问题,所以我猜想输出结果为true 。...04、BigDecimal 的赋值方式 来看第四题,代码如下: public class BigDecimalTest { public static void main(String[] args)...解释:如果必须将一个 double 作为参数传递给 BigDecimal 的话,建议传递该 double 值匹配的字符串值。
今天碰到一个问题,金额计算用double类型会丢失经度,就改用了BigDecimal类型,这个类型之前用的比较少,没怎么接触。就到网上看了一下相关教程,写个总结记一下。...第四行:基于前面的分析,事实上这一行代码等价于第三行 结论: 1.如果你希望BigDecimal能够精确地表示你希望的数值,那么一定要使用字符串来表示小数,并传递给BigDecimal的构造函数。...JDK的描述:1、参数类型为double的构造方法的结果有一定的不可预知性。...public static void main(String[] args) { BigDecimal bDouble1 = BigDecimal.valueOf(2.3); ...(BigDecimal value); //除法 代码实例 public static void main(String[] args) { BigDecimal
01、原始类型的 float 第一题是这样的,代码如下: public class FloatPrimitiveTest { public static void main(String[] args...02、包装器类型 Float 再来看第二题,代码如下: public class FloatWrapperTest { public static void main(String[] args...无非是把原始类型的 float 转成了包装器类型 Float,并且使用 equals 替代 == 进行判断。 这一次,我以为包装器会解决掉精度的问题,所以我猜想输出结果为 true。...04、BigDecimal 的赋值方式 来看第四题,代码如下: public class BigDecimalTest { public static void main(String[] args...解释:如果必须将一个 double 作为参数传递给 BigDecimal 的话,建议传递该 double 值匹配的字符串值。
这样的说法其实很绕,简单点的说法是基本类型的赋值是不会相互影响的,和对象引用的赋值是完全不同的;对象引用的赋值是会相互影响的。...答案是: 基本数据类型作为参数传递给方法之后,尽管在方法中发生了改变,但跳出方法之后的值并不会发生变化;就像a同学,在传递给testQuality方法前是个穷光蛋,尽管在testQuality方法中变成了千万富翁...对象引用作为参数传递给方法之后,一旦在方法中发生了改变,跳出方法之后的值也会发生变化;就像b同学,在传递给testQuality方法前是个穷光蛋,在testQuality方法中变成了千万富翁,那么跳出testQuality...来看一下解决方案的代码: BigDecimal m1 = BigDecimal.valueOf(6); BigDecimal n1 = BigDecimal.valueOf(6.4); BigDecimal...答案如下: BigDecimal m2 = new BigDecimal(6); BigDecimal n2 = new BigDecimal(6.4); BigDecimal o2 = m2.multiply
计算极值之类的操作都十分简单,下面举个例子,实现了从命令行读取参数,并且自动排序并打印 public class ComparableTest { public static void main(String[] args...){ Set s=new TreeSet(); Collections.addAll(s,args); System.out.println...1,0,+1 接下来,利用这个数学函数,我们介绍一下实现Comparable接口的一些约定 所有的x,y需满足,sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 传递性...这是因为前者是利用equals,后者是利用compareTo,我们实际来测试一下 public class ComparableTest { public static void main(String[] args...接口是参数化的,并且comparable方法是静态的类型,那么我们就不用对参数进行类型转换,如果参数类型不合适的话,甚至无法通过编译 注意到compareTo方法其实是顺序的比较,比较对象的引用域的时候我们可以递归地使用
multiply(BigDecimal multiplicand) 乘 * public BigDecimal divide(BigDecimal divisor) 除 * public BigDecimal...("-------------------"); BigDecimal bd5 = new BigDecimal("1.015"); BigDecimal bd6 = new BigDecimal(...* 这个方法的作用就是把日期转成一个字符串 * * @param d * 被转换的日期对象 * @param format * 传递过来的要被转换的格式...这个方法的作用就是把一个字符串解析成一个日期对象 * * @param s * 被解析的字符串 * @param format * 传递过来的要被转换的格式...日历类中的每个日历字段都是静态的成员变量,并且是int类型。
JAVA支持的实际类型的参数有哪些 类型参数: 类型参数 传递给 类型参数 class Container { Set elements; //E传给E } 具体类:传递具体的类 例:...传递 例: Class , ? 传给T 声明和使用泛型 泛型的声明涉及到指定形式类型参数列表,并在整个实现过程中访问这些类型参数。...Container 中的 E 为无界类型参数,通俗的讲就是什么类型都可以,可以将任何实际的类型参数传递给 E ....指定多个类型限制 当然我们还可以为一个类指定多个类型 使用&分隔 : abstract class Employee { private BigDecimal hourlySalary; private...类似地,可以通过指定 super 后跟类型名来为通配符提供一个下限。这些边界限制了可以作为实际类型参数传递的类型。
mainWin.pack(); mainWin.setVisible(true); } public static void main(String[] args...mainWin.pack(); mainWin.setVisible(true); } public static void main(String[] args...如果希望列表项是更复杂 的组件,例如,希望像 QQ 程序那样每个列表项既有图标,此时需要使用ListCellRenderer接口的实现类对象,自定义每个条目组件的渲染过程: public interface...super E> cellRenderer)方法,把自定义的ListCellRenderer对象传递给JList,就可以按照自定义的规则绘制列表项组件了。...mainWin.pack(); mainWin.setVisible(true); } public static void main(String[] args
相比之前Fragment的管理需要借助FragmentManager和FragmentTransaction,使用Navigation组件有如下一些优点: 可视化的页面导航图,方便我们理清页面之间的关系...通过destination和action完成页面间的导航 方便添加页面切换动画 页面间类型安全的参数传递 通过Navigation UI类,对菜单/底部导航/抽屉蓝菜单导航进行统一的管理 支持深层链接...Fragment的切换经常伴随着参数的传递,为了配合Navigation组件在切换Fragment时传递参数,Android Studio为开发者提供了Safe Args和Bundle两种参数传递方式。...String keyStr = getArguments().getString("key"); 3.2 使用 Safe Args传递数据 首先,在项目的 build.gradle 中添加classpath...[在这里插入图片描述] 参考: Android Jetpack架构组件(四)之LiveData Android Jetpack架构组件(三)之ViewModel Android Jetpack架构组件(
) Navigation 说到Navigation Editor我们就不得不先简单说一下Navigation(导航) 什么是Navigation 在Android开发当中,导航是指允许用户再应用内进入和退出不同内容的交互组件...而我们通过 Android Jetpack的导航组件可以帮助我们实现导航功能。导航组件还能可能遵循既定的原则来保证用户有一个良好的用户体检。...导航组件的构成 导航组件由三个关键的部分组成: Navigation graph(导航图): 这是一个包含所有位置导航相关信息的XML资源文件。...导航组件有很多的好处: 可以处理fragment的事务。 默认情况下可以正确的处理好各个事物之间前后的操作。 可以供标准化的过渡动画资源。 实现和处理深度链接。...涵盖了一些导航UI模式,比如只需要很少的额外工作就能实现抽屉导航和底部导航。 Safe Args - 一种Gradle插件,可在目的地之间导航和传递数据时提供安全的数据类型。
有三个会话,在前两个会话中,来自两个流的连接元素被传递给JoinFunction。在第三个会话中,绿色流中没有元素,所以⑧和⑨没有连接!...3、apply方法中实现将两个不同类型的元素关联并生成一个新类型的元素。...java.util.concurrent.TimeUnit; /** * Author lanson * Desc */ public class JoinDemo01 { public static void main(String[] args...java.util.concurrent.TimeUnit; /** * Author lanson * Desc */ public class JoinDemo02 { public static void main(String[] args...2.Window Join又可以根据Window的类型细分出3种: Tumbling 、Sliding 、Session Widnow Join。
创建方式:BigDecimal bd=new BigDecimal(“1.0”)。...常用方法:方法名 描述BigDecimal add(BigDecimal bd) 加 BigDecimal subtract(BigDecimal...bd)减 BigDecimal multiply(BigDecimal bd)乘 BigDecimal divide(BigDecimal bd) 除 除法:divide(BigDecimal...示例: 七、对象内存分析 按值传递按址传递class Person{ int age; String name; public Person(String name,int age){...void test2(Person person){ person.setName("wowo"); } public static void main(String[] args
为此,Jetpack提供了Navigation组件,方便我们管理页面和AppBar。...页面间类型安全的参数传递。 支持深层链接DeepLink。 通过NavigationUI类,对菜单、底部导航、抽屉菜单导航进行统一的管理。 主要元素 Navigation Graph。...插件传递参数 使用Safe Args Gradle插件,该插件可以生成简单的对象和构造器类,支持在destination之间进行类型安全的导航和参数传递。...使用Toolbar时,Navigation组件会自动处理导航按钮的点击事件,因此无需覆盖onSupportNavigateUp()。...它支持两种不同类型的深层链接:显式深层链接和隐式深层链接。
领取专属 10元无门槛券
手把手带您无忧上云