一、1.变量
存数的,代词,指代它所存的数
1.1 声明:变量名、变量类型;变量使用之前必须进行声明、如果多个变量类型一样,可以在一条语句中声明,中间用逗号隔开;如下:
Int a;//声明一个整型的变量,名为a
Int b,c,d;//声明了三个整型变量,名为bcd
1.2 命名:规则:只能由字母、数字、下划线、$组成,首字符不能以数字开头,Java大小写敏感,不能使用java保留字和关键字(如:int; class; public; package; project; if; for ),中文可以作为变量名,但不提倡;见名知意;驼峰命名法:一个单词小写,两个单词以上组成,从第二个首字母开始大写;帕斯卡命名法:所有首字母大写
1.3 初始化:第一次赋值,变量在使用之前必须初始化,在声明的同时赋值或先声明后赋值但确定在第一次使用该变量之前.静态成员变量必须在声明同时初始化或构造器中初始化.
1.4 使用:必须与数据类型匹配;对变量的使用就是对它所存的数的使用;变量在用之前必须声明并初始化
2.基本数据类型
2.1 有8种:int型(有范围):整数;long型:整数;double型:浮点;char (男和女);boolean (true 和 false),不同类型所占空间大小不同,1G=1024M;1M=1024KB;1KB=1024B;1B=8Bit(位)
2.2 Int:整型,4个字节,只能装整数,-21多亿---21多亿,-2147483648到2147483647
注意:1.整数直接量即直接写出来的整数,整数直接量默认为int类型,但不能超出范围,如果整数超出了int的表达范围则会出现编译错误
2.两个整数相除,会舍弃小数部分并非四舍五入;求百分比先乘100再除
3.运算时超出范围则发生溢出,溢出是需要避免的,其中运算超范围是溢出,数值超范围是编译错误
2.3 Long:长整形,8个字节,整数,范围很大,注意:数字后加L,若运算时有可能超出范围,在第一个数字后加L,system.currentTimeMillis()可以获取自1970-1-1零时到此时此刻的毫秒数
2.4 Double:8个字节,精度值是float的两倍,默认的浮点值为double型,float型需要在数字后加F,运算时有些数会有误差,精确运算场合可以使用BigaDecimal 需要精确运算小数时使用
2.5 Boolean:布尔型,1个字节,只能存储true和false
2.6 Char:字符型,2个字节,Unicod编码形式:0-65535
1.java中的char采用unicode编码格式,一个字符(char)对应一个码(int),表现形式是char字符,实质上是int码;
2.字符需放在单引号中,有且仅有一个
3.特殊符号需通过转义符进行转义,\ 转义符;\n表示回车;\r表示换行
4.字符类型事实上是一个16位无符号的整数,0---48,A--65,a---97
3.类型转换
a. 大类型赋值给小类型,需要进行强制类型转换(显示类型转换),程序编译才不会报错。
b. 小类型赋值给大类型,无需强制类型转换,也称为隐式类型转换。
注:
(1)boolean 类型不能和其他类型之间进行交换。
(2)char和byte\short相互转换时,无论大小,都要进行强制转换(一般不建议这样的转换)。
(3 )int类型转换为String类型
String类型转换为int类型
类型提升
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据。为了硬件上实现方便,不同的类型参与运算,提升为较大的类型,诸如 byte 和 short 这种低于4 个字节的类型, 会先提升成 int,再参与计算。
特例:byte和byte进行运算时,得到的是int类型。
二、运算符
1.逻辑运算符
逻辑与、逻辑或和逻辑非的所有表达式都必须为boolean表达式;
短路与: 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式。
短路或:如果左侧表达式值为 true,则表达式的整体的值一定是 true,无需计算右侧表达式。
2.移位运算
左移 <<:最左侧位不要了,最右侧补 0,左移一位相当于乘2;
右移 >>:最右侧位不要了,最左侧补符号位(正数补0, 负数补1),右移一位相当于除2;
无符号右移 >>>:最右侧位不要了,最左侧补 0;
没有无符号左移!
由于计算机计算移位效率高于计算乘除,当某个代码正好乘除 2 的N次方的时候可以用移位运算代替。
注:
负数是在原码的基础上,符号位不变,其余位按位取反得到反码,再加上1后得到补码,以补码的形式在内存中存储,所以负数的运算是用补码进行运算的。