JAVA语法细节(1)
1、变量的作用域
变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束。变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失。
2、变量的数据类型
变量基本数据类型:byte、short、int、long、float、double、char、boolean
byte b = 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型数据x
int y = 2; //定义了一个int型数据y
y = x+m; //自动将x+m的类型转换成int类型
变量的强制类型转换:
short a = 23;
int b = 34;
b = (int)a;
3、使用变量时需注意一些情况
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;
此时编译器不会报错,能正常运行,“+=”是一个赋值运算符,在赋值前会自动检查是否超出了作用范围。
JAVA语法细节(1)的更多相关文章
- Java语法细节 - 可见性
目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...
- Java语法细节 - synchronized和volatile
目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...
- Java语法细节 - 内存和枚举
目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...
- Java语法细节(2)
1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...
- Java语法细节 - try_finally和set相关
目录 try-catch-finally的关系 TreeSet和HashSet的实现原理和区别 BigDecimal中的一些坑 当BigDecimal在HashSet/HashMap和TreeSet/ ...
- Java语法知识总结
一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...
- java优化细节记录
此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...
- 【Java】这 35 个 Java 代码优化细节!
前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...
- Java语法
java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...
随机推荐
- linux下sublime配置c++11编译环境
Tools->Build System->New Build System { "cmd": ["g++", "-std=c++11&qu ...
- POJ 1061 青蛙的约会(扩展欧几里得)
根据题意,两个青蛙跳到同一个点上才算是遇到了,所以有 (x+m*t) - (y+n*t) = p * ll; (t是跳的次数,ll是a青蛙跳的圈数跟b青蛙的圈数之差.整个就是路程差等于纬度线周长的整 ...
- HDU 1532 (Dinic算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题目大意: 就是由于下大雨的时候约翰的农场就会被雨水给淹没,无奈下约翰不得不修建水沟,而且是网络 ...
- nyoj 284 坦克大战 (优先队列)
题目链接:http://acm.nyist.net/JudgeOnline/status.php?pid=284 特殊数据: 5 5 BBEEY EEERB SSERB SSERB SSETB 7 非 ...
- JavaScript面向对象编程指南
引言 面向对象程序设计 基本数据类型.数组.循环及条件表达式 基本数据类型 函数 函数Function 预定义函数 变量的作用域 函数也是数据 闭包 对象 原型 原型 继承 原型链 浅拷贝与深拷贝 原 ...
- Centos 7 修改SSH端口号
注意!这里的Centos版本是7 step1 修改/etc/ssh/sshd_config vi /etc/ssh/sshd_config #Port 22 //这行去掉#号 Po ...
- mac eclipse 下安装subclipse
参考 http://www.cnblogs.com/yinxiangpei/articles/3859057.html 推荐安装homebrew 在安装javahl时注意版本对应 http://sub ...
- ubuntu网络配置相关知识(转载)
From:http://os.51cto.com/art/201003/188055.htm 文章主要介绍Ubuntu网络配置,希望能让Linux新手学习参考.更好使用Ubuntu.更有效的学习Ubu ...
- C++开源hash项目sparsehash
源码地址: https://github.com/sparsehash/sparsehash
- oracle常用的数据迁移方法
源地址:http://wenku.baidu.com/link?url=lI6UYpvDs_y8ku6DytEZLl4GSJjQ0GAGPvv8txrbRoQKgqzTCMAfBZI5mn9t-KQk ...