前言

在开始工作至今,学习各种各样的技术之中发现自己的很多Java的基础知识都忘了⊙﹏⊙b汗。。。 而且越是学习越是发现Java基础的重要性,所以准备单独抽一下时间进行Java基础的重新学习。在重新学习的时候,对这些又有了不同的感悟,于是准备将这些都记载下来,并整理成博客,希望能够帮助那些需要的人。

基本数据类型介绍

基本数据类型主要有这几个:

byte、short、int、long、float、double、char、boolean

可以分为三类:

  1. 数值类型:byte、short、int、long、float、double
  2. 字符类型:char
  3. 布尔型:boolean

byte

  1. byte是8位的数据类型,占用1个字节(8bit),默认值是0,它的取值范围是(-2^7) ~ (2^7-1),也就是 -128 ~ 127之间,所以最大存储数据量是255;
  2. byte一般在大型数组中使用,来代替整数,因为byte变量占用的空间只有int的1/4。
  3. byte使用示例: byte a = 10,byte=-10。在使用byte数据类型的时候需要注意取值范围!!!

short

  1. short是16位的数据类型,占用2个字节,默认值是0,它的取值范围是(-2^15) ~(2^15-1),也就是 -32768 ~ 32767之间,所以最大数据存储量是65536;
  2. short虽然是int型变量所占空间的1/2,但是在实际中却很少用到。在大型数组中也可以节省空间。
  3. short使用示例:short a=100,short b=-200;

int

  1. int是32位的数据类型,占用4个字节,默认值是0,它的取值范围是(-2^31) ~(2^31-1),也就是 -2147483648 ~ 2147483647之间,所以最大数据存储量是2^32-1;
  2. int是数据类型是整型,是我们在项目中用到最多的数据类型之一;
  3. int 使用示例:int a=1000,int b=-2000;

long

  1. long是64位的数据类型,占用8个字节,默认值是0L,它的取值范围是(-2^63) ~(2^63-1),也就是 -9223372036854775808 ~ 9223372036854775808之间,所以最大数据存储量是2^64;
  2. long是数据类型是长整型,是我们在项目中用到最多的数据类型之一。在使用long类型的数据时最好在数值末尾带上大写的L!
  3. long 使用示例:long a=1000L,long b=-2000L;

float

  1. float是32位的数据类型,占用4个字节,默认值是0,它的取值范围是3.4e-45 ~ 1.4e38 之间;
  2. float是数据类型是单精度,在直接赋值时必须在数字后加上f或F。
  3. float使用示例:float a=10.25f, float b=-20.35F;

double

  1. double是64位的数据类型,占用8个字节,默认值是0,它的取值范围是4.9e-324 ~ 1.8e308 之间;
  2. double是数据类型是双精度,在直接赋值的时候最好加上D或d。
  3. double使用示例:double a=10.123d, double b= -10.25644D;

boolean

  1. boolean是布尔类型,占用1个字节,只有两个值,false和true,默认值是 false。
  2. boolean只能用一种标志来记录 true或false,一般和 if 结合使用。
  3. boolean使用示例: boolean a=true,boolean b=false;

char

  1. char是字符类型,占用2个字节,默认值为空,取值范围 为 0~65535,也就是 \u0000 ~ \uffff
  2. char数据类型可以储存任何字符。
  3. char 使用示例: char a=1,char b='A';

数值类型的级别从低到高分别为:

byte,char,short(这三个平级)——>int——>float——>long——>double

其中由低级别转到高级别,是属于自动类型转换,这点是由系统自动转换的。

例如将int类型的数据转为float类型的数据。

示例:

int i=10;
float j=i;
System.out.println("i:"+i+",j:"+j);

结果:

i:10,j:10.0

如果由高级别转为低级别,则需要强制转换,也就是强制类型转换。

例如将int类型的数据转换为byte类型的数据。

示例:

int i=127;
int j=128;
byte bye=(byte)i;
byte bye2=(byte)j;
System.out.println("i:"+i+",bye:"+bye);
System.out.println("j:"+j+",bye2:"+bye2);

结果:

i:127,bye:127
j:128,bye2:-128

说明:因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。所以在进行强制类型转换的时候,要注意取值范围!

强制转换的时候需要注意数据的精确度,否则可能会出现数据精确丢失。

例如 double类型的数据转换为float类型数据。

示例:

double d=10.1111115;
float f=(float) d;
System.out.println("f:"+f+",d:"+d);

结果:

f:10.111112,d:10.1111115

了解了数据类型的级别之后,如果用不同的数据类型进行计算,那么最终的数据类型又是哪一种呢?

这里我们用这几种来测试:

1.byte 类型的数据 加 short 类型的数据;

2.short 类型的数据 加 int 类型的数据;

3.int 类型的数据 加 long 类型的数据;

这里我们使用这个方法来获取最终的数据类型

public static String getType(Object o){
return o.getClass().toString();
}

代码:

short a=1;
byte b=2;
int c = 3;
long d = 4;
System.out.println(getType(a));
System.out.println(getType(b));
System.out.println(getType(c));
System.out.println(getType(d));
System.out.println(getType(a+b));
System.out.println(getType(a+c));
System.out.println(getType(c+d));

结果:

class java.lang.Short
class java.lang.Byte
class java.lang.Integer
class java.lang.Long
class java.lang.Integer
class java.lang.Integer
class java.lang.Long

看到结果是不是有点吃惊呢?那么是为什么呢?

这里的不同的数值类型数据进行相加的时候,会自动转换为级别最高的那一个。

那么short 类型的数据加 byte 类型的数据为什么是int类型呢?

因为在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。

如果上述不好理解的,那么这里我们来做个实验测试下,通过结果来进行验证。

示例:

short a=1,b=2;
byte c=3,d=4;
System.out.println(getType(a+b));
System.out.println(getType(c+d));

结果:

class java.lang.Integer
class java.lang.Integer

那么这里可以得出结论,在数值类型中,若级别小于int,进行计算的时候,最终的数据类型会自动转换为int,如果高于int,最终数据结果会取其中最高的一个!

Java基础知识回顾之一 ----- 基本数据类型的更多相关文章

  1. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  2. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  3. Java基础知识回顾(一):字符串小结

    Java的基础知识回顾之字符串 一.引言 很多人喜欢在前面加入赘述,事实上去技术网站找相关的内容的一般都应当已经对相应知识有一定了解,因此我不再过多赘述字符串到底是什么东西,在官网中已经写得很明确了, ...

  4. Java基础知识回顾

    Java回顾之I/O Java回顾之网络通信 Java回顾之多线程 Java回顾之多线程同步 Java回顾之集合 Java回顾之序列化 Java回顾之反射 Java回顾之一些基础概念 Java回顾之J ...

  5. Java基础知识回顾之二 ----- 修饰符和String

    前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...

  6. Java基础知识回顾之四 ----- 集合List、Map和Set

    前言 在上一篇中回顾了Java的三大特性:封装.继承和多态.本篇则来介绍下集合. 集合介绍 我们在进行Java程序开发的时候,除了最常用的基础数据类型和String对象外,也经常会用到集合相关类. 集 ...

  7. Java基础知识回顾之三 ----- 封装、继承和多态

    前言 在上一篇中回顾了java的修饰符和String类,这篇就来回顾下Java的三大特性:封装.继承.多态. 封装 什么是封装 在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部份包装 ...

  8. Java基础知识回顾之六 ----- IO流

    前言 在上一篇文章中,回顾了Java的多线程.而在本篇文章中主要介绍Java IO的相关知识. IO的介绍 什么是IO? IO的名称又来是Input与Output的缩写,也就是输入流和输出流.输入流用 ...

  9. Java基础知识回顾之五 ----- 多线程

    前言 在上一篇文章中,回顾了Java的集合.而在本篇文章中主要介绍多线程的相关知识.主要介绍的知识点为线程的介绍.多线程的使用.以及在多线程中使用的一些方法. 线程和进程 线程 表示进程中负责程序执行 ...

随机推荐

  1. HDU 5056

    题意略. 巧妙的尺取法.我们来枚举每个字符str[i],计算以str[i]为结尾的符合题意的串有多少个.那么我们需要处理出str[i]的左边界j,在[j,i]之间的串均为符合题意的 串,那么str[i ...

  2. 阶乘之和 输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤10 6 ,n!表示 前n个正整数之积。

    阶乘之和输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0).n≤10 6 ,n!表示前n个正整数之积.样例输入:10样例输出: package demo; import java.uti ...

  3. Java中空串和null串的区别

    对于空串来说这是一个对象他被""这个对象给实例化了只是他的长度为0字符的内容为空. 而String变量中还可以存储一个特殊的值,这个是null,这个表示没有和其他的对象与这个变量相 ...

  4. Delphi 添加外部Form单元的方法!

    我用到的环境是 RAD Studio 10.2.2 有时候,需要把某个Form单元  添加到其他的工程!  此时,如果直接添加或者拖拉 .pas单元到目标工程,是无法把.pas包含的Form添加进去的 ...

  5. Linux定时任务深入学习

    为当前用户创建cron服务 1.  键入 crontab  -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/admin/jiaoben/bu ...

  6. 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)

    一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...

  7. Ansible自动化运维笔记3(playbook)

    1.基本语法 playbook文件格式为yaml语法.示例如下: 1.1 nginx.yaml --- - hosts: all tasks: - name: Install Nginx Packag ...

  8. 阿里舆情︱舆情热词分析架构简述(Demo学习)

    本节来源于阿里云栖社区,同时正在开发一个舆情平台,其中他们发布了一篇他们所做的分析流程,感觉可以作为案例来学习.文章来源:觉民cloud/云栖社区 平台试用链接:https://prophet.dat ...

  9. 第II篇PCI Express体系结构概述

    虽然PCI总线取得了巨大的成功,但是随着处理器主频的不断提高,PCI总线提供的带宽愈发显得捉襟见肘.PCI总线也在不断地进行升级,其位宽和频率从最初的32位/33MHz扩展到64位/66MHz,而PC ...

  10. XP硬盘读写速度很慢的解决方法

    05购入的电脑,今日仍在发挥余热,但系统速度慢得出奇.今日检测了硬盘读写速度还不到2m/s,实在令人难以接受.一查之下,硬盘被置为PIO模式了,难怪. 用以下方法得以解决: 1.对桌面"我的 ...