内容简介:不使用New创建,声明一个非引用传递的变量,且变量的值直接置于堆栈中,大小不随运行环境变化,效率更高。使用new创建的引用对象存储在堆中。基本类型包括如下几种:byte、short、int、long、float、double、boolean、char,可以通过相关方法查看范围大小。
一、基本类型
1、基本类型
不使用New创建,声明一个非引用传递的变量,且变量的值直接置于堆栈中,大小不随运行环境变化,效率更高。使用new创建的引用对象存储在堆中。
2、基本信息
基本类型包括如下几种:byte、short、int、long、float、double、boolean、char,可以通过相关方法查看范围大小。
public class IntType01 {
public static void main(String[] args) {
System.out.println("进制位数:"+Integer.SIZE);
System.out.println("最小值:"+Integer.MIN_VALUE);
System.out.println("最大值:"+Integer.MAX_VALUE);
System.out.println("进制位数:"+Double.SIZE);
System.out.println("最小值:"+Double.MIN_VALUE);
System.out.println("最大值:"+Double.MAX_VALUE);
}
}
二、案例用法
1、类型转换
自动转换
:范围小的数据类型可以自动转换成范围大的数据类型。
强制转换
:把一种数据类型转换为另外一种数据类型。
类型提升
:表达式运算中有不同的数据类型,类型会自动向范围大的提升。
public class IntType02 {
public static void main(String[] args) {
// 自动转换
int i = 112 ;
long j = i ;
System.out.println(j);
// 强制转换
double d = 13.14 ;
int f = (int)d;
System.out.println(f);
// 类型提升
long r = i * j ;
System.out.println(r);
}
}
注意:类型转换中最需要关注的问题就是范围大小问题。
2、包装器类型
基本数据类型不符合面向对象思想,从而出现了包装器类型, 并且包装器添加了更多的属性和方法,自动包装功能可以将基本类型转换为包装器类型。Java为每个原始类型都提供了一个封装类,Integer、Double、Long、Boolean、Byte等等。
public class IntType03 {
public static void main(String[] args) {
Integer int1 = null ;
Double dou1 = 13.14 ;
Long lon1 = 123L ;
}
}
Integer变量的默认值为null,说明Integer可以区分出未赋值和值为0的区别,好比考试得0分和没参加考试的区别。
3、字符类型
char类型变量是用来储存Unicode编码的字符的,unicode字符集包含汉字。
public class IntType04 {
public static void main(String[] args) {
char cha1 = '知';
System.out.println(cha1);
}
}
注意
:可能存在特殊生僻字没有包含在unicode编码字符集中。
4、赋值和运算
+= 和 =
的区分: short s1=1;s1=s1+1与short s1=1;s1+=1;
问题。
public class IntType05 {
public static void main(String[] args) {
short s1 = 1 ;
// s1 = s1 + 1 ; // 变异错误:s1自动向int类型转换
s1 += 1 ;
System.out.println(s1);
}
}
+=
运算符是 java 语言规定的,编译器会对它进行识别处理,因此可以正确编译。
5、布尔类型
两个逻辑值: true
和 false
,通常用来表示关系运算的结果。
public class IntType06 {
public static void main(String[] args) {
// 存在精度损失问题:0.30000000000000004
System.out.println(3*0.1);
// true
System.out.println(0.3 == 0.3);
// false
System.out.println(3*0.1 == 0.3);
}
}
三、Float和Dubble
1、基础概念
这两个类型可能大部分情况下都说不明白关系和区分,首先要理解几个基础概念。
浮点数
:在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数乘以某个基数(计算机中通常是2)的整数次幂得到
单精度浮点数
:单精度浮点数是用来表示带有小数部分的实数,一般用于科学计算。占用4个字节(32位)存储空间
双精度浮点数
:双精度浮点数(double)是计算机使用的一种数据类型,使用64位(8字节)来存储一个浮点数。
2、对比分析
-
Float基本描述
位数:32
最小值:1.4E-45
最大值:3.4028235E38
-
Double基本描述
位数:64
最小值:4.9E-324
最大值:1.7976931348623157E308
-
案例描述
float和double声明和转换相关演示案例。
public class IntType07 {
public static void main(String[] args) {
// float 声明
float f1 = 12.3f ;
// double 声明
double d1 = 13.4 ;
// 向下转型,需要强制转换
float f2 = (float) d1 ;
System.out.println("f1="+f1+";d1="+d1+";f2="+f2);
}
}
四、高精度类型
1、BigInteger
支持任意大小的整数运算,且不会再运算过程有任何丢失情况,没有对应的基本类型,运算也会变得相对复杂,运算速度自然也就会下降。
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 = dec1.add(dec2) ;
System.out.println(res1);
// 精确减法运算,并截取结果
// HALF_UP:四舍五入
BigDecimal res2 = dec1.subtract(dec2);
System.out.println(res2.setScale(1, RoundingMode.HALF_UP));
// 精确乘法运算
BigDecimal res3 = dec1.multiply(dec2) ;
System.out.println(res3.doubleValue());
// 精确除法运算,并截取结果
// ROUND_DOWN:直接按保留位数截取
BigDecimal res4 = dec1.divide(dec2,2,BigDecimal.ROUND_DOWN);
System.out.println(res4);
}
}
五、源代码地址
GitHub·地址
https://github.com/cicadasmile/java-base-parent
GitEE·地址
https://gitee.com/cicadasmile/java-base-parent
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- CSS核心技术详解-核心概念
- WTC测评:核心团队从业经验,核心代码尚未开源
- AI 产品开发的核心原则:以研究为核心驱动
- Knative 核心概念介绍:Build、Serving 和 Eventing 三大核心组件
- 区块链技术六大核心算法,读懂六大核心算法就变成区块链专家
- webpack怎么能只是会用呢,核心中的核心tapable了解下?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Everything Store
Brad Stone / Little, Brown and Company / 2013-10-22 / USD 28.00
The definitive story of Amazon.com, one of the most successful companies in the world, and of its driven, brilliant founder, Jeff Bezos. Amazon.com started off delivering books through the mail. Bu......一起来看看 《The Everything Store》 这本书的介绍吧!