1、变量的概念
在程序运行期间,系统会为程序分配一块内存单元,用来存储各种类型的数据。系统分配的内存单元要使用一个标记符来标识,这种内存单元中的数据是可以更改的,所以叫变量。定义变量的标记符就是变量名,内存单元中所装载的数据就是变量值。
在所有系统中,java变量的取值都是一样的。
例如:inta=3,y;
y=a+3;
注:变量都必须声明和赋值后才能使用。变量名要简明且能清楚的表明变量的作用,通常第一个单词的首字母小写,其后单词的首字母大写:int ageOfStudent;//学生年龄。
为了日后更容易维护程序,变量的名称要让人一眼就能看出这个变量的作用:int ageOfStudent;//学生年龄。尽量使用有意义的变量名,且最好竭尽所能使用简短的英文单词。
数据类型 | 基本数据类型 | 数值型 | 整型 |
浮点型 | |||
字符型 | |||
布尔型 | |||
引用数据类型 | 类 | ||
接口 | |||
数组 |
3、基本数据类型之间的转换
①自动类型转换
基本类型按照取值范围大小排序:byte<short<char<int<long<float<double
取值范围小的基本数据类型赋值给一个取值范围大的基本数据类型时(两种类型彼此兼容),java编译器会自动转换。
例如:shortshort1=byte2;将byte型数据赋值给short型时可以自动转换,反之出错,无论数值多少。
当把一个在byte允许的取值范围的int型字面值赋值给一个byte类型的变量时,java编译器会自动完成。
例如:inta=20;
byte b=a;
②强制类型转换
强制类型转换可以将彼此不兼容的类型转换,或者取值范围大的数据类型转换为数值取值范围小的数据类型。通用格式:目标类型变量=(目标类型)值
例如:publicclass loveday02 {
public static void main(String[] args){
short a=200;
byte b=(byte)a;
System.out.println(b);
}
}
注:强制转换类型可能导致精度不准确。
关于类型的自动提升,java定义了若干适用于表达式的类型提升规则。
①所有byte型、short型和char型的值将被提升到int型。
②如果一个操作数是long型,计算结果就是long型。
③如果一个操作数是float型,计算结果就是float型。
④如果一个操作数是double型,计算结果就是double型。
变量的有效作用范围,就是定义变量的语句所属的那层大括号之间。
例如:1. public class loveday02_1 {
2. public static void main(String[] args){
3. int a=200;//作用范围在3-8行。
4. if (a>=200){
5. int b=20;//作用范围在5-7行。
6. System.out.println(b);
7. }
8. }
9. }
算术运算符 | |||
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +2 | 2 |
- | 负号 | a=2;-a | -2 |
+ | 加 | 2+2 | 4 |
- | 减 | 2-2 | 0 |
* | 乘 | 2*2 | 4 |
/ | 除 | 2/2 | 1 |
% | 取余 | 5/2 | 1 |
++ | 先自加1再运算 | a=2;b=++a; | a=3;b=3 |
++ | 先运算后自加1 | a=2;b=a++; | a=3;b=2 |
-- | 先自减1再运算 | a=2;b=--a; | a=1;b=1 |
-- | 先运算后自减1 | a=2;b=a--; | a=1;b=2 |
+ | 字符串相加 | "love"+"day" | "loveday" |
注:①如果对负数进行取余计算,可以把取余数的负号忽略不计,例如:5%-2=1;但被取余数是负数,结果就要有负号了,例如:-5%2=-1.
②除号“/”,整数除和小数除是有区别的,整数之间做除法时,只保留整数部分而舍弃小数部分,例如:int x=3510;x=x/1000*1000,结果x=3000。
赋值运算符 | |||
运算符 | 运算 | 范例 | 结果 |
= | 赋值 | a=2; | a=2; |
+= | 加等于 | a=2;a+=2(即a=a+2) | a=4; |
-= | 减等于 | a=2;a-=2; | a=0 |
*= | 乘等于 | a=2;a*=2 | a=4 |
/= | 除等于 | a=2;a/=2 | a=1 |
%= | 取余等于 | a=2;a%=2 | a=0 |
关系运算符用于比较操作数之间的关系,关系运算符总是产生一个布尔值:true或者false。当在两个字符(char)类型数据之间比较或者把字符类型数据和整数、浮点数类型比较时,java将字符的unicode值当做数值与其他数值相比较。
关系运算符 | |||
运算符 | 运算 | 范例 | 可运算类型 |
> | 大于 | true或false | 整数、浮点数、字符 |
< | 小于 | true或false | 整数、浮点数、字符 |
== | 等于 | true或false | 任意 |
!= | 不等于 | true或false | 任意 |
>= | 大于或等于 | true或false | 整数、浮点数、字符 |
<= | 小于或等于 | true或false | 整数、浮点数、字符 |
x= ? : 根据条件来返回一个值:a=布尔值表达式?为true时所赋的值:为false时所赋的值.
&&、&、||、|、!、^
①短路运算符&&:要求左右两个表达式都为true时,才返回true,如果左边第一个表达式为false时,它立刻就返回false。
例如:inta=3;boolean b=(a<2)&&(a<4);结果为false
②短路运算符||:要求左右两个表达式有一个为true时就返回true,如果左边第一个表达式为true时,它就立刻返回true。
例如:inta=3;boolean b=(a>2)&&(a<4);结果为true
③非短路运算符&:要求左右两个表达式都为true时才返回true,两个表达式都会计算。
④非短路运算符|:两个表达式有一个为true时就会返回true,两个表达式都会计算。
⑤^:要使一个表达式为true,必须有且只有一个操作数为true。
例如:(2<3)^(3<4):false
(2<3)^(3<1):true
⑥!:非,范例!true,结果为false。