java中变量运算细节 (2)
/*
目的:测试变量的运算方式
结果:byte a, b, c;
a = b+c;
或者 a = b+10
形如这种形式的算式, 等式的右边的运算结果默认的都是int型的!因为等式右边有变量, 编译器无法确定变量的内容
,因为它是变量!所以相加之后得到的int再默认强制转换成byte可能会损失精度.
而形如 a=4+5;这种常量的赋值,虽然 4 和 5 都默认的是int, 但都是常量,它们的值是确定的!所以如果 4+5的值超过了
byte的最大值的范围, 那就会编译出错!(也就是等式右边都是常量运算,编译器是可以判断的!) 形如 byte a = 9, b=12;
或者 a+=b; a+=10; 这样的赋值运算编译器底层都是做了强制转换运算的!
也就是说 a+=b 等价于 a = (byte)(a+b); 而不是 a = a+b;
*/ public class VarDemo{
public static void main(String args[]){
StringBuffer str = new StringBuffer("a");
String newStr = new String(str.append(1123));
System.out.println(str.append(new myClass())); //这样写编译就是对的了!why?
int a, b, c;
b = 10;
c = 14;
a = b+c; int a1;
byte b1, c1;
b1 = Byte.MAX_VALUE;
c1 = 34;
a1 = b1+c1;
System.out.println(b1 + " " + a1); /*
这样写是编译错的!why?
byte a3;
byte b3;
b3 = 12;
a3 = b3 + 6;
System.out.println(b3 + " " + a3);
*/ /*
这样写是编译却是对的!why?
byte a3=4;
byte b3;
b3 = 12;
a3 += b3;
System.out.println(b3 + " " + a3);
*/ /*
这样写编译是错的!why?
byte av=100+200;
*/ /*
这样写编译就是对的了!why?
byte a1;
a1=4+5;
*/ /*
这样写编译是错的!why?
byte a1;
byte b1, c1;
b1=Byte.MAX_VALUE;
c1=34;
a1=b1+c1;
*/ /*
这样写是编译错的!why?
short a2, b2, c2;
b2=10;
c2=34;
a2=b2+c2;
*/
}
} class myClass{
int x;
String str;
public myClass(){
x=4234;
str = new String("hujunzheng");
} public String toString(){
return " " + x + " " + str;
}
}
java中变量运算细节 (2)的更多相关文章
- Java中String类型细节
Java中String类型细节 一 . String两种初始化方式 1 . String str1= “abc”;//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测”abc”是否 ...
- Java中的泛型 - 细节篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的泛型 - 细节篇>,希望对大家有帮助,谢谢 细心的观众朋友们可能发现了,现在的标题不再是入门篇,而是各种详细篇,细节篇: 是因为之 ...
- java中变量命名和引用变量的一个坑
这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西.第二个主题,就是讨论一下对象引用变量的一个注意点.
- 慕课网-安卓工程师初养成-2-7 Java中变量的使用规则
来源:http://www.imooc.com/code/1242 不得不接受的变量小脾气: 1.Java 中的变量需要先声明后使用 2.变量使用时,可以声明变量的同时进行初始化,也可以先声明后赋值 ...
- java中位运算
1byte(字节)=8bit(比特) 1 0 0 0 0 0 0 0 1 2进制的1的原码 反码 补码 0 0 0 0 0 0 0 0 2进制的0的原码 反码 补码 -1 1 0 0 0 0 ...
- java中 & ^ ~ 的运算
java运算符 与(&).非(~).或(|).异或(^) 最近看HashMap源码,遇到了这样一段代码: 1 static final int hash(Object key) { 2 i ...
- java中变量使用的总结
java中整数默认为int,小数默认为double. float n5=1.3; 这个句子就会报错,应该修改成这样float n5=1.3f; 八大基本类型 变量类型 位数 范围 备注 Byte 8位 ...
- Java中变量的使用规则
不得不接受的变量小脾气: 1.Java 中的变量需要先声明后使用 2.变量使用时,可以声明变量的同时进行初始化 , 也可以先声明后赋值 3.变量中每次只能赋一个值,但可以修改多次 4.main 方法中 ...
- java中的运算,+-* /% | ^ &
java中运算都是操作符号,那么整形默认为int,双精度默认为都double 整数 看案例: 无法编译通过:操作默认为int,接受结果为int,所以这个地方编译无法通过,所以需要强制类型转换 再看案例 ...
随机推荐
- Java HashMap的死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造 成Race Condition,从而导致死循环.这个事情我4 ...
- jquery事件委托遇到的小坑记录
<script type="text/javascript" src="../../lib/jquery-1.11.2.min.js"></s ...
- WordPress访问打开速度很慢的几种解决方法
最近WordPress网站访问特别的慢,有时间要加载一分钟才能完全打开,最初怀疑是服务器的问题,经过多方测试,还是没找到原因.后来,通过工具测出浏览器一直在加载fonts.googleapis.com ...
- java-注解
概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据与程序元素(类.方法.成员变量等)进行关联.更通俗的意思是为程序 ...
- .NET相关操作其他文件的小程序(系列文章)
平时自诩为使用.NET做开发,但是实际上从一开始学习C#直到现在除了做个几个不登大雅之堂的小网站,做过几个winform程序和几个控制台应用程序,真的没有踏踏实实地用.NET开发过某些属于自己的东西. ...
- HTTP方法:GET对比POST
http://blog.csdn.net/zhenyu5211314/article/details/17067817
- 关于Android的背景色配色小结
三基色原理:三基色是指红,绿,蓝三色,人眼对红.绿.蓝最为敏感,大多数的颜色可以通过红.绿.蓝三色按照不同的比例合成产生.同样绝大多数单色光也可以分解成红绿蓝三种色光.这是色度学的最基本原理,即三基色 ...
- linux指令之文件的创建、查询、修改
mkdir(make directory) 功能:创建目录 案例: mkdir test 点评:将创建一个目录名为test的目录 rmdir(remove directory) 功能:删除目录 案例: ...
- SQLSERVER2014中的新功能
SQLSERVER2014中的新功能 转载自:http://blog.csdn.net/maco_wang/article/details/22701087 博客人物:maco_wang SQLSER ...
- 基于Selenium的自动化测试 C#版(1)
引子 我一直在思考,作为一个架构师,如何简化程序员的工作,减轻运维的压力,减低测试的要求.然后做了很多很多的尝试.最开始的公司培训文档,一键发布工具,Nuget版本管理,VS项目模板,SOA统一服务提 ...