一、标识符( identifier)
标识符的命名规范:
硬性要求:
1、必须以字母、_下划线、美元符
开
头
2
、
其
它
部
分
可
以
是
字
母
、
下
划
线
“
”
、
美
元
符
“
开头 2、其它部分可以是字母、下划线“_”、美元符“
开头2、其它部分可以是字母、下划线“”、美元符“”和数字的任意组合
3、大小写敏感,长度无限制
4、不可以是Java的关键字和保留字,这些是供内部使用的
常规建议:
1、驼峰命名
类名、接口名一般首字母都是大写,从第二个单词开始首字母都要大写
变量名、方法名一般第一个单词小写,从第二个单词开始首字母大写
2、见名知义
看见名字就知道是什么意思
一定不要用拼音或者中文起名字
举例: public class IdentifierDemo{
public static void main(String[] args){
//int a = 10;
//int $b = 20;
//int a+b = 30; 错误
//int a1 = 10;
//int 1b = 100;// 错误
//String a = "a";
//String A = "a";
//int public = 20; 错误
二、数据类型
基本数据类型:4类8种
整数类型:byte short int long 不同的整数类型表示不同的长度
byte:使用1个字节存储,所以数据范围是从-128~127
short:使用2个字节存储,所以数据范围是从-32768~32767
int:使用4个字节存储,所以数据范围是大概是正负21亿
long:使用8个字节存储,所以数据范围特别大,
注意:
1、整型类型默认类型是int
2、如果想定义一个变量为long类型的话,数字后面记得加上大写L,因为小写的l很容易和数字1混淆。
浮点类型:float double 表示方法:小数点 科学计数法
float:使用4个字节存储,小数点后面可以精确到7位小数
double:使用8个字节存储,小数点后面可以精确到float精度的2倍
注意:
1、浮点类型默认是double
2、浮点类型定义的时候记得在小数后面加上f
3、浮点类型并不能精确的表示一个数,它会有精度的丢失
字符类型:char
占用2个字节,使用字符类型的时候,使用''表示
注意:
char类型可以当成int类型来处理,字符对应的是ASCII码表中的值
布尔类型:boolean
占用1位,只有两个值,注意是小写的,true(真)或false(假)
引用数据类型:
类(class)
接口(interface)
数组(array)
举例: public class DataTypeDemo{
public static void main(String[] args){
//byte a = 128; 错误
//short b = 32768; 错误
//int a = 3111111111; 错误
//long a = 3111111111L;
/*float f1 = 3.3452321123123f;
float f2 = 3.345232112312321321f;
System.out.println(f1 == f2);*/
//字符类型
char a = 'B';
System.out.println(a == 66);
//字符串类型,一个字符序列
//String A = "AB";
//System.out.println(A);
char ch1 = '\t';//转义符
System.out.println("[" + ch1 + "]");
char ch2 = '\u0009';//转义符
System.out.println("[" + ch2 + "]");
System.out.println("\"abc\"");
int a1 = 10;
boolean flag = true;
System.out.println((a1 == 10) == flag);
}
}
三、运算符
算术运算符: +,-,,/,%,++,–
赋值运算符 =
一个=是赋值运算符,==是关系运算符
扩展赋值运算符:+=,-=,=,/=
关系运算符: >,<,>=,<=,==,!=
两边一般都不是具体的值,而是表达式
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
条件运算符 ?:
举例:
public class OperatorDemo{
public static void main(String[] args){
int a = 1;
int b = 2;
算术运算符
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
取整除,或者取商
System.out.println(a/b);
取余数,或者取模
System.out.println(a%b);
++:单目运算符,自加1操作,如果++在前面,先自加,再运算
如果++在后面,先运算,再自加
System.out.println(a++);
System.out.println(++a);
--:单目运算符,自减1操作,如果--在前面,先自减,再运算
如果--在后面,先运算,再自减
System.out.println(a--);
System.out.println(--a);
扩展运算符
int c = 1;
两种写法的结果是一样的,都是做+2操作
建议操作的时候都使用扩展运算符
c = c + 2;
c += 2;
基本数据类型的转换:byte类型的d,当它+20的时候,等号右边变成了int类型,左边是byte类型,
大范围向小范围转型需要强制转换 写法:(datatype)
byte d = 10;
d = d + 20;
d += 20;
System.out.println(d);
关系运算符
System.out.println(2>3);
System.out.println(2<3);
System.out.println(2>=3);
System.out.println(2<=3);
System.out.println(2==3);
System.out.println(2!=3);
逻辑运算符
&&:短路与,当第一个表达式是false,那么后面的表达式就不再执行了
||:短路或,当第一个表达式是true,那么后面的表达式就不再执行了
&:逻辑与,不管第一表达式返回true还是false,两边的表达式都会执行
|:逻辑或,不管第一表达式返回true还是false,两边的表达式都会执行
int aa = 1;
System.out.println(2 > 3 && 5 > aa++);
System.out.println(2 > 3 & 5 > aa++);
System.out.println(aa);
System.out.println(2 > 3 || 5 > 4);
System.out.println(!false);
System.out.println(!true);
位运算符
System.out.println(4 & 5);
System.out.println(4 | 5);
System.out.println(4 ^ 5);
移码 原码 反码 补码
System.out.println(~4);//-5 ??
位运算符:
>>:无符号右移,除2操作,移动几位就除以几个2
<<:无符号左移,乘2操作,移动几位就乘以几个2
>>>:有符号右移
把2变成16的最高效的方法是什么?
System.out.println(2 << 3);
System.out.println(16 >> 3);
条件运算符:三目运算
第一个表达式返回为true,则取?后的值,反之,取:后的值。
System.out.println( 2 < 3 ? 2 : 3);
System.out.println(false ? false : true ? false : true);
基本数据类型之间的转换:
1、一般写代码的时候,都是使用同一种数据类型,低位会向高位自动转换(隐式转换)
2、在同一种数据类型转换的时候,高位向低位不会自动转换,需要使用强制转换
3、强制转换会数据精度的丢失
byte x = 10;
x = (byte)(x + 20);
int y = x + 20;
System.out.println(x);
System.out.println((byte)270);