虽然这个专栏系列旨在告诉大家如何快速的开发一个Android原生的app,但是工欲善其事,必先利其器。因此,在开始这个专栏系列之前,我想先把平日里容易混淆和遗忘的部分Java基础知识,我们一起复习下。
1、基础数据类型(int、short、float、double等)的包装类型的equals()和==,我们拿Integer做示例:
* Integer a = new Integer(100);
* Integer b = new Integer(100);
* System.out.println(a == b); // false
* System.out.println(a.equals(b)); // true
注意点:在byte的值范围以内,JVM不会重新new对象
* Integer a = 127;// Integer a = new Integer(127);
* Integer b = 127;// Integer b = a;
* System.out.println(a == b); // true
* System.out.println(a.equals(b)); // true
在大于byte的取值范围
* Integer a = 500;
* Integer b = 500;
* System.out.println(a == b); // false
* System.out.println(a.equals(b)); // true
2、超过long取值范围的整数,使用BigInteger类型来表示其数据类型
* // long类型已经不能表示该数了
* // long a = 26486278478278347824728647823648723647823746L;
* BigInteger bigInteger = new BigInteger("26486278478278347824728647823648723647823746");
* System.out.println(bigInteger);
用BigInteger类型来声明的变量的加减乘除运算
* BigInteger b1 = new BigInteger("1647678416487364761894271874687134687");
* BigInteger b2 = new BigInteger("1647678416487364761894271874687134687");
* BigInteger result = b1.add(b2); // 加法
* BigInteger result = b1.subtract(b2); // 减法
* BigInteger result = b1.multiply(b2); // 乘法
* BigInteger result = b1.divide(b2); // 除法
* System.out.println(result);
3、BigDecimal类型,用于做精确计算,因为浮点型的数据类型本身表示是不精确的,凡是涉及到钱的可以使用该类进行计算。
* BigDecimal bi1 = new BigDecimal("0.9");
* BigDecimal bi2 = new BigDecimal("0.1");
* BigDecimal result = bi1.add(bi2); // 加法
* BigDecimal result = bi1.subtract(bi2); // 减法
* BigDecimal result = bi1.multiply(bi2); // 乘法
* BigDecimal result = bi1.divide(bi2); // 除法
* System.out.println(result);
注意点:
BigDecimal的除法运算
* BigDecimal bi1 = new BigDecimal("1.301");
* BigDecimal bi2 = new BigDecimal("101");
* BigDecimal result = bi1.divide(bi2); // 除法
* System.out.println(result);
会报如下错误:
* Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解决办法:
* BigDecimal bi1 = new BigDecimal("1.301");
* BigDecimal bi2 = new BigDecimal("100");
* // BigDecimal.ROUND_UP: 0.01301-->0.014,向上加1
* // BigDecimal.ROUND_DOWN 0.01301-->0.013,直接舍去
* // BigDecimal.ROUND_HALF_UP 0.01301-->0.013,>= 0.5,向上加1
* // BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_HALF_DOWN); // 0.013,直接舍去
* // BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_HALF_UP); // 0.013,>= 0.5,向上加1
* BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_UP); // 0.014,向上加1
* System.out.println(result);
4、Math类常用的方法
abs()求绝对值函数,对各种数据类型求绝对值
* System.out.println(Math.abs(-10)); // 输出10
max(a,b)求最大值
* System.out.println(Math.max(1, 2)); // 输出2
min(a,b)求最小值
* System.out.println(Math.min(1.9, -0.2)); // 输出-0.2
随机数random()返回[0.0,1.0)之间的double值,这个产生的随机数其实可以通过_x控制,比如(int)(random_100)后可以得到[0,100)之间的整数。
* System.out.println((int)(Math.random()*100)); // 输出[0,100)间的随机数
ceil(a) 返回大于a的第一个整数所对应的浮点数(值是整的,类型是浮点型),可以通过强制转换将类型换成整型。
* System.out.println(Math.ceil(1.3443)); // 输出2.0
* System.out.println((int)Math.ceil(1.3443)); // 输出2
floor(a) 返回小于a的第一个整数所对应的浮点数(值是整的,类型是浮点型)
* System.out.println(Math.floor(1.3443)); // 输出1.0
rint(a) 返回最接近a的整数的double值
* System.out.println(Math.rint(1.2)); // 输出1.0
* System.out.println(Math.rint(1.8)); // 输出2.0
5、Object的finalize()方法,让系统回收不再使用的对象,每个对象在被回收时,系统都会调用其finalize()方法。
* public class PresonInfo {
* @Override
* protected void finalize() throws Throwable {
* super.finalize();
* System.out.println("我被系统回收了");
* }
* }
* for (int i = 0; i < 1000000; i++) {
* new PresonInfo(); // new的对象,当没有任何其他对象引用时,它就是垃圾
* }
* System.gc();
6、查看运行环境的信息
* String proStr = System.getProperties().toString();
* System.out.println(proStr);
运行之后的结果如下:
* {java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib, java.vm.version=25.5-b02, gopherProxySet=false, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=:, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=CN, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine Specification, user.dir=/Users/android_ls/Documents/workspace_javaee/Test, java.runtime.version=1.8.0_05-b13, java.awt.graphicsenv=sun.awt.CGraphicsEnvironment, java.endorsed.dirs=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/endorsed, os.arch=x86_64, java.io.tmpdir=/var/folders/4m/3wr7c_xj7336fylxzrljv0qm0000gn/T/, line.separator=
* , java.vm.specification.vendor=Oracle Corporation, os.name=Mac OS X, sun.jnu.encoding=UTF-8,...
这一篇,我们就先复习到这里,希望对你有所帮助,谢谢!
虽然这个专栏系列旨在告诉大家如何快速的开发一个Android原生的app,但是工欲善其事,必先利其器。因此,在开始这个专栏系列之前,我想先把平日里容易混淆和遗忘的部分Java基础知识,我们一起复习下。
1、基础数据类型(int、short、float、double等)的包装类型的equals()和==,我们拿Integer做示例:
* Integer a = new Integer(100);
* Integer b = new Integer(100);
* System.out.println(a == b); // false
* System.out.println(a.equals(b)); // true
注意点:在byte的值范围以内,JVM不会重新new对象
* Integer a = 127;// Integer a = new Integer(127);
* Integer b = 127;// Integer b = a;
* System.out.println(a == b); // true
* System.out.println(a.equals(b)); // true
在大于byte的取值范围
* Integer a = 500;
* Integer b = 500;
* System.out.println(a == b); // false
* System.out.println(a.equals(b)); // true
2、超过long取值范围的整数,使用BigInteger类型来表示其数据类型
* // long类型已经不能表示该数了
* // long a = 26486278478278347824728647823648723647823746L;
* BigInteger bigInteger = new BigInteger("26486278478278347824728647823648723647823746");
* System.out.println(bigInteger);
用BigInteger类型来声明的变量的加减乘除运算
* BigInteger b1 = new BigInteger("1647678416487364761894271874687134687");
* BigInteger b2 = new BigInteger("1647678416487364761894271874687134687");
* BigInteger result = b1.add(b2); // 加法
* BigInteger result = b1.subtract(b2); // 减法
* BigInteger result = b1.multiply(b2); // 乘法
* BigInteger result = b1.divide(b2); // 除法
* System.out.println(result);
3、BigDecimal类型,用于做精确计算,因为浮点型的数据类型本身表示是不精确的,凡是涉及到钱的可以使用该类进行计算。
* BigDecimal bi1 = new BigDecimal("0.9");
* BigDecimal bi2 = new BigDecimal("0.1");
* BigDecimal result = bi1.add(bi2); // 加法
* BigDecimal result = bi1.subtract(bi2); // 减法
* BigDecimal result = bi1.multiply(bi2); // 乘法
* BigDecimal result = bi1.divide(bi2); // 除法
* System.out.println(result);
注意点:
BigDecimal的除法运算
* BigDecimal bi1 = new BigDecimal("1.301");
* BigDecimal bi2 = new BigDecimal("101");
* BigDecimal result = bi1.divide(bi2); // 除法
* System.out.println(result);
会报如下错误:
* Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解决办法:
* BigDecimal bi1 = new BigDecimal("1.301");
* BigDecimal bi2 = new BigDecimal("100");
* // BigDecimal.ROUND_UP: 0.01301-->0.014,向上加1
* // BigDecimal.ROUND_DOWN 0.01301-->0.013,直接舍去
* // BigDecimal.ROUND_HALF_UP 0.01301-->0.013,>= 0.5,向上加1
* // BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_HALF_DOWN); // 0.013,直接舍去
* // BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_HALF_UP); // 0.013,>= 0.5,向上加1
* BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_UP); // 0.014,向上加1
* System.out.println(result);
4、Math类常用的方法
abs()求绝对值函数,对各种数据类型求绝对值
* System.out.println(Math.abs(-10)); // 输出10
max(a,b)求最大值
* System.out.println(Math.max(1, 2)); // 输出2
min(a,b)求最小值
* System.out.println(Math.min(1.9, -0.2)); // 输出-0.2
随机数random()返回[0.0,1.0)之间的double值,这个产生的随机数其实可以通过_x控制,比如(int)(random_100)后可以得到[0,100)之间的整数。
* System.out.println((int)(Math.random()*100)); // 输出[0,100)间的随机数
ceil(a) 返回大于a的第一个整数所对应的浮点数(值是整的,类型是浮点型),可以通过强制转换将类型换成整型。
* System.out.println(Math.ceil(1.3443)); // 输出2.0
* System.out.println((int)Math.ceil(1.3443)); // 输出2
floor(a) 返回小于a的第一个整数所对应的浮点数(值是整的,类型是浮点型)
* System.out.println(Math.floor(1.3443)); // 输出1.0
rint(a) 返回最接近a的整数的double值
* System.out.println(Math.rint(1.2)); // 输出1.0
* System.out.println(Math.rint(1.8)); // 输出2.0
5、Object的finalize()方法,让系统回收不再使用的对象,每个对象在被回收时,系统都会调用其finalize()方法。
* public class PresonInfo {
* @Override
* protected void finalize() throws Throwable {
* super.finalize();
* System.out.println("我被系统回收了");
* }
* }
* for (int i = 0; i < 1000000; i++) {
* new PresonInfo(); // new的对象,当没有任何其他对象引用时,它就是垃圾
* }
* System.gc();
6、查看运行环境的信息
* String proStr = System.getProperties().toString();
* System.out.println(proStr);
运行之后的结果如下:
* {java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib, java.vm.version=25.5-b02, gopherProxySet=false, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=:, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=CN, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine Specification, user.dir=/Users/android_ls/Documents/workspace_javaee/Test, java.runtime.version=1.8.0_05-b13, java.awt.graphicsenv=sun.awt.CGraphicsEnvironment, java.endorsed.dirs=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/endorsed, os.arch=x86_64, java.io.tmpdir=/var/folders/4m/3wr7c_xj7336fylxzrljv0qm0000gn/T/, line.separator=
* , java.vm.specification.vendor=Oracle Corporation, os.name=Mac OS X, sun.jnu.encoding=UTF-8,...
这一篇,我们就先复习到这里,希望对你有所帮助,谢谢!
虽然这个专栏系列旨在告诉大家如何快速的开发一个Android原生的app,但是工欲善其事,必先利其器。因此,在开始这个专栏系列之前,我想先把平日里容易混淆和遗忘的部分Java基础知识,我们一起复习下。
1、基础数据类型(int、short、float、double等)的包装类型的equals()和==,我们拿Integer做示例:
* Integer a = new Integer(100);
* Integer b = new Integer(100);
* System.out.println(a == b); // false
* System.out.println(a.equals(b)); // true
注意点:在byte的值范围以内,JVM不会重新new对象
* Integer a = 127;// Integer a = new Integer(127);
* Integer b = 127;// Integer b = a;
* System.out.println(a == b); // true
* System.out.println(a.equals(b)); // true
在大于byte的取值范围
* Integer a = 500;
* Integer b = 500;
* System.out.println(a == b); // false
* System.out.println(a.equals(b)); // true
2、超过long取值范围的整数,使用BigInteger类型来表示其数据类型
* // long类型已经不能表示该数了
* // long a = 26486278478278347824728647823648723647823746L;
* BigInteger bigInteger = new BigInteger("26486278478278347824728647823648723647823746");
* System.out.println(bigInteger);
用BigInteger类型来声明的变量的加减乘除运算
* BigInteger b1 = new BigInteger("1647678416487364761894271874687134687");
* BigInteger b2 = new BigInteger("1647678416487364761894271874687134687");
* BigInteger result = b1.add(b2); // 加法
* BigInteger result = b1.subtract(b2); // 减法
* BigInteger result = b1.multiply(b2); // 乘法
* BigInteger result = b1.divide(b2); // 除法
* System.out.println(result);
3、BigDecimal类型,用于做精确计算,因为浮点型的数据类型本身表示是不精确的,凡是涉及到钱的可以使用该类进行计算。
* BigDecimal bi1 = new BigDecimal("0.9");
* BigDecimal bi2 = new BigDecimal("0.1");
* BigDecimal result = bi1.add(bi2); // 加法
* BigDecimal result = bi1.subtract(bi2); // 减法
* BigDecimal result = bi1.multiply(bi2); // 乘法
* BigDecimal result = bi1.divide(bi2); // 除法
* System.out.println(result);
注意点:
BigDecimal的除法运算
* BigDecimal bi1 = new BigDecimal("1.301");
* BigDecimal bi2 = new BigDecimal("101");
* BigDecimal result = bi1.divide(bi2); // 除法
* System.out.println(result);
会报如下错误:
* Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解决办法:
* BigDecimal bi1 = new BigDecimal("1.301");
* BigDecimal bi2 = new BigDecimal("100");
* // BigDecimal.ROUND_UP: 0.01301-->0.014,向上加1
* // BigDecimal.ROUND_DOWN 0.01301-->0.013,直接舍去
* // BigDecimal.ROUND_HALF_UP 0.01301-->0.013,>= 0.5,向上加1
* // BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_HALF_DOWN); // 0.013,直接舍去
* // BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_HALF_UP); // 0.013,>= 0.5,向上加1
* BigDecimal result = bi1.divide(bi2, 3, BigDecimal.ROUND_UP); // 0.014,向上加1
* System.out.println(result);
4、Math类常用的方法
abs()求绝对值函数,对各种数据类型求绝对值
* System.out.println(Math.abs(-10)); // 输出10
max(a,b)求最大值
* System.out.println(Math.max(1, 2)); // 输出2
min(a,b)求最小值
* System.out.println(Math.min(1.9, -0.2)); // 输出-0.2
随机数random()返回[0.0,1.0)之间的double值,这个产生的随机数其实可以通过_x控制,比如(int)(random_100)后可以得到[0,100)之间的整数。
* System.out.println((int)(Math.random()*100)); // 输出[0,100)间的随机数
ceil(a) 返回大于a的第一个整数所对应的浮点数(值是整的,类型是浮点型),可以通过强制转换将类型换成整型。
* System.out.println(Math.ceil(1.3443)); // 输出2.0
* System.out.println((int)Math.ceil(1.3443)); // 输出2
floor(a) 返回小于a的第一个整数所对应的浮点数(值是整的,类型是浮点型)
* System.out.println(Math.floor(1.3443)); // 输出1.0
rint(a) 返回最接近a的整数的double值
* System.out.println(Math.rint(1.2)); // 输出1.0
* System.out.println(Math.rint(1.8)); // 输出2.0
5、Object的finalize()方法,让系统回收不再使用的对象,每个对象在被回收时,系统都会调用其finalize()方法。
* public class PresonInfo {
* @Override
* protected void finalize() throws Throwable {
* super.finalize();
* System.out.println("我被系统回收了");
* }
* }
* for (int i = 0; i < 1000000; i++) {
* new PresonInfo(); // new的对象,当没有任何其他对象引用时,它就是垃圾
* }
* System.gc();
6、查看运行环境的信息
* String proStr = System.getProperties().toString();
* System.out.println(proStr);
运行之后的结果如下:
* {java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib, java.vm.version=25.5-b02, gopherProxySet=false, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=:, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=CN, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine Specification, user.dir=/Users/android_ls/Documents/workspace_javaee/Test, java.runtime.version=1.8.0_05-b13, java.awt.graphicsenv=sun.awt.CGraphicsEnvironment, java.endorsed.dirs=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/endorsed, os.arch=x86_64, java.io.tmpdir=/var/folders/4m/3wr7c_xj7336fylxzrljv0qm0000gn/T/, line.separator=
* , java.vm.specification.vendor=Oracle Corporation, os.name=Mac OS X, sun.jnu.encoding=UTF-8,...
这一篇,我们就先复习到这里,希望对你有所帮助,谢谢!
最后
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
全套视频资料:
一、面试合集
二、源码解析合集
三、开源框架合集
欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取↓↓↓