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),布布扣,bubuko.com

时间: 07-27

java中变量运算细节 (2)的相关文章

Java中String类型细节

Java中String类型细节 一 . String两种初始化方式 1 . String str1= "abc";//String类特有的创建字符对象的方式,更高效 在字符串缓冲区中检测"abc"是否存在 若存在则不重复创建,将地址赋值给str1. 若不存在,则在字符串缓冲区中创建对象并赋地址给str1. 2 . String str1= new String( "abc"); //构造函数初始化  或者  char [] ch={'a','b'

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

这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西.第二个主题,就是讨论一下对象引用变量的一个注意点. 如果你对命名规则很熟啦,就直接看第二个内容吧.(上边的图稍微有点顺序紊乱啊) 一.java中变量的命名规则 大多数语言的命名规则是相似的,只有一些微小的差别. 变量的第一个位置,可以是字母,下划线(_),美元符($) (这个在c/c++,python中是不行的)(注意:不能是数字哦,一想就知道啦为什仫) 其他的位置可以是数字,字母,下划线 不能使用java中的关键字 j

Java中的小细节

1.访问权限 1.private 只有本类才能被访问 2.default(默认)只有本包中才能被访问 3.protected只有子类和本包才能被访问,可以跨包. 4.public 可以在所有类中被访问 2.Java命名规范 1.类.所有单词首字母大写 2.方法.第一个单词的首字母小写 3.属性.第一个单词的首字母小写 4.包名.所有单词小写 5.常量.所有单词的字母大写.final定义的 Java中的小细节,码迷,mamicode.com

Java基础---Java中变量使用规则(六)

Java中变量的使用规则 不得不接受的变量小脾气: 1.Java 中的变量需要先声明后使用 2.变量使用时,可以声明变量的同时进行初始化,也可以先声明后赋值 3.变量中每次只能赋一个值,但可以修改多次 4.main 方法中定义的变量必须先赋值,然后才能输出 关于 String :表示变量中存储的数据的类型为字符串,后面小节中会详细讲到,小小期待吧~~ 代码: public class HelloWorld{    public static void main(String[] args) { 

java中变量、对象的存储

内容转自网上看到的一篇博文,讲的很不错. 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈数据可以共 享,详见第3点.堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要 在运行时动态分配

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

来源:http://www.imooc.com/code/1242 不得不接受的变量小脾气: 1.Java 中的变量需要先声明后使用 2.变量使用时,可以声明变量的同时进行初始化,也可以先声明后赋值 3.变量中每次只能赋一个值,但可以修改多次 4.main 方法中定义的变量必须先赋值,然后才能输出 关于 String :表示变量中存储的数据的类型为字符串,后面小节中会详细讲到,小小期待吧~~ 任务 大家来找茬! 你能找出在编辑器中第 3 行的错误吗? 1 public class HelloWo

java中变量使用的总结

java中整数默认为int,小数默认为double. float n5=1.3; 这个句子就会报错,应该修改成这样float n5=1.3f; 八大基本类型 变量类型 位数 范围 备注 Byte 8位 -27-------27-1 带符号整数 Short 16位 -215-------215-1 带符号整数 Int 32位 -231-------231-1 带符号整数 Long 64位 -263------263-1 带符号整数 Char 16位 0-----216-1 无符号整数 Float

java中变量的作用域

对于java中的变量来说, 变量大致可以分为全局变量和局部变量, 全局变量的作用域可以说是贯穿整个类,能被同类中的其他函数及函数内的if,while,for等使用,不用初始化, 或者说是不用程序员初始化,有默认初始化值: 局部变量是定义在函数内部的变量,只能在本函数内使用,不能被同类中其他函数使用, 必须自己初始化,系统不给出默认初始化. 写这个的目的是在看和做一些项目的时候总是先声明,然后再在使用的时候指向new, 比如先声明了一个对象User u=null:等到又一个if语句使用的时候再在{

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

java中运算都是操作符号,那么整形默认为int,双精度默认为都double 整数 看案例: 无法编译通过:操作默认为int,接受结果为int,所以这个地方编译无法通过,所以需要强制类型转换 再看案例: 再看双精度: 这种是可以的,再看 这也是可以的,看结果: 精度损失.再看 结果: 再看多种案例: 看结果: 再看案例 : 看结果 那么会什么会出现这么多问题呢,原因 在数据结果,转为二进制的时候,比如0.3  转换为二进制如这么转换的 0.3*2->0.6->0.6*2>1.2   二进