/*
目的:测试变量的运算方式
结果: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. [Leetcode][JAVA] Path Sum I && II

    Path Sum Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that addi ...

  2. 搭建一个SSH项目框架的步骤

    1.导入jar包(38个) 2.配置文件 applicationContext,xml (beans.xml) (数据源.LocalSessionFactoryBean.事务管理器.事务通知.AOP切 ...

  3. Android 断点续传 思路

    大部分http服务器本身是可以支持range字段和断点续传的.另外 http返回206字段表示支持断点续传. 但是遇到支持的服务器的时候,就需要手动去处理断点续传的功能. 客户端在请求文件的时候添加 ...

  4. disconf安装部署

    1.client pom文件引入 <dependency> <groupId>com.baidu.disconf</groupId> <artifactId& ...

  5. 远程连接oracle服务器

    用户名 / 密码@172.16.16.203:1521/orcl

  6. mavan 命令行创建项目

    1)创建简单maven项目 mvn archetype:create -DgroupId=cn.everlook.myweb -DartifactId=myweb -DpackageName=cn.e ...

  7. 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  8. 设计模式之美:Null Object(空对象)

    索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Null Object 的示例实现. 意图 通过对缺失对象的封装,以提供默认无任何行为的对象替代品. Encapsulate t ...

  9. printf背后的故事

    printf背后的故事 说起编程语言,C语言大家再熟悉不过.说起最简单的代码,Helloworld更是众所周知.一条简单的printf语句便可以完成这个简单的功能,可是printf背后到底做了什么事情 ...

  10. Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重

    为了确保信息请求消息的到达率,微信服务器在没有及时收到响应消息(ResponseMessage)的情况下,会多次发送同一条请求消息(RequestMessage),包括MsgId等在内的所有文本内容都 ...