java为什么java8种基本数据类型类型

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
&&& 1.布尔型(boolean) :true/false,不可以以0或非0的数字代替;不能进行数据之间的转换。
&&& 2.整数类型
& ** 整型默认为int型,而long类型表示的范围要超出int表数范围,所以,声明long类型时,常量后要加L(l)。&&&&
如:long l1=& //& 数值在int范围之内,还不会出错
&& &&& long l2=;//& 数值在int范围之外,会出错
&&&& & long l3=L; //正确
3.浮点类型:&&&&&&* 浮点型默认为double,所以float类型声明时后面需要加f/F ; 或者用强制转换符。
& Float& f1=(float)0.1;
& Float& f2=0.1f;
& 两者的区别:f1 为八个字节的double类型,强制转换为四个字节的float类型。
&&&&&&&&&&&&&&&&&&& && f2 本身就是四个字节的float类型。
4.字符型 (char)
& 每个字符占两个字节;值放在“”里;
二、基本数据类型转换:
&&& 各数据类型按容量大小(表数范围大小)由小到大排列为:
&&&& Byte, short, char& ——int ——long——float——double
& 1.转换时遵循的原则:
&&&& 1)容量小的类型自动转换为容量的类型;
&&&&&2)容量大的类型转换为容量小的类型时,要加强制转换符;
&&& 3)byte,short,char之间不会互相转换,并且三者在计算时首先转换为int类型;
&&& 4)实数常量默认为double类型, 整数常量默认为int类型;
&&& *& 字符型 为什么也能和 整形、浮点型进行运算呢?&
&&&&& &答:& 字符型在机器内部也是数字。进行计算时,先获得字符的ASCK码,然后再进行计算。
&2.转换举例:&
&&&& Int i1=123;
&&&& Int i2=456;
&&&& Double d1 = (i1+i2)*1.2&&&&&&&&& & &//容量小的类型自动转换为容量大的类型
&&&& Float f1 = (float) (i1+i2)*1.2&& & &//容量大的类型转换为小容量的类型时,需要加上强制转换符
&&&&& Byte b1=1;
&&& & Byte b2=2;
&&& & Byte b3=(byte)(b1+b2);&&&&&&& //byte,short,char在计算时首先转换为int,大容量(int)转换为小容量的类型(byte)时要加强制转换符
阅读(19372)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'JAVA基本数据类型及之间的转换',
blogAbstract:'&
一、数据类型
&&& 1.布尔型(boolean) :true/false,不可以以0或非0的数字代替;不能进行数据之间的转换。
&&& 2.整数类型',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:2,
publishTime:2,
permalink:'blog/static/',
commentCount:8,
mainCommentCount:6,
recommendCount:6,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Java八种基本数据类型_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java八种基本数据类型
你可能喜欢探索java基本类型和包装类型的使用运算符==进行比较的底层细节
&& 而然某项目经理质疑的是一个包装对象和一个基本类型的值进行比较,究竟是比较值还是比较引用。而某项目经理则认为是比较引用,以下做法是错误的。但事实上是比较值,这里jdk编译后的是否对我们的对象和值的表的语句做了处理,最后都是比较基本类型的值?一下为讨论的代码,原出于hibernate的query通过unique方法取出一个Object值,实际上该值实际为Integer实例,所以使用一下类似测试代码先转换再比较的代码作为我们这次探索的问题代码。
测试比较代码:
public class TestIntegerCompare{&
&&& public static void main(String[] args) {&
&&&&&&& Object obj = new Integer(1024);&
&&&&&&& if(Integer.valueOf(obj.toString())==1024){&
&&&&&&&&&&& System.out.println(&bing go! Integer.valueOf(obj.toString())==1024 is true&);&
&&&&&&& }&
jdk 1.6.34 java.lang.Integer.class:
public static Integer valueOf(String s, int radix) throws NumberFormatException {&
&&& return Integer.valueOf(parseInt(s,radix));&
public static Integer valueOf(String s) throws NumberFormatException {&
&&& return Integer.valueOf(parseInt(s, 10));&
public static Integer valueOf(int i) {&
&&& assert IntegerCache.high &= 127;&
&&& if (i &= IntegerCache.low && i &= IntegerCache.high)&
&&&&&&&& return IntegerCache.cache[i + (-IntegerCache.low)];&
&&&& return new Integer(i);&
public static int parseInt(String s) throws NumberFormatException {&
&&& return parseInt(s,10);&
&public static int parseInt(String s, int radix)&
&&&&&&&&&&&&&&& throws NumberFormatException&
//省略一系列参数检测&
&&&&&&& int result = 0;&
&&&&&&& boolean negative =&
&&&&&&& int i = 0, len = s.length();&
&&&&&&& int limit = -Integer.MAX_VALUE;&
&&&&&&& if (len & 0) {&
&&&&&&&&&&& char firstChar = s.charAt(0);&
&&&&&&&&&&& if (firstChar & '0') { // Possible leading &+& or &-&&
&&&&&&&&&&&&&&& if (firstChar == '-') {&
&&&&&&&&&&&&&&&&&&& negative =&
&&&&&&&&&&&&&&&&&&& limit = Integer.MIN_VALUE;&
&&&&&&&&&&&&&&& } else if (firstChar != '+')&
&&&&&&&&&&&&&&&&&&& throw NumberFormatException.forInputString(s);&
&&&&&&&&&&&&&&& if (len == 1) // Cannot have lone &+& or &-&&
&&&&&&&&&&&&&&&&&&& throw NumberFormatException.forInputString(s);&
&&&&&&&&&&&&&&& i++;&
&&&&&&&&&&& }&
&&&&&&&&&&& multmin = limit /&
&&&&&&&&&&& while (i & len) {&
&&&&&&&&&&&&&&& // Accumulating negatively avoids surprises near MAX_VALUE&
&&&&&&&&&&&&&&& digit = Character.digit(s.charAt(i++),radix);&
&&&&&&&&&&&&&&& if (digit & 0) {&
&&&&&&&&&&&&&&&&&&& throw NumberFormatException.forInputString(s);&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& if (result & multmin) {&
&&&&&&&&&&&&&&&&&&& throw NumberFormatException.forInputString(s);&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& result *=&
&&&&&&&&&&&&&&& if (result & limit + digit) {&
&&&&&&&&&&&&&&&&&&& throw NumberFormatException.forInputString(s);&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&&&&&& result -=&
&&&&&&&&&&& }&
&&&&&&& } else {&
&&&&&&&&&&& throw NumberFormatException.forInputString(s);&
&&&&&&& }&
&&&&&&& return negative ? result : -&
&&&&&&&& 让我们运行测试代码可以看到测试代码if里面的语句块是可以运行的且输出文字的,但自此我们仍对一个对象和一个基本类型的值进行比较的过程存在疑问。究竟是编译后jdk将int值转换成了Integer实例再与实例Integer实例进行比较引用,还是反之呢。这个疑问让javap帮我们看个究竟,输入javap -v -l Test TestIntegerCompare.class,可以看到以下反编译的jvm指令的呈现。
&&&&&&& 从上述jvm指令中可以看出来,code 的标号15:确实是调用了valueOf方法解析字符串为Integer实例,但其后标号18:有调用了Integer实例的intValue()方法返回了该实例相应的int值,从而最后比较的实际是int和int进行比较,所以比较结果是
&&&&&&&&&& 通过上述分析可以确定 &包装对象==相应值& 这样的比较是可行的,但却不是推荐的。因为解析String实例为Integer实例,然后在去Integer实例里面去取的int值进行比较,在此Integer实例就多此一举了,还不如直接使用parseInt解析字符为相应的int值直接进行比较,节省创建一个Integer实例所浪费的资源。
ps:如上述解析有问题,还望各位资深专家前来指正。相关文章推荐
Java中的基本
基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。...
数据类型 大小 范围 默认值 byte(字节) 8 -128 - 127 0
shot(短整型) 16 -32768 - 32768 0
int(整型) 32 --214748...
软件测试人员遇到的第一节课就是如何有效的提交BUG,下面的文章不是专为软件测试人员所写,但是却是所有软件测试人员必读。在不同的公司对提交有效的BUG的标准不同、但是下面文章的内容却适合所有测试专业人员...
TimeOutError
1. 执行长时间的请求超时了,可以通过修改超时时间来解决。
2. 服务器提供的URL地址出错,和服务器交流确定服务器地址无误。
3. 手机网络信号差,约等于连接不上服务...
byte:字节 【取值范围:-】 占用1个字节,共8位
1GB = 1024MB
1MB = 1024KB
1KB = 1024B
通常大写B表示字节,即byt...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)相关文章推荐
Java语言是静态类型的
基本数据类型
在栈中进行分配
在堆中进行分配
基本类型之间的赋值是创建...
Java中的基本
基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。...
java基本数据类型:四类八种
数值型:整型
byte short int long
非数值:字符型
float double 布尔
这一系列打算慢慢地去接触源码,并且列出相关的题目,对于完全的初学者的话,我到时候会搜一套我认为比较好的培训机构的视频以及给些社区资料和相关博客咯。让我们一起开始思考,深入学习Java吧。这篇文章就数据...
八种基本数据类型如下:
byte(字节型)
short(短整型)
-2^16~2^16-1
int(整型)
他们分别是byte、short、int、long、float、double、char、boolean
其中byte、short、int、long都是表示整数的,只不过他们...
java标识符
java中的标识符是指名字,比如:变量名,类名,方法名等。。。
java中标识符的命名规则:
标识符可以由字母,数字,下划线(_)和美元符($)组成,但是不能以数字开头,并且字母...
java提供了一组基本数据类型,包括boolean, byte, char, short,
int, long, float, double, void. 同时,java也提供了这些类型的封装类,分...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 java的基本数据类型 的文章

 

随机推荐