JAVA语法细节(1)
来源:互联网 发布:java递归算法40例 编辑:程序博客网 时间:2024/05/29 13:38
1、变量的作用域
变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束。变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失。
2、变量的数据类型
变量基本数据类型:byte、short、int、long、float、double、char、boolean
byteb = 3;short s = 4000;int x = 12;long l = 123l; //定义的数据后需加‘l’代表定义的是long型变量float f = 2.3f; //定义的数据后需加‘f’代表定义的是float型变量double d = 3.4;char ch = '1';boolean bl = true;注意:Java中所有的常数默认都是int类型的数据,当定义byte x=9;时,编译器自动检查所赋值是否超出定义的类型范围,若没超出范围正常定义,若超出范围,编译器报错,“可能会损失精度”。
变量的自动类型转换:
byte x = 1, m = 2; //定义了一个byte型数据xint y = 2; //定义了一个int型数据yy = x+m; //自动将x+m的类型转换成int类型
变量的强制类型转换:
short a = 23;int b = 34;b = (int)a;
byte a = 1;byte b = 2;b = a+b;这种情况下编译器会报错,“可能会损失精度”。
int a = 1;int b = 2;b = a+b;这种情况,编译器不会报错,能正常运行。这是因为在Java中两个byte型的数据相加如果两个数据比较大结果可能会超过buyte型变量的所属范围,编译器会提示可能会损失精度。而两个int型的数据相加,若超出范围则向前进位,但只取低32位的有效数据,所以编译器不会报错。
4、运算符a++,++a,+=
(1) 当a++,和++a单独存在时,这两个运算语句的结果是相同的,都相当于a = a + 1;
(2)当a++或++a参与运算时,结果就不相同了
class VarDemo2 {public static void main(String[] args) {int a = 1, b, c;b = a++;c = ++a;System.out.println("a="+a+",b="+b+",c="+c);}}编译、运行后输出“a=3,b=1,c=3”,当a++参与运算时,b=a++这条语句执行时,内存中先开辟出一个临时变量存储a的值,然后运行a++,此时a的值为2,然后将a++的值(即开辟的临时变量的值)赋给b,运行c=++a;时,a自加一次,此时a的值为3,将a的值赋给c。
(3)+=是一个赋值运算符,
byte a = 9;a = a+1;此时编译器报错,提示“可能会损失精度”,原因如上文所述。
byte a = 9;a += 1;此时编译器不会报错,能正常运行,“+=”是一个赋值运算符,在赋值前会自动检查是否超出了作用范围。
0 0
- JAVA语法细节(1)
- Java语法细节(2)
- C++语法细节(1)
- java语言语法细节(自用)
- Java 语法细节(System.out)
- Java语法细节题
- Java语法的细节
- java基础知识--接口语法细节
- Java语法中微小细节
- 重温一下Java的一些语法细节
- Java语法上的一些细节
- java--基础语法的一些细节问题
- JAVA语法细节-中间变量缓存机制
- DTD 的语法细节:元素定义1
- objective-c 语法 细节(一)
- objective-c 语法 细节(二)
- [java语法]基本语法(1)
- java基础之细节(1)
- 第三题
- 控制textView的显示行数并且可以滚动
- 浅谈安卓蓝牙开发
- Java加载.class文件的几种方式
- 无限滑动的ViewPager
- JAVA语法细节(1)
- Python读写文件
- 【图像处理】数字图像处理软件(一)
- 智能指针
- Effective C++条款05解读: 了解C++默默编写并调用哪些函数
- LeetCode---(119)Pascal's Triangle II
- LeetCode 129 Sum Root to Leaf Numbers
- Mac配置Python开发环境并实现简单的字符串和整数拼接
- android源码之工厂设计模式