一、关键字和标识符
二、变量
1.java中变量按照数据类型来分类:基本数据类型 和 引用数据类型
>基本数据类型:
整形:byte(8bit) short int(默认类型) long
浮点型:float double(默认类型)
字符型:char(‘ ‘)
布尔类型:boolean (只能取值true或false,不能取null)
补充:按照变量在类中的位置不同:成员变量 VS局部变量
2.进制
十进制 二进制 八进制 十六进制
二进制:计算机底层都是用二进制来存储和计算。
>四种进制转换。
3.变量运算:
a.自动类型转换:容量小的数据类型自动转换为容量大的数据类型。
short s = 12;
int i = s+2;
注意:byte short char 之间做运算,结果为int类型
b.强制类型转换:使用(数据类型)实现强转。
doubel d =10.5;
int i=(int)d+2;
三、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 算术运算符 赋值运算符 比较运算符(关系运算符) 逻辑运算符 位运算符 三元运算符
1.算术运算符:
注意:
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x=3510;x=x/1000*1000; x的结果是?3000
“+”除字符串相加功能外,还能把非字符串转换成字符串.例如:
System.out.println("5+5="+5+5); //打印结果是?5+5=55
System.out.println("5+5="+(5+5));//打印结果是?5+5=10
以下二者的区别:
System.out.println(‘*‘ + ‘\t‘ +‘*‘);93
System.out.println("*" + ‘\t‘ +‘*‘);* *
2.赋值运算符:
符号:= 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
支持连续赋值。 扩展赋值运算符: +=, -=, *=, /=, %=
思考1: short s = 3;
s=s+2; ①
s+=2; ②
①和②有什么区别?
a+=b --> a=(a.Type)a+b;//返回的是a类型
a=a+b --> a=a+b;//返回类型是a类型与b类型中的最高类型.
1、对于同样类型的a,b来说
两个式子执行的结果确实没有什么区别。但是从编译的角度看吧,a+=b;执行的时候效率高。
2、对于不同类型的a,b来说
2.1 不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,记住两点:
一、运算过程中,低精度的类型向高精度类型转换。
二、如果将高精度的数值赋值给低精度类型变量,则必须要进行显性的强制转换。
2.2 对于a+=b;这个式子,要明确的一点是,+=运算中,结合了强制类型转换的功能,因此,不会出现编译错误;而对于a=a+b;这个式子,因为是简单的运算,没有类型转换,在编译过程中会报错,代码如下:
public class Test{ public Test(){ int a = 5; char b = 3; b+=a;//编译通过 b=a+b;//编译出错 } public static void main(String[] args){ Test t = new Test(); } }
要想改正上面的错误,只要像这样写:
public class Test{ public Test(){ int a = 5; char b = 3; b+=a; b=(char)(a+b);//编译通过 } public static void main(String[] args){ Test t = new Test(); } }
因此,总的来说,a=a+b;和a+=b;并不是任何时候都等价,也要分情况的。
3.比较运算符(关系运算符)
比较运算符的结果都是boolean型,也就是要么是true,要么是false。 比较运算符“==”不能误写成“=” 。
4.逻辑运算符
5.位运算符
6.三元运算符