美文网首页
Java基础篇(01):基本数据类型,核心点整理

Java基础篇(01):基本数据类型,核心点整理

作者: 知了一笑 | 来源:发表于2020-03-08 21:52 被阅读0次

本文源码: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.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

相关文章

  • Java基础篇(01):基本数据类型,核心点整理

    本文源码:GitHub·点这里 || GitEE·点这里 一、基本类型 1、基本类型 不使用New创建,声明一个...

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • Java 基础题目

    Java 基础部分 1. JAVA 的基本数据类型有哪些 ? String 是不是基本数据类型 ? Java 有 ...

  • java,android面试题

    一 JAVA相关 1)JAVA基础 java基本数据类型有哪些,int, long占几个字节基本数据类型包含:数值...

  • Java知识点-基础篇-基础知识(一)

    关注公众号【爱做梦的锤子】后台回复【java知识点】可下载整理好的xmind思维导图 基础知识 基本数据类型 8种...

  • Java基础知识梳理

    Java 基础知识梳理 1、Java的基本程序设计结构 1.1:数据类型 java中存在8中基本数据类型,其中有四...

  • 去年面了多个候选人,看看我挖的坑还有他们应该要补的Java基础(

    看看我在基础数据类型方面埋了什么坑 说说看,Java有多少种基本的数据类型?多大? Java有8中基本的数据类型,...

  • Java的数据类型

    Java的数据类型包含基础数据类型、引用数据类型两大类。 一、四大类八个基础数据类型 Java语言提供了八种基本类...

  • 2019-02-27

    一、java的基础数据类型 (1)Java一共有8种基本数据类型(原始数据类型): 类型/存储要求/范围(包含)/...

  • java编程分类

    一、java简介java开发环境配置java基础语法java对象与类java基本数据类型java变量类型java修...

网友评论

      本文标题:Java基础篇(01):基本数据类型,核心点整理

      本文链接:https://www.haomeiwen.com/subject/olqsdhtx.html