• Java是一种强类型语言每个变量都必须声明其类型

  • Java的数据类型 分为两大类:基本类型(primitive type)和引用类型(reference type)。

  • Java的所有八种基本类型的数据各自都占有固定的内存空间,最小的占1字节,最大的占8字节,字节是一种计算机内部的存储单位


一、强类型语言

  • 强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。一旦一个变量被指定了某个数据类型,如果不经过转换,那么它就永远是这个数据类型了。安全性高,运行效率相对弱类型语言较慢。
  • 弱类型语言也称为弱类型定义语言。其变量不需要显式指定数据类型,不同类型的数据之间允许隐式类型转换。弱类型语言更灵活,运行效率相对高一些,但更容易出错。

二、存储单位

  • Java的所有八种基本类型的数据各自都占有固定的内存空间,最小的占1字节,最大的占8字节。计算机内部数据的存储单位主要分为基本存储单位扩展存储单位

Ⅰ、基本存储单位

分类:基本存储单位有三种:位(bit)字节(Byte/B)字(Word)

  1. 位(bit):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。4位为2^4,若转换成十六进制表示,范围为0~F
  2. 字节(Byte/B):计算机中数据处理的基本单位,习惯上用大写B来表示。每8位组成一个字节,若转换成十六进制表示,范围为00~FF。各种信息在计算机中存储、处理至少需要一个字节。
  3. 字(Word):通常两个字节称为一个字。汉字的存储单位都是一个字。

注意:字符(Character)

  • 字符是指计算机中使用的字母、数字、字和符号。
  • 一个字符的大小在不同的字符编码中是不同的。
  • 在ASCII编码中,一个英文字母字符存储需要1个字节。
  • 在GB2312编码或GBK编码中,一个汉字字符存储需要2个字节。
  • 在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。
  • 在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。
  • 在UTF-32编码中,世界上任何字符的存储都需要4个字节。

Ⅱ、扩展存储单位

  • 在计算机各种存储介质(例如内存、硬盘、光盘等)的存储容量表示中,用户所接触到的存储单位不是位、字节和字,而是KB、MB、GB等,但这不是新的存储单位,而是基于字节换算的,换算率均为1024。

单位换算:

  1. 1B = 8b
  2. 1KB = 1024B
  3. 1MB = 1024KB
  4. 1GB = 1024MB
  5. 1TB = 1024GB
  6. 1PB = 1024TB
  7. 1EB = 1024PB
  8. 1ZB = 1024EB
  9. 1YB = 1024ZB
  10. 1BB = 1024YB
  11. 1NB = 1024BB
  12. 1DB = 1024NB

三、基本数据类型

  • Java提供了八种基本数据类型。六种数值类型,其中四个整数类型byteshortintlong),两个浮点类型floatdouble),一种字符类型char),还有一种布尔类型boolean)。

  • 数值类型在使用时注意不要超出类型的数值范围,造成溢出。

  • 数值类型在使用时,若数值较大,可以用'_'分割,提高可读性。下划线只能在数字之间,在数字的开始或结束位置不能使用下划线。例如:

    float floatNumber = 10_000_0.0_1f;
    System.out.println(floatNumber);//100000.01

Ⅰ、byte

  • byte 数据类型是Java的整数类型之一。

内存大小:1字节

最小值:-128(-2^7)

最大值:127(2^7 - 1)

默认值:(byte)0


Ⅱ、short

  • short 数据类型是Java的整数类型之一。

内存大小:2字节

最小值:-32768(-2^15)

最大值:32767(2^15 - 1)

默认值:(short)0


Ⅲ、int

  • int 数据类型是Java的整数类型之一,Java的整型变量默认为 int 类型。

内存大小:4字节

最小值:-2,147,483,648(-2^31)

最大值:2,147,483,647(2^31 - 1)

默认值:0


Ⅳ、long

  • long 数据类型是Java的整数类型之一,使用时要在数值后面加上'L'。
  • 'L'理论上不分大小写,但是若写成'l'容易与数字'1'混淆,不容易分辨,所以最好大写。

内存大小:8字节

最小值:-9,223,372,036,854,775,808(-2^63)

最大值:9,223,372,036,854,775,807(2^63 - 1)

默认值:0L


Ⅴ、float

  • float 数据类型是Java的浮点数(小数)类型之一,单精度的浮点数,使用时要在数值后面加上'f'或'F'。

内存大小:4字节

负数范围:-3.402823E38 ~ -1.401298E-45

正数范围:1.401298E-45 ~ 3.402823E38

默认值:0.0F


Ⅵ、double

  • double 数据类型是Java的浮点数(小数)类型之一,双精度的浮点数,使用时可以在数值后面加上'd'或'D'。
  • Java的浮点型变量默认为 double 类型。

内存大小:8字节

负数范围:-1.79769313486232E308 ~ -4.94065645841247E-324

正数范围:4.94065645841247E-324 ~ 1.79769313486232E308

默认值:0.0


Ⅶ、char

  • char数据类型是Java的字符类型,是一个单一的16位Unicode字符,必须用单引号 括起来。
  • char类型的数据可以被强制类型转换整型 数据,其转换后的整数数值对应该字符在Unicode编码表中的编号
  • Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符。
  • Unicode具有从0到65535之间的编码,他们通常用从'u0000'到'uFFFF'之间的十六进制值来表示(前缀为u表示Unicode)。
  • char类型数据对应Unicode编码的编号,所以char类型数据也可以用'\uxxxx'(带单引号,x表示16进制数值)的方式表示,'\uxxxx'是Java定义的转义字符之一,表示十六进制Unicode字符。
  • char类型的数据被强制转换为整型时,若编号超出该整型类型的范围,如byte、short类型,那么转换结果数值不为其准确的编号。

内存大小:2字节

最小值:\u0000(即为0)

最大值:\uffff(即为65,535)

默认值:'\u0000'

示例:

char charUnicode = '\u0061';
char charEnglish = 'a';
System.out.println(charUnicode == charEnglish);//true
char charChinese = '国';
System.out.println((byte) charChinese);//-3
System.out.println((int) charChinese);//22269

Ⅷ、boolean

  • boolean数据类型是Java的布尔类型(逻辑类型),表示一位的信息,只有两个值(是或否)。
  • 在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。也就是说JVM规范指出boolean当作int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出:boolean类型单独使用是4个字节,在数组中是1个字节

内存大小:1字节

两个值:true、false

默认值:false


四、进制

  1. Java中的整型数值 可以使用不同的进制 来表示。

  2. 为了区分不同的进制,各个进制在Java中有不同的表示规则。

    • 二进制要以'0b''0B' 开头。例如:0b1010
    • 八进制要以'0' 开头。例如:012
    • 十进制为整数默认进制,无特殊表示规则。例如:10
    • 十六进制要以'0x''0X'开头,十进制的数值0~15,对应十六进制的0~9加上A~F/a~f。例如:0xA

示例:

int number2 = 0b1010;
int number8 = 012;
int number10 = 10;
int number16 = 0xA;
System.out.println(number10 == number2);//true
System.out.println(number10 == number8);//true
System.out.println(number10 == number16);//true

五、BigDecimal

  • 由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确地用二进制浮点数表示。最好完全避免使用浮点数进行比较!

  • 浮点类型(float、double)的数据不适合在不容许舍入误差的金融计算 领域,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal 类。

  • java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

误差示例:

float floatNumber = 0.1f;
double doubleNumber = 1.0/10;
System.out.println(floatNumber == doubleNumber);//false
float floatBigNumber = 2333333333f;
float floatAddNumber = floatBigNumber + 1;
System.out.println(floatBigNumber == floatAddNumber);//true

六、转义字符

  • Java支持一些特殊的转义字符。
  • 转义字符在字符(char)和字符串(String)中均可使用。

所有转义字符:

符号 字符含义
\n 换行(0x0a)
\r 回车(0x0d)
\f 换页符(0x0c)
\b 退格(0x08)
\0 空字符(0x0)
\s 空格(0x20)
\t 制表符
\" 双引号
\' 单引号
\\ 反斜杠
\ddd 八进制字符(ddd)
\uxxxx 十六进制Unicode字符(xxxx)

Java基础语法:基本数据类型的更多相关文章

  1. Java基础语法<一> 数据类型&运算符

    1 数据类型   1.1 整型 类型 存储需求 取值范围 int 4字节 -21 4748 3648 – 21 4748 3647 232 short 2字节 -32768-32767 216 lon ...

  2. java基础语法-char数据类型

    1.java中的char描述了UTF-16中的一个代码单元,因此对于基本的多语言层面可以随意的用char表示 ;//int值只能在0到65535即0000到FFFF 对于其他16个代码级别(两个代码单 ...

  3. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  4. Java基础语法和基本数据类型

    Java基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 对象:对象是类的一个实例,有状态(属性)和行为(方法). 类:类是一个模板,他描述一类对象的行为 ...

  5. 068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题——基本数据类型传值

    068 01 Android 零基础入门 01 Java基础语法 08 Java方法 06 参数传递问题--基本数据类型传值 本文知识点:参数传递问题--基本数据类型传值 说明:因为时间紧张,本人写博 ...

  6. 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型

    010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...

  7. JAVA基础语法:java编程规范和常用数据类型(转载)

    JAVA基础语法:java编程规范和常用数据类型 摘要 本文主要介绍了最基本的java程序规则,和常用数据类型,其中侧重说了数组的一些操作. 面向java编程 java是纯面向对象语言,所有的程序都要 ...

  8. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  9. Java基础语法(下篇)

     Java基础语法(下篇) 内容概要:        (1)函数的定义        (2)函数的特点        (3)函数的应用        (4)函数的重载               ...

  10. Java基础语法(上篇)

                     Java基础语法(上篇) 知识概要: (1)关键字的表示与规范       (2)标示符              (3)注释                (4 ...

随机推荐

  1. idea--忽略隐藏文件、文件夹的设置操作

    文章由来 公司同事在群里问了个问题,如下: 为了大家看清,将图特意贴出来: 这人还删除idae重装了下,哈哈,才到群里问的. 解决思路(按顺序) 1.我让他直接拉会,共享桌面我给看了下,首先是open ...

  2. Sqoop export参数updatemode两种模式updateonly和allowinsert区别

    1.更新导出(updateonly模式)1.1参数说明-- update-key,更新标识,即根据某个字段进行更新,例如id,可以指定多个更新标识的字段,多个字段之间用逗号分隔. -- updatem ...

  3. D - D (畅通工程再续)

    相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政 ...

  4. POJ-2411 Mondriann's Dream (状压DP)

    求把\(N*M(1\le N,M \le 11)\) 的棋盘分割成若干个\(1\times 2\) 的长方形,有多少种方案.例如当 \(N=2,M=4\)时,共有5种方案.当\(N=2,M=3\)时, ...

  5. 2019ICPC南昌邀请赛 Sequence

    题意:给出n个点的权值,m次操作,操作为1时为询问,每次询问给出 l 和 r ,求 f(l,r).操作为0时为修改权值.f(l,r)=f(l,l)⊕f(l,l+1)⊕⋯⊕f(l,r)⊕f(l+1,l+ ...

  6. CF1313C2 Skyscrapers (hard version)

    思路: 使用单调栈. 实现: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 con ...

  7. Python实现AES的CBC模式加密和解密过程详解 和 chr() 函数 和 s[a:b:c] 和函数lambda

    1.chr()函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 2.s[a:b:c] s=(1,2,3,4,5) 1>. s[a]下标访 ...

  8. Linux 查看系统日志 ,查看服务日志

    journalctl 查看系统日志参数 -f 表示日志跟中-u 指定的是 unit 指定要查看的服务日志,如果不指定的话会显示所有服务的日志 journalctl -f -u 要查看的服务日志 jou ...

  9. P站风格的DevTools主题

    Chrome插件地址:https://chrome.google.com/webstore/detail/material-devtools-theme-c/jmefikbdhgocdjeejjnne ...

  10. k8s-1-交付dubbo微服务

    一.Dubbo微服务概述 1.1: dubbo介绍 1.2: 部署内容 二.实验环境架构 2.1: 架构 1.1 架构图解 1.最上面一排为K8S集群外服务 1.1 代码仓库使用基于git的gitee ...