本文源码: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、布尔类型

两个逻辑值: truefalse,通常用来表示关系运算的结果。

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):基本数据类型,核心点整理相关推荐

  1. Java基础篇:简单数据类型

    Java定义了8个简单(或基本)的数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(b ...

  2. 【JAVA基础篇】基本数据类型及自动类型转换

    一.8种基本数据类型以及占用内存空间大小 boolean  1byte或4byte byte        8bit/1byte char        16bit/2byte short      ...

  3. mysql经典总结文章_MySQL基础篇(01):经典实用查询案例,总结整理

    MySQL基础篇(01):经典实用查询案例,总结整理 发布时间:2020-02-26 22:25:21 来源:51CTO 阅读:244 作者:知了一笑 本文源码:GitHub·点这里 || GitEE ...

  4. Java基础篇1——变量与数据类型

    Java基础篇1--变量与数据类型 1.标识符命名规则 标识符以由大小写字母.数字.下划线(_)和美元符号($)组成,但是不能以数字开头. 大小写敏感 不能与Java语言的关键字重名 不能和Java类 ...

  5. Android面试题Java基础篇

    Android面试题Java基础篇,由本人整理汇总,后续将继续推出系列篇,如果喜欢请持续关注和推荐,更多精彩内容可以关注微信公众号(Android高级编程):android-tech 系列文章目录: ...

  6. 高频面试真题答案 -java后端 -java基础篇

    原贴 2022届秋招高频面试真题汇总,千题奉送!!!- 后端篇_笔经面经_牛客网 整理答案: 类加载机制 47 双亲委派机制 24 new一个对象的过程 4 java程序是如何运行起来的? 1 jvm ...

  7. Java基础篇——三大特性(多态)

    这是Java三大特性的最后一篇文章,本篇主要讲解多态的概念和应用.如果是对Java有兴趣的小伙伴可以关注一下,后续会推出一系列的Java基础和进阶的总结(或者说是个人的理解吧!)可以让你学到一些基础但 ...

  8. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  9. Java基础篇3——流程控制

    Java基础篇3--流程控制 1.顺序结构 正常代码的流程即是顺序流程 2.分支结构 2.1.if-else分支 if(条件表达式) {语句块1; } if(条件表达式) {语句块1; } else ...

最新文章

  1. netconf 网络配置协议 简介
  2. 本地方法(JNI)——调用 java 方法
  3. Flash 缓存问题的解决(转)
  4. js_long.php,protobuf.js 与 Long.js的使用详解
  5. c++ qt获取电脑的内存_Qt官方示例信号量
  6. unity案例 mysql lua_通过Xlua实现unity热更新的一个小例子
  7. VS2010对C++11的语法支持简单示例
  8. vmoptions默认配置_idea VM options参数优化
  9. 如何关闭勒索病毒端口
  10. STM32CubeMX配置DCMI+DMA之OV2640
  11. trajan 算法 离线求lca 超详细讲解~~~~ 保证一看就懂~~~
  12. 非常实用全面的风水知识
  13. 基于Python实现的微信好友数据分析——抓取好友性别、位置、头像签名
  14. win7原版镜像_小白重装win7旗舰版系统图文教程
  15. Banner本地,网络,图片轮播
  16. 明日之后各个服务器的信息,明日之后三个字的和四个字的区什么不同 服务器区别详解...
  17. VS 注释多行与取消多行注释快捷键
  18. Java发送邮件链接实现登录注册
  19. 08 基础代谢率计算
  20. 一文教你掌握广义估计方程

热门文章

  1. mysql服务等待应答超时_从mysql备份报错来看net_read_timeout 和net_write_timeout参数
  2. (王道408考研操作系统)第二章进程管理-第一节1:进程、PCB及其特征
  3. Python url编码、url解码
  4. Linux chroot命令
  5. 21. PE结构-PE各个结构的基本概念
  6. 12. OD-XOFTSPY监控系统软件,通过windows API进行破解(双重验证,聪明的加密师)
  7. 网页弹出框----播放视频
  8. java native 关键字
  9. css①字体颜色正常显示,背景透明②字体颜色与背景均为透明的设置方法
  10. GIT的 .gitignore 配置