Java基础篇(01):基本数据类型,核心点整理
本文源码:GitHub·点这里 || GitEE·点这里
一、基本类型
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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用PHP应用查询SAP HANA Express Edition里的数据
前提:64位的PHP runtime和64位的Apache Web server已经安装完毕。 我们需要使用SAP HANA ODBC database drivers将PHP runtime和SAP HANA Express Editor进行连接,在SAP官网进行下载。 打开链接https://tools.hana.ondemand.com/,点击HANA标签页,下载SAP HANA Client 2.0并安装: 打开ODBC Data Source administrator: 如果此处看到了HDBODBC驱动,说明SAP HANA client已经成功安装: 在此处指定使用HDBODBC连接的SAP HANA Express地址: 点击Connect按钮,输入SYSTEM用户的密码: ODBC配置完毕如下图: 在apache web server的安装文件夹下,打开htdocs文件夹,新建一个hxe文件夹,在里面创建一个index.php文件: <?php $datasource = "hxe"; $servername = "hxehost:39013"; $userna...
- 下一篇
Java基础篇(02):特殊的String类,和相关扩展API
本文源码:GitHub·点这里 || GitEE·点这里 一、String类简介 1、基础简介 字符串是一个特殊的数据类型,属于引用类型。String类在Java中使用关键字final修饰,所以这个类是不可以继承扩展和修改它的方法。String类用处极广泛,在对String对象进行初始化时,和基本类型的包装器类型一样,可以不使用new关键字构造对象。(是真的妖娆...) 2、类构造和方法 String类结构 特点:final关键字修饰,实现Serializable序列化接口,Comparable比较接口,和CharSequence字符序列接口。 final class String implements java.io.Serializable, Comparable<String>, CharSequence 声明方式 两种方式,常量和创建对象。 String var1 = "cicada" ; String var2 = new String("smile") ; var1:声明的是一个常量,显然是放在常量池中。 var2:创建字符串对象,对象存放在堆内存中。 二、常见...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境