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.30000000000000004System.out.println(3*0.1);// trueSystem.out.println(0.3 == 0.3);// falseSystem.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
Java基础篇(01):基本数据类型,核心点整理相关推荐
- Java基础篇:简单数据类型
Java定义了8个简单(或基本)的数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(b ...
- 【JAVA基础篇】基本数据类型及自动类型转换
一.8种基本数据类型以及占用内存空间大小 boolean 1byte或4byte byte 8bit/1byte char 16bit/2byte short ...
- mysql经典总结文章_MySQL基础篇(01):经典实用查询案例,总结整理
MySQL基础篇(01):经典实用查询案例,总结整理 发布时间:2020-02-26 22:25:21 来源:51CTO 阅读:244 作者:知了一笑 本文源码:GitHub·点这里 || GitEE ...
- Java基础篇1——变量与数据类型
Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...
- Android面试题Java基础篇
Android面试题Java基础篇,由本人整理汇总,后续将继续推出系列篇,如果喜欢请持续关注和推荐,更多精彩内容可以关注微信公众号(Android高级编程):android-tech 系列文章目录: ...
- 高频面试真题答案 -java后端 -java基础篇
原贴 2022届秋招高频面试真题汇总,千题奉送!!!- 后端篇_笔经面经_牛客网 整理答案: 类加载机制 47 双亲委派机制 24 new一个对象的过程 4 java程序是如何运行起来的? 1 jvm ...
- Java基础篇——三大特性(多态)
这是Java三大特性的最后一篇文章,本篇主要讲解多态的概念和应用.如果是对Java有兴趣的小伙伴可以关注一下,后续会推出一系列的Java基础和进阶的总结(或者说是个人的理解吧!)可以让你学到一些基础但 ...
- Java基础篇4——数组
Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...
- Java基础篇3——流程控制
Java基础篇3--流程控制 1.顺序结构 正常代码的流程即是顺序流程 2.分支结构 2.1.if-else分支 if(条件表达式) {语句块1; } if(条件表达式) {语句块1; } else ...
最新文章
- netconf 网络配置协议 简介
- 本地方法(JNI)——调用 java 方法
- Flash 缓存问题的解决(转)
- js_long.php,protobuf.js 与 Long.js的使用详解
- c++ qt获取电脑的内存_Qt官方示例信号量
- unity案例 mysql lua_通过Xlua实现unity热更新的一个小例子
- VS2010对C++11的语法支持简单示例
- vmoptions默认配置_idea VM options参数优化
- 如何关闭勒索病毒端口
- STM32CubeMX配置DCMI+DMA之OV2640
- trajan 算法 离线求lca 超详细讲解~~~~ 保证一看就懂~~~
- 非常实用全面的风水知识
- 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名
- win7原版镜像_小白重装win7旗舰版系统图文教程
- Banner本地,网络,图片轮播
- 明日之后各个服务器的信息,明日之后三个字的和四个字的区什么不同 服务器区别详解...
- VS 注释多行与取消多行注释快捷键
- Java发送邮件链接实现登录注册
- 08 基础代谢率计算
- 一文教你掌握广义估计方程
热门文章
- mysql服务等待应答超时_从mysql备份报错来看net_read_timeout 和net_write_timeout参数
- (王道408考研操作系统)第二章进程管理-第一节1:进程、PCB及其特征
- Python url编码、url解码
- Linux chroot命令
- 21. PE结构-PE各个结构的基本概念
- 12. OD-XOFTSPY监控系统软件,通过windows API进行破解(双重验证,聪明的加密师)
- 网页弹出框----播放视频
- java native 关键字
- css①字体颜色正常显示,背景透明②字体颜色与背景均为透明的设置方法
- GIT的 .gitignore 配置