一、数据类型

  1. 基本数据类型介绍
  • byte 1字节
  • char 2字节
  • short 2字节
  • int 4字节
  • long 8字节
  • float 4字节
  • double 8字节

  以上有Java中八大基本类型的7种,而boolean类型的字节数没有明确规定。boolean类型有两个值:true、false,他们可以用1字节进行存储。JVM会在编译时期将boolean类型的值转化为int类型进行存储,1表示true,0表示false。

JDK官方文档:boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.

  基本类型的两条准则:

  • Java中,如果对整型数据不指定类型默认为int类型,浮点数默认为double类型
  • 基本数据类型从小到大可以自动转换,从大到小需要进行类型强制转换

  2.类型转换

  上面提到基本数据类型从大到小需要强制转换,但是并不说明都需要用户手动转换,Java提供了在编译期间的隐式转换,当赋值语句右边为字面常量时,编译器自动进行类型转换。如:

public static void main(String[] args) {
short a = 1;//1是字面常量,自动转换为short类型
char b =1+5;//1+5为常量表达式,编译器自动计算结果并转换
byte c = a+1;//编译不通过,a+1为变量表达式,运行期才可计算 }

  但是字面常量的隐式转换也存在着限制:

  • 整型字面常量大小超出目标类型的表示范围时需要强制转换:
public static void main(String[] args) {
byte b = 128;//编译错误,byte 范围在-128 到 127之间
byte c = (byte)128;//编译通过
}
  • 对于传参数时,必须要显式地进行强制类型转换,明确转换的类型

  编译器子所以这样要求,其实为了避免 方法重载出现的隐式转换 与 小类型自动转大类型 发生冲突。

public static void main(String[] args) {

    shortMethod(8);//编译错误
shortMethod((short)8); //编译通过
longMethod(8);//编译通过,因为这是小类型变成大类型,是不需要强制类型转换的
} public static void shortMethod(short c){
System.out.println(c);
} public static void longMethod(short l){
System.out.println(l);
}
  • 复合运算符的隐式转换

  在Java中复合运算符+=、-=、*=、/=、%= 可以自动的将右边表达式类型强制转换为左边的表达式类型,不需要用户显式的转换:

 public static void main(String[] args) {
int a = 1;
short b = 2;
b = b+a;//编译不通过,类型转换失败
b += a;//使用+=复合运算符 编译器自动处理成:b=(short)(b+a);
}

  3.运算结果类型

  在Java中表达式的结果类型为参与运算的类型中的最高类型

 public static void main(String[] args) {
float a = 1.2f;
double b = 33;
float c = a+b;//编译不通过:类型为double类型,需要强制转换
}

  而在byte,short,char中则不同,它们的运算结果都为int类型。

 public static void main(String[] args) {
byte b = 1;
short c = 2;
char a = b+c;//编译不通过,结果类型为int类型
}

综上所述,java的运算结果的类型有两个性质:

  • 运算结果的类型必须是int类型或int类型以上。
  • 最高类型低于int类型的,运算结果都为int类型。否则,运算结果与表达式中最高类型一致。

二、包装类型

  Java为面向对象语言,但为了更加的效率及方便依旧使用了基本数据类型。为了让对象类型与基础类型联系起来以及让基础类型能向类类型一样具有方法使其操作更加便捷,Java提供了基础类型的包装类。

基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。

public static void main(String[] args) {
Integer i = 1;//自动装箱
int s = i; //自动拆箱
}

  参考博文:

作者:jinggod
出处:http://www.cnblogs.com/jinggod/p/8424583.html

作者:cyc

出处:https://cyc2018.github.io

Java基础之数据类型的更多相关文章

  1. java基础(数据类型,运算符)

    java基础之数据类型(变量) java中存在的数据有常量和变量 常量:在程序执行的过程中其值不可以发生改变 常量的分类 字面值常量 字面值常量的分类 常量 描述 字符串常量 用双引号括起来的内容 整 ...

  2. java基础-引用数据类型之二维数组(Array)

    java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...

  3. java基础-引用数据类型之一维数组(Array)

    java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...

  4. Java基础-引用数据类型之集合(Collection)

    Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...

  5. 小白——java基础之数据类型

    PS:此文章为小白提供,大佬请绕道!!!! 首先特别感谢大才哥给我提供这个平台,未来我希望把java这个版块的内容补全. 今天要讲的是数据类型,最最最基础的内容~ java标识符.数据类型.关键字 开 ...

  6. java基础-02数据类型

    基本类型 整数 byte byte 数据类型是8位.有符号的,以二进制补码表示的整数 最小值是 -128(-2^7) 最大值是 127(2^7-1) 默认值是 0 byte 类型用在大型数组中节约空间 ...

  7. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  8. java基础知识-数据类型及转换

    1.java中的常量大体分为两种: <1>字面量常量 <2>自定义常量 2.java中常量(字面量)的分类:<1>,整数常量:直接出现的整数<2>,小数 ...

  9. 闲来无事——第一弹 Java基础 基本数据类型

    一个优秀的Java类一定要去优质的名称,类的命名主要有字母和数字,并且必须以字母开头:虽然说没有明确规定类名首字母要大写,但是实际上如果出现首字母小写的类名,那就呵呵了,坐等挨骂吧!类名首字母大写是业 ...

  10. Java基础之数据类型和转换

    一.常见的数据类型分类 1.java中基本数据类型分为三大类,即布尔类型,字符型,数值型.其中数值型又分为整型和浮点型.引用数据类型分为类,接口,数组,枚举,注解.具体如下: 注:一个字节 = 8位 ...

随机推荐

  1. 抖音人脸识别Autojs脚本

    title: 抖音人脸识别Autojs脚本 用Autojs写的抖音人脸颜值检测脚本 ​ 疫情期间宅家久了,昨天闲着没事(好吧,有事情,但是我不想做) ,消费之火熊熊燃烧.一咬牙把Autojs入正了.我 ...

  2. 理解分布式一致性:Raft协议

    理解分布式一致性:Raft协议 什么是分布式一致性 Leader选举 日志复制流程 term选举周期 timeout 选举和选举timeout 选举分裂 日志复制和心跳timeout 在分布式系统中, ...

  3. SpringCloud系列之集成Dubbo应用篇

    目录 前言 项目版本 项目说明 集成Dubbo 2.6.x 新项目模块 老项目模块 集成Dubbo 2.7.x 新项目模块 老项目模块 参考资料 系列文章 前言 SpringCloud系列开篇文章就说 ...

  4. 【Linux题目】第四关

    1. 如何过滤出已知当前目录下oldboy中的所有一级目录? 提示:不包含oldboy目录下面目录的子目录和隐藏目录,只要一级目录即可. 解答: ls -F|grep /   通过ls -F给目录后面 ...

  5. Next.js 7发布,构建速度提升40%

    Next.js团队发布了其开源React框架的7版本.该版本的Next.js主要是改善整体的开发体验,包括启动速度提升57%.开发时的构建速度提升40%.改进错误报告和WebAssembly支持. \ ...

  6. 爱创课堂每日一题第五十四天- 列举IE 与其他浏览器不一样的特性?

    IE支持currentStyle,FIrefox使用getComputStyle IE 使用innerText,Firefox使用textContent 滤镜方面:IE:filter:alpha(op ...

  7. Redis为什么是单线程的

    一.前言   最近在学习Redis,这篇文章就来简单聊聊一道常考的面试题--Redis为什么是单线程的.废话不多说,直接开始吧. 二.正文 2.1 为什么需要多线程   首先,现在的CPU一般都是由多 ...

  8. P2024 食物链(种类并查集)

    P2024 [NOI2001]食物链 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动 ...

  9. 自动化API之一 生成开源ERP Odoo App 的RestFul API

    1.在服务器上安装开源ERP Odoo 安装步骤请自行百度,本文重点不在于指导安装,以下是安装后PC端效果. Odoo: 2.在Uniconnector平台上注册Odoo App 移动端应用 3.配置 ...

  10. 【FPGA技巧篇一】FPGA设计的四种常用思想与技巧之一 :乒乓操作

    本文篇章将讨论一下的四种常用 FPGA 设计思想与技巧: 乒乓操作. 串并转换. 流水线操作. 数据接口同步化, 都是 FPGA 逻辑设计的内在规律的体现, 合理地采用这些设计思想能在FPGA设计工作 ...