Java基础之数据类型
一、数据类型
- 基本数据类型介绍
- 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
andfalse
. 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
Java基础之数据类型的更多相关文章
- java基础(数据类型,运算符)
java基础之数据类型(变量) java中存在的数据有常量和变量 常量:在程序执行的过程中其值不可以发生改变 常量的分类 字面值常量 字面值常量的分类 常量 描述 字符串常量 用双引号括起来的内容 整 ...
- java基础-引用数据类型之二维数组(Array)
java基础-引用数据类型之二维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换 ...
- java基础-引用数据类型之一维数组(Array)
java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...
- Java基础-引用数据类型之集合(Collection)
Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...
- 小白——java基础之数据类型
PS:此文章为小白提供,大佬请绕道!!!! 首先特别感谢大才哥给我提供这个平台,未来我希望把java这个版块的内容补全. 今天要讲的是数据类型,最最最基础的内容~ java标识符.数据类型.关键字 开 ...
- java基础-02数据类型
基本类型 整数 byte byte 数据类型是8位.有符号的,以二进制补码表示的整数 最小值是 -128(-2^7) 最大值是 127(2^7-1) 默认值是 0 byte 类型用在大型数组中节约空间 ...
- 【Spring学习】【Java基础回顾-数据类型】
Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...
- java基础知识-数据类型及转换
1.java中的常量大体分为两种: <1>字面量常量 <2>自定义常量 2.java中常量(字面量)的分类:<1>,整数常量:直接出现的整数<2>,小数 ...
- 闲来无事——第一弹 Java基础 基本数据类型
一个优秀的Java类一定要去优质的名称,类的命名主要有字母和数字,并且必须以字母开头:虽然说没有明确规定类名首字母要大写,但是实际上如果出现首字母小写的类名,那就呵呵了,坐等挨骂吧!类名首字母大写是业 ...
- Java基础之数据类型和转换
一.常见的数据类型分类 1.java中基本数据类型分为三大类,即布尔类型,字符型,数值型.其中数值型又分为整型和浮点型.引用数据类型分为类,接口,数组,枚举,注解.具体如下: 注:一个字节 = 8位 ...
随机推荐
- Python数据分析:大众点评数据进行选址
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:砂糖侠 如果你处于想学Python或者正在学习Python,Pyth ...
- 解决Cannot use a scalar value as an array
这是类型转换的问题,看看上方代码是不是先把布尔值或者0值赋给了一个变量,然后下面循环中又把这个变量当作数组用了
- 一篇文章带你编写10种语言HelloWorld
0,编程语言排行榜 计算机编程语言众多,世界上大概有600 多种编程语言,但是流行的也就几十种.我们来看下编程语言排行榜,下面介绍两种语言排行榜. Ⅰ TIOBE 指数 该指数每月更新一次,它监控了近 ...
- Java反射详细介绍
反射 目录介绍 1.反射概述 1.1 反射概述 1.2 获取class文件对象的三种方式 1.3 反射常用的方法介绍 1.4 反射的定义 1.5 反射的组成 1.6 反射的作用有哪些 2.反射的相关使 ...
- js数组排序和打乱
js数组根据不同的业务需求,会要求数组有序或者无序,记录一下流传较广,通用性较强的排序和乱序方法. 数组排序: arr.sort(function(a,b){//从小到大 return a-b;[re ...
- 数学--数论--HDU 12151七夕节
七夕节 Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!&q ...
- CodeForces - 1245 C - Constanze's Machine
Codeforces Round #597 (Div. 2) Constanze is the smartest girl in her village but she has bad eyesigh ...
- Integer和int及String的总结
秉承着总结发表是最好的记忆,我把之前遇到的问题在这里总结和大家分享一下,希望大家共同进步: 一.Integer和int首先说下自动拆装箱,基本数据类型转换为包装类型的过程叫装箱,反之则是拆箱,其中最特 ...
- SpringCloudStream学习(一)RabbitMQ基础
应公司大佬要求,学习一下SpringCloudStream,作为技术储备.这几天也看了这方面的资料,现在写一篇笔记,以做总结.文章会从RabbitMQ基础讲起,到SpringCloudStream结束 ...
- 学习RxJava+Retrofit+OkHttp+MVP的网络请求使用
公司的大佬用的是这一套,那我这个菜鸟肯定要学习使用了. 我在网上找了很多文章,写的都很详细,比如 https://www.jianshu.com/u/5fd2523645da https://www. ...