1.关键字(单词在java中有特殊含义 所有的字母都是小写)
分为以下几类{
①定义:定义数据类型关键字
定义数据类型值关键字
定义程序的流程控制关键字
定义创建实例的关键字
定义包名
②修饰符:访问权限 以及类 函数 变量
③异常:异常处理关键字
④定义类之间关系的关键字
⑤其他修饰符关键字
}
2.标识符(自己命名的)
规则为:(主要是:见名知意)
26个英文字母大小写 0,9 以及_ $
不能数字开头
不能直接使用关键字和保留字
不能包含空格
规范:
包名:aaabbbbccc
类名 接口名:AaaaBbbb
方法名:aaaaBbbbbZzzz
常量名 AAAA_BBBB
3.变量:
3.1(占内存的存储空间+组成:数据类型 :变量名+声明后使用)
作用范围:在一对{}中有效
格式:数据类型 变量名 =初始化值
使用变量名进行访问内存中存储的变量
3.2变量转化:{
①自动转化
所占内存位数小的转化成容量位数占的大的
注意点:
第一。long 8字节 但可以自动转化成float 4字节
他们用科学计数法的方式不一样(底层存储结构不一样)。
long: 2^63-1
float: 3.4*10^38 > 2*8^38 = 2*2^3^38=2*2^114 > 2^63-1
所以3.4*10^38 > 2^62-1
原因:https://blog.csdn.net/shanshan1yi/article/details/48477119
第二。char 编码方式是ascii码 a 对应十进制数为97 A:65
第三。char(// 只能表示一个英文字符 可以是一个汉字 标点=符号 日文等 转义字符 2字节) short (2字节) byte (1字节) 但是两两(或者是和自身)进行运算 都自动转化默认的是 int
②强制转化 损失精度 留下后面低位的 丢失高位
}
3.3 string 引用数据类型的使用
运算只能是 (+) 连接运算 只能结果还是string类型
3.4在内存中的二进制存储结构:
byte 是 1个字节 占8位 范围 :2的8次方 256种组成
对于正数和负数 在计算机中的存储格式:
正数 (原码 反码 补码都一致) 负数是用补码的形式来存储的 (负数的反码=正数的二进制式子 除去第一位符号位外 全部取反 ) (负数补码=负数反码+1)
3.5变量的运算:
①算术运算符:
(注意点:
对于整型数a,b来说,取模运算或者求余运算的方法都是:
1.求 整数商: c = a/b;
2.计算模或者余数: r = a - c*b.
求模运算和求余运算在第一步不同:
取余运算在取c的值时,向0 方向舍入(fix()函数);
取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。
例如计算:-7 Mod 4
那么:a = -7;b = 4;
第一步:求整数商c,如进行求模运算c = -2(向负无穷方向舍入),求余c = -1(向0方向舍入);
第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r = -3。
归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。
当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。
另外各个环境下%运算符的含义不同,比如c/c++,java 为取余,而python则为取模。
java中//取模 也就是求余数 结果的符号取决于 被模数 也就是前面的那个数的符号
)
②赋值运算符:
s+=1;//这样不会改变s的类型 这样既可以实现运算 也不会改变s的数据类型
③逻辑运算符:(用于boolean 类型的运算)
&区别&&
&:不管一开始进行判断的项是true或者false 后者都会进行运算
&&:左端判断的项是false时 右端不会在进行判断
|区别|| :
同上
^逻辑异或运算 相同为false 不同为true
④位运算符:(用于数值型运算): << >> & | ~ ^
& 按位与
| 按位或:
|
可写算式如下:
1 2 3 4 |
|
(十进制为13)可见9|5=13
^ 按位异或 :按位异或运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
~取反:
1 |
|
结果为:
1 |
|
<<左移: 左移运算符“<<”是双目运算符。左移n位就是乘以2的n次方。 其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。移位是有限制的
>>右移: 同理可得
就是对于二进制进行运算
⑤三元运算符:
例子:abc中最大值:(a>b)?((a>c)?a:((b>c)?b:c) ):((b>c)?b:((c>a)?c:a))