一、数据类型

  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. Task Scheduler API Error 80041318

    https://stackoverflow.com/questions/42307917/task-scheduler-api-error-80041318/42462235#42462235 Hi ...

  2. 预测球队比赛结果及利用pyinstaller打包文件

    一.预测乒乓球球队比赛成绩 1.乒乓球比赛规则 一局比赛:在一局比赛中,先得11分的一方为胜方:10平后,先多得2分的一方为胜方. 一场比赛:单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜 ...

  3. Flex 布局教程:语法篇(转自阮一峰的网络日志)

    作者:阮一峰(转自阮一峰的网络日志,如有侵权,立即删除) 网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 ...

  4. LightOJ 1287 Where to Run(期望)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1287 题意:给定一个n个点的无向图(0到n-1),你开始在0.你开始遍历这个图 ...

  5. 中国AI觉醒 阿里王坚:云智能将成为大趋势

    2019独角兽企业重金招聘Python工程师标准>>> <麻省理工科技评论>新兴科技峰会EmTech China于北京召开.大会中,其中一项热门的讨论便是:中国和美国的科 ...

  6. python(写入 excel 操作 xlwt 模块)

    一.安装 xlwt 模块 pip install xlwt 二.excel 写入操作 这种方式只能新增或者覆盖文件写入 import xlwt # 创建一个workbook 设置编码 workbook ...

  7. 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)

    [K8S]K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本) 写在前面 K8S集群部署成功了,如何对集群进行可视化管理呢?别着急,接下来,我们一 ...

  8. 区间dp E - Multiplication Puzzle POJ - 1651

    E - Multiplication Puzzle  POJ - 1651 这个题目没有特别简单,但是也没有我想象之中的那么难,这个题目时区间dp,因为我们是要对区间进行考虑的. 但是呢,这个也和动态 ...

  9. Spring 框架介绍 [Spring 优点][Spring 应用领域][体系结构][目录结构][基础 jar 包]

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 目录 ...

  10. 王颖奇 201771010129《面向对象程序设计Java》第十八周实验总结

    实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...