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程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...
随机推荐
- PLSQL_Oracle Table Lock表级锁的处理(案例)
20150506 Created By BaoXinjian
- HDU5221 Occupation 树链剖分
题意: 给出一棵树,root=1,树有点权,有一个人叫做M 有3种操作: 1 u v 把u到v路径上的所有点的点权都给M 2 u 若u的点权在M手上,拿走 3 u 把u为根的子树的所有点权都给M 每一 ...
- 安装Android SDK和ADT步骤和遇到的问题
http://894503895.diandian.com/post/2012-05-16/18695648 1.安装eclipse.下载地址:http://www.eclipse.org/downl ...
- (转)linux中fork()函数详解
一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同, ...
- 一起刑事案件法庭辩护 z
[案件地位] 这是一起各方争议很大的刑事案件.侦查机关曾将该案以非法拘禁罪立案侦查,以故意杀人罪移送检察机关审查起诉,公诉机关以非法拘禁形成故意伤害(致死)起诉,而法院最终以故意伤害罪判决,并且排除 ...
- Jenkins参数化构建
背景:每次构建项目时都需要去修改一下配置,然后保存,再去立即构建.这样修改容易修改出错误,影响到执行脚本,且每次都要去修改配置,不容易修改,操作也比较麻烦.所以决定将Jenkins修改为参数化构建.下 ...
- Servlet中读取参数的几种方式
为每一Servlet设置初始化参数 可以为每一个Servlet在对应的web.xml中的Servlet节点下编写初始化参数,格式如下: <init-param> <param-nam ...
- Node.js发送邮件
1.使用nodemailer模块 var nodemailer = require("nodemailer"); 2.代码如下 exports.send_email = funct ...
- 《Code Complete》ch.14 组织直线型的代码
WHAT? 最简单的控制流:即按照先后顺序放置语句与语句块 WHY? 尽管组织直线型的代码是一个简单的任务,但代码结构上的一些微妙之处还是会对代码质量.正确性.可读性和可维护性带来影响 HOW? 必须 ...
- WebsitePanel 2.1.0beta配置部分
到http://www.websitepanel.net/downloads/下载好单独安装包作为网站内容运行在IIS7.0上,配置applicationpool为localsystem Websit ...