Java的第三天–(变量与运算符)
Java变量
变量是程序中最基本的存储单元,程序执行中数值是可变的。
本质上,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。
变量是通过使用变量名来访问这块区域的。
要素:变量名,变量类型。
语法:
【修饰符】 type varName【=value】【,varName【=value】…】
数据类型
定义:明确了具体类型,使其在内存中分配不同大小合理的空间
为什么要明确数据类型?
Java语言是一种强数据类型语言,每个数据必须指定其类型,使JVM为其分配空间。
分类:
基本数据类型(只有八种,便于使用)
引用数据类型(除了基本类型之外的都为引用类型)
基本数据类型:
整型:
默认为int型,1字节 = 8位(bit)
**byte:**1字节
**short:**2字节
**int:**4字节
**long:**8字节(声明long型时需要在后面加上“l”或“L”)
二进制:在数前加上0B或0b;
八进制:在数前加上0;
十六进制:在数前加上0X或0x;
示例:
//定义long型
long a = 2000000L;
//0b与0B开头的都是二进制
int u = 0b10;
//0开头的都是八进制
int o = 010;
//0x与0X开头的都是十六进制
int p = 0xbd;
浮点型:
默认为double型
**float:**4字节(声明float型时需要在后面加上“f”或“F”)
**double:**8字节
示例:
//定义float型
float b = 0.2F
//定义double型
double c = 0.032
布尔型:(boolean)
其逻辑值只能是true或false表示;
字符型:
**char:**2字节
注意:
字符型是需要用单引号括起来的单个字符;
为了让计算机识别字符,人定义了编码表;在不同的编码表上所对应的也不相同;最早为ASCII(只能表示英文)。
char进行算术运算时,将使用字符所对应的编码表中的整数进行算术运算。
基本数据类型的转换:
8中基本数据类型中除了boolean型,其他类型都可以相互转换;
数据储存容量大小顺序:(由小到大)
byte,short,char < int < long < float < double
默认转换:
容量小的类型默认转换为容量大的类型;
强制转换:
容量大的类型转换为容量小的类型
注意:
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;
示例:
/**
* 数据类型转换
*/
/*
默认转换
容量小的可以自动转换为容量大的
容量大的可以包含下容量小的
参与混合混合运算时,小容量会自动转为大容量
*/
int a = 10;
long b = a;
float f = b;
float f1 = a+b;
/*
强制类型转换
容量大的转为容量小的
会产生的问题有:
溢出:小的装不下大的
精度降低
*/
int x = 258;
//强制将int型的x转换为byte型的y
byte y = (byte)x;
float m = 10.5f;
long n = (long)m;
运算符
Java 语言支持的运算符有:
算术运算符: +,-,*,/,%,++,–
关系(比较)运算符: >,<,>=,<=,==,!=
逻辑运算符: !(逻辑非),&(逻辑与) , |(逻辑或) , &&(短路与),||(短路或),^(逻辑异或)
赋值运算符: = ,+ =,- =,* =,/ =,%=
条件运算符:(条件表达式)?a :b ,当条件表达式的结果为true时,输出a;结果为false时,输出b
位运算符:<<,>>,>>>>,&,|,^,~
注意:
&(逻辑与)与&&(短路与)的区别:
& 遇到第一个false后面的表达式继续执行;
&&遇到第一个false后就短路了,后面的表达式也就不执行了.
|(逻辑或)与||(短路或)的区别:
| 遇到第一个true后,后面的表达式还会执行;
|| 遇到第一个true后就会短路,后面的表达式也将不会执行;
示例:
// &&(短路与) 遇到第一个false之后 &&后面的不进行运算
/*int a = 1;
int b = 2;
int c = 3;
System.out.println(a>b && ++a<c); // false && true = false
System.out.println(a);// a==1
System.out.println(a<b && ++a>c); // true && false = false
System.out.println(a);// a==2*/
// ||(短路或) 遇到第一个true之后 ||后面的不进行运算
int a = 1;
int b = 2;
int c = 3;
System.out.println(a<b || ++a>c); // true || false = true
System.out.println(a);// a==1
System.out.println(a>b || ++a<c); // false || true = true
System.out.println(a);// a==2