/*
目的:测试变量的运算方式
结果: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)的更多相关文章

  1. Java中String类型细节

    Java中String类型细节 一 . String两种初始化方式 1 . String str1= “abc”;//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测”abc”是否 ...

  2. Java中的泛型 - 细节篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的泛型 - 细节篇>,希望对大家有帮助,谢谢 细心的观众朋友们可能发现了,现在的标题不再是入门篇,而是各种详细篇,细节篇: 是因为之 ...

  3. java中变量命名和引用变量的一个坑

    这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西.第二个主题,就是讨论一下对象引用变量的一个注意点.

  4. 慕课网-安卓工程师初养成-2-7 Java中变量的使用规则

    来源:http://www.imooc.com/code/1242 不得不接受的变量小脾气: 1.Java 中的变量需要先声明后使用 2.变量使用时,可以声明变量的同时进行初始化,也可以先声明后赋值 ...

  5. 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 ...

  6. java中 & ^ ~ 的运算

    java运算符 与(&).非(~).或(|).异或(^)   最近看HashMap源码,遇到了这样一段代码: 1 static final int hash(Object key) { 2 i ...

  7. java中变量使用的总结

    java中整数默认为int,小数默认为double. float n5=1.3; 这个句子就会报错,应该修改成这样float n5=1.3f; 八大基本类型 变量类型 位数 范围 备注 Byte 8位 ...

  8. Java中变量的使用规则

    不得不接受的变量小脾气: 1.Java 中的变量需要先声明后使用 2.变量使用时,可以声明变量的同时进行初始化 , 也可以先声明后赋值 3.变量中每次只能赋一个值,但可以修改多次 4.main 方法中 ...

  9. java中的运算,+-* /% | ^ &

    java中运算都是操作符号,那么整形默认为int,双精度默认为都double 整数 看案例: 无法编译通过:操作默认为int,接受结果为int,所以这个地方编译无法通过,所以需要强制类型转换 再看案例 ...

随机推荐

  1. 使用HtmlAgilityPack解析Html(非常好用)

    /// <summary> /// 设计成一个exe,解决WebBrowser控件内存泄漏的问题. /// </summary> public partial class Ma ...

  2. VIM(四) C语言开发插件设置

    http://blog.csdn.net/guolb57/article/details/7013076

  3. 写字节流转换String 代码示例

    public void pushEmployee(EmpPushToTianFangRequest request){ try { StringWriter sw = new StringWriter ...

  4. iOS 7 UI Transition – Porting View Controller Layouts from iOS 6

    http://www.mobinett.com/2013/08/19/ios7-ui-transition-porting-view-controller-layouts-ios6/

  5. .NET相关操作其他文件的小程序(系列文章)

    平时自诩为使用.NET做开发,但是实际上从一开始学习C#直到现在除了做个几个不登大雅之堂的小网站,做过几个winform程序和几个控制台应用程序,真的没有踏踏实实地用.NET开发过某些属于自己的东西. ...

  6. 原创 Datareader 导出为csv文件方法

    DataReader 是游标只读数据, 如果是大数据导出,用Datatable 将耗费巨大内存资源.因为Datatable 其实就是内存中的一个数据表 代码如下 /// <summary> ...

  7. FSG报表定义导入

    Copying Report Objects From Another Database (FSG Transfer Program) Run the FSG Transfer program to ...

  8. Android Studio 无法启动模拟器的一种可能是你装的是Ghost版的系统

    我遇到的问题是,打开模拟器,进度条走到最后,突然出现了emulator error,然后模拟器就无法启动(不好意思当时没有截图).我是在Ghost版 win7系统下运行Android Studio 的 ...

  9. C#更改文件访问权限所有者(适用于各个Windows版本)

    前面也提到了,前段时间在做Online Judge系统,在正式上线前有几个比较老的版本,其中第一个版本使用ACL来控制权限以确保安全(但是这个版本完全建立在IIS上,所以这样做是没效果的),遇到了一些 ...

  10. 解决IE6下png图片透明度不显示的问题

    世界上最遥远的距离,不外乎我在搞前端,你却在用旧IE,现在随着XP要退休了,IE6的市场占有率应该也会逐步下滑.不过基于天朝人民的惰性以及企鹅微软的“扎篱笆”活动,做网站的朋友依旧不能忽视IE6的存在 ...