13、java中8中基本类型
一、基本类型介绍
| 关键字 | 数据类型 | 占用字节数 | 取值范围 | 默认值 |
| byte | 字节型 | 1个字节 | -128~127 | 0 |
| char | 字符型 | 2个字节 | Unicode0~Unicode215-1 | \u0000 |
| short | 短整型 | 2个字节 | -215~215-1 | 0 |
| int | 整型 | 4个字节 | -231~231-1 | 0 |
| long | 长整型 | 8个字节 | -263~263-1 | 0 |
| float | 单精度浮点数 | 4个字节 | -2128~2128 | 0.0 |
| double | 双精度浮点数 | 8个字节 | -21024~21024 | 0.0 |
| boolean | 布尔型 | 1个字节 | true|false | false |
float与double的范围和精度
范围
float: 1bit(符号位) 8bit(指数位) 23bit(尾数为)
double: 1bit(符号位) 11bit(指数位) 52bit(尾数为)
float的指数范围 -127~128,而double的指数范围-1023~1024
float的范围为-2128~2128,也即-3.40E+38 ~ +3.40E+38;double的范围为-21024~21024,也即-1.79E+308 ~ +1.79E+308
精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:223 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:252 = 4503599627370496,一共16位,同理,double的精度为15~16位。
基本类型赋值
byte:
byte b=1;
byte a=1+2;
short
short s=1;
char
char a='A'; //直接用字符赋值
char b=65; //用10进制数字赋值
char c='\u0041'; //使用unicode码赋值
char d=0x0041; //使用16进制赋值
char e=0101; //使用8进制赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
上面输出的都是是字符'A'
int
int a=3;
long
long a=1;
long b=10000000000l;
//如果赋值范围超过了int,就必须在后面加上字母l或者L
float
float a=1.2f;
double
double a=1.2;
二、基本类型运算
1、java中byte、short和char类型运算操作首先会把这些值转换成int类型,然后对这些int值进行运算,返回int类型。
byte a=1;
byte b=2;
byte c=a+b; 这里先将a和b转换成int类型在进行计算,结果返回int类型,所以这里结果不正确
可以改为:
int c=a+b;
或者
byte c=(byte)(a+b); 当然这里不能操作byte范围
byte a=1;
char b='B';
int c=a+b;
System.out.println(c);
输出为67 现将a=1和b='B'转换成int型 a=1、b=66 所以结果为67
2、在做除法运算时,如果两边除数和被除数都是整数,其结果也为整数(只保留整数部分)例如:
int a=10;
int b=3;
System.out.println(a/b);
结果为:3
3、在做除服运算时,两个操作数其中有一个是浮点数,计算结果也是浮点数。而且允许除数是0或者0.0,得到结果正无穷或负无穷
double a=5;
int b=5;
System.out.println(a/0); //结果为正无穷:Infinity
System.out.println(-a/0); //结果为负无穷:-Infinity
System.out.println(b/0); //抛出异常:java.lang.ArithmeticException: / by zero
System.out.println(0/0.0); //结果为:NaN
System.out.println(0.0/0); //结果为NaN
13、java中8中基本类型的更多相关文章
- java 实现往oracle存储过程中传递array数组类型的参数
注:本文来源于 < java 实现往oracle存储过程中传递array数组类型的参数 >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...
- 在JAVA中怎么比较Double类型数据的大小
在JAVA中怎么比较Double类型数据的大小 我来答 浏览 33044 次 3个回答 #活动# “双11”答题活动,奖励加码!最高得2000元购物礼金! pollutedair 2015- ...
- JAVA中的六种日期类型使用
基本的6种日期类 /** * 六种时间类型的类 * 数据库格式的时间三种格式 */ java.util.Date date = new java.util.Date();//年与日时分秒 //数据库的 ...
- 【java】jackson 中JsonFormat date类型字段的使用
为了便于date类型字段的序列化和反序列化,需要在数据结构的date类型的字段上用JsonFormat注解进行注解具体格式如下 @JsonFormat(pattern = "yyyy-MM- ...
- java程序转换excel中科学记数法的数据为date类型
今天出于某些原因从mongodb数据库中导出了一些数据,为了更直观的发送给其他人查阅,便使用mongoVUE的导出为excel功能. 但是导出后出现了一个问题,里边有一列存储时间的,存储的是lon ...
- java中基本类型和包装类型实践经验
至今,小菜用java快两年了,有些事,也该有个总结. 基本类型和包装类型的概念在本文不作赘述. 如果这两种类型直接使用,倒没什么值得讨论的,无非就是自动装箱拆箱,java可以让你感觉不到他们的存在,但 ...
- 理解Java中的协变返回类型
在面向对象程序设计中,协变返回类型指的是子类中的成员函数的返回值类型不必严格等同于父类中被重写的成员函数的返回值类型,而可以是更 "狭窄" 的类型. Java 5.0添加了对协变返 ...
- Java中String转换Double类型 Java小数点后留两位
Java中String转换Double类型 double num1 = 0.0; String qq = "19.987"; num1 = Double.valueOf(qq.to ...
- 1.java.io包中定义了多个流类型来实现输入和输出功能,
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G) A.输入流和输出流 B ...
- 集合框架的类和接口均在java.util包中。 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。
集合框架的类和接口均在java.util包中. 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换.
随机推荐
- 编码原则:必须使用的 TODO
结构 // TODO:JS ParentId 不要使用硬编码. var parentId = record.get('ParentId'); var parentNode = me.getStore( ...
- recyclerView 列表类控件卡顿优化
1.使用ConstraintLayout减少布局层级. 2.可以的话,设置RecyclerView布局等高,然后设置recyclerView.setHasFixedSize(true)这样可以避免每次 ...
- html嵌套iframe怎样实现等iframe页面载入完进行下一步调用
</pre>假设想在你的html里面显示一张图片.或者显示一个报表,常常会在里面嵌套iframe,当我们点查询报表时.在报表显示过程中,我们想做个遮罩层,提示等待...可是报表显示出来后. ...
- 【转】QT CEF3 消息循环处理
初次写博客,可能有点乱, 按照自己的实际经历谈一下CEF3钟遇到的一些坑,希望对以后的小伙有些帮助. 先说一下经历,当初第一次接触CEF3的时候,没做特殊处理,直接将cef3封装成控件,嵌入到QT程序 ...
- Qt5设置应用程序图标
1.设置应用程序图标 简单三步走,搞定 ①创建一个图标格式的文件,可以网上在线将普通的图形格式转成.ico 格式的图标文件 http://www.faviconico.org/ 这个网站可以在线转换p ...
- Informatica 常用组件Lookup缓存之四 使用不高速缓存的查找或静态高速缓存
默认情况下,在为高速缓存配置查找转换时,PowerCenter 将创建静态查找高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.P ...
- go语言基础之数组比较和赋值
1.go语音基础之数组比较和赋值 示例: package main //必须有个main包 import "fmt" func main() { //支持比较,只支持 == 或 ! ...
- 理解 CSS 的 z-index 属性
通常认为HTML页面是二维的,但实际上,CSS还有一个z-index属性,允许层叠元素. 所有的盒模型元素都处于三维坐标系中. 除了我们常用的横坐标和纵坐标, 盒模型元素还可以沿着“z轴”层叠摆放, ...
- c# 使用 HttpWebRequest模拟登陆(附带验证码)
在C#中,可以使用HttpWebRequest进行相关的模拟登陆,登陆后进行相关的操作,比如抓取数据,页面分析,制作相关登陆助手等等. 先说下流程 1.使用httpwebrequest先进入你要登录的 ...
- Android -- 拷贝assets下的资源文件到SD卡中(可以超过1M)
很多手机游戏,在安装APK之后都得需要下载相应的资源包,然后才能进入游戏. 有这样一个需求:就是游戏中需要的资源包打在APK内,随apk一起进行安装到手机中. 这样就不需要,在安装APK之后,去下载资 ...