一,标识符
1.1标识符概述
标识符相当于一个名字,用来标识包名、类明、方法名、变量名、常量名等。
1.2标识符命名规则(易记错知识点):
1.2.1标识符由大小写字母(a-z,A-Z)、数字(0-9)、符号(_$) 组成,
1.2.2标识符第一个字符不能是数字。
1.2.3标识符不能是Java中的关键字。
1.2.4标识符区分字母大小写。
1.3标识符命名规范
1.3.1包名:多个单词组成时所有字母小写,例:aaabbbccc;
1.3.2类名:多个单词组成时,每个单词首字母大写,其他字母小写,例:AaaBbbCcc;
1.3.3变量名和方法名:多个单词组成时,第一个单词首字母小写,其他单词首字母大写,例:aaaBbbCcc;
1.3.4常量名:多个单词组成时,所有字母大写,单词间用下划线隔开,例:AAA_BBB_CCC.
*注:定义一个变量的时候要记得考虑该变量的和作用范围和生命周期。
例如:类的静态成员变量的生命周期和类相同,作用于这个类,
类的成员变量生命周期和该类的实例对象生命周期相同,作用于实例对象,
方法内局部变量生命周期和方法的生命周期相同,作用于这个方法内;
循环体内创建的变量与循环体生命周期相同,作用于该循环体内;
二,基本数据类型
2.1内存空间(容易混淆)
2.1.1数据类型 内存空间
byte boolean 8位(1字节)
short char 16位(2字节)
int float 32位(4字节)
long double 64位(8字节)
注:其中byte类型数据的取值范围是-128~127.(已犯过错,当时以为是0~255)
2.2类型转换
2.2.1隐式类型转换
数据类型按精度从低到高的顺序byte<short<int<long<float<double.
从低级类型向高级类型的转换,系统会自动执行。这种转换叫走隐式转换。
2.2.2类型转换规则
byte,short,char->int->long->float->double
多种数据类型数据混合运算时,类型自动从左向右转换,取混合运算中出现的最高的类型作为运算结果的类型;
注:其中byte,short,char三种数据混合运算时,结果会自动转换为int类型。
2.2.3强制类型转换
1)当把高精度的变量的值赋值给低精度的变量时,必须使用强制类型转换
语法如下:
(类型名)要转换的值
2)当执行强制类型转换时可能会导致精度损失。
3)注:当把整数赋值给整数型(byte,short,int,long)变量时,不可以超出这些变量的取值范围,否则必须进行强制类型转换
例如:byte b=(byte)234;
4) *注:待解决问题:为什么一下代码会报异常(不能将int型值赋值给byte变量)
byte b=5;
b=b+(byte)55;
*已解决,通过实践,发现原来byte型数据和byte数据进行运算所得结果也会自动提升为int型。
并同时发现short型数据与short型数据进行运算结果同样隐式转换为int型。
char型数据与char型数据运算结果也会隐式类型转换为int型。
当然这三种数据进行混合运算的结果也是int型的。
三,运算符
3.1运算符列举
赋值运算符 =
算数运算符 +、-、*、/、%
自增、自减运算符 ++、--
*注:a++:a先参与运算,后自增;++a:a先自增,后参与运算。
*注:自增、自减运算不涉及类型转换。
*注:而+=和-=运算会将结果数据自动强制转换为该运算符左边的数据类型。
*自己经常模糊的地方:
a=a++;该语句之后,a的值不变化。
a=++a;该语句之后,a的值会增1.
System.out.println(a++);的输出结果是a原来的值,不是a自增之后的值。
System.out.println(++a);的输出结果是a自增之后的值。
比较运算符 >、<、==、>=、<=、!=
逻辑运算符 |、||、&、&&、!
位运算符 |、&、^、~、>>、<<、>>>注:没有<<<运算符
*注:位运算是针对2进制格式的运算。(记住)
三元运算符 条件式?表达式1:表达式2
*注:逻辑运算比较运算的结果都是boolean型的值(true,false)。
3.2运算符优先级(大概的总结,具体细节比较模糊)
优先级有高到低排序:
自增、自减运算
算数运算
比较运算
逻辑运算
赋值运算
注:括号()的优先级在运算中应该是最高的。
最后补充一个自己经常不注意小知识点:转义字符在一个字符串中仍然会产生作用.
如:System.out.println("abc\r123");的输出结果如下:
abc
123
如果需要打印形如'\r'的字符需要在该字符前面再加一个'\'以进行重复转义。
例如System.out.println("abc\\r123");的输出结果是 abc\r123