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)的更多相关文章

  1. Java语法细节 - 可见性

    目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...

  2. Java语法细节 - synchronized和volatile

    目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...

  3. Java语法细节 - 内存和枚举

    目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...

  4. Java语法细节(2)

    1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...

  5. Java语法细节 - try_finally和set相关

    目录 try-catch-finally的关系 TreeSet和HashSet的实现原理和区别 BigDecimal中的一些坑 当BigDecimal在HashSet/HashMap和TreeSet/ ...

  6. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  7. java优化细节记录

    此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...

  8. 【Java】这 35 个 Java 代码优化细节!

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

  9. Java语法

    java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...

随机推荐

  1. android 基本知识

    307966990 lyd@itcast.com 13716040037 李印东 东东 通信技术: 1G 模拟制式 语音通话. 2G GSM, CDMA 收发短信和邮件. 2.5G GPRS, EDG ...

  2. 数据库事务 及ACID

    数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永 ...

  3. R中将list类型数据转换成data.frame型

    例如将如下数据转换成data.frame型: l <- replicate( 5, list(sample(letters, 4)), simplify = FALSE ) => 用unl ...

  4. eclipse 自动补全

    在使用过程中问题又来了, 当按下空格键时会把第一行的内容自动上屏,其实很多时候就是想输一个空格而已. 解决办法: 取消之前的修改: "Auto Activation triggers for ...

  5. gulp构建前端开发环境

    1.gulp环境的安装 首先确保你已经正确安装了nodejs环境.然后以全局方式安装gulp: npm install -g gulp 2.建立文件夹 mkdir item 3.初始化项目: npm ...

  6. angularJs中的隐藏和显示

    <!DOCTYPE html> <html ng-app="a2_12"> <head> <meta charset="utf- ...

  7. Delphi 连接mysql 的功能, 去除乱码, 需要设置字符集

    vDataBaseName := aConfiginiFile.ReadString('DataBaseConfig', 'DataBase', CH_IPC712Db); vServer := aC ...

  8. Flask-SQLAlchemy 学习总结

    初始化和配置 ORM(Object Relational Mapper) 对象关系映射.指将面对对象得方法映射到数据库中的关系对象中.Flask-SQLAlchemy是一个Flask扩展,能够支持多种 ...

  9. poj 1753 Flip Game

    点击打开链接 Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 25674   Accepted: 1109 ...

  10. (转)ASP.NET MVC4 部署错误 Could not load file or assembly

    使用VS2010 测试ASP.NET MVC 4 Web API 在部署时候遇到了问题,发现园友有解决的方式,因此转载.         我的解决方式有两种:使用VS2015将VS2010的项目重新发 ...