一、数据类型
1.1数据存储:
1. 程序:可执行文件,命令的集合,属于静态,一般存在硬盘中。
进程:正在执行的文件,属于动态,才存在运行内存中。
2.存储:正数存原码,负数存补码。
1.2数据分布:
1.数据类型分为基本数据类型和引用数据类型
基本数据类型:数值型{整数类型(byte,short,int,long),浮点类型(float,double)},字符型(char),布尔型(boolean)。
引用数据类型:类,接口,数组。
1.3整数型:long声明:数值后面要加L/l,否则默认int值,注:long.MAX_VALUE:查询long最大容量,其余类似。
八进制数值前加0,十六进制数值前面加0x。
浮点型:整数保存是二进制,浮点数保存是科学计数法。
float声明值后加F/f,double声明值后加D/d。
int和double声明时可以省略。
字符型:只能由一个字符。字符可以转换为对应的整数ASCII。
转义符:把有意义字符转换为无意义字符。
制表符:\t
换行符:\n
布尔型:只有true和false;
类型转换:八种基本类型出了布尔型都可以进行转换。
自动类型转换:低精度到高精度。 eg:byte到int。
强制类型转换:高精度到低精度。 eg:int到byte。int i1 = 1; byte b1 = (byte)i1;
自动类型转换:byte -> short/char -> int -> long -> float -> double
注:整数保存二进制,而浮点数保存科学及算法,所以float虽然是32位但远大于long。所以为自动转换。
混合运算:结果类型为当前运算中最大的类型。 注:当byte、short、char、int四种类型中,任意几种类型运算,结果都是int
2.变量
1.常量:字面量/直接量。
整数默认int,小数默认double。
final修饰称为常量,值不能更改。 eg:final int i = 20;
2.变量:
全局变量:
全局 : 允许在类外创建变量,和类同级别,所有类都可以直接访问这个变量,不需要二次引用
所谓二次引用,就是指 没有使用 . 操作符 xxx.xxx
而在java中类之外是不允许写变量的,但是可以把一个变量的访问权限设置为public,然后通过类名进行引用调用即可
全局的缺点 就是命名冲突问题
变量声明:变量不能先使用,后声明。
变量分为三大类:局部变量、静态变量、成员变量。
局部变量:在方法中声明的变量。只能在该方法中被使用。可直接通过名字调用,没有默认值,必须赋值。
静态变量:使用static声明的变量,和方法是平级关系。需要通过类名,静态变量名才能调用,在当前类中调用可以省略类名。
默认值:整数默认是 0,小数默认是0.0,布尔默认是false,字符型默认 \u0000,引用类型默认 null。
成员变量:在类体中没有使用static声明的变量,和方法是平级关系(在方法外)。需要通过对象引用成员变量才能调用。
3.运算符
1.不要判断小数是否相等。
优先级:单目>双目>三目(三元)
2.^:位异或,两边不一样,为true。
~:按位非,二进制取非
>>:右移运算符(符号位不变,向右移动一次,除以2)
如果是正数,左边补0(符号位之后补0),如果是负数,左边补1
<<:左移运算符(……)
正负数都补0
>>>:右移运算符(不考虑符号位,不管正负数,符号位之前,只补0)
面试:&:两边都是数字,会进行运算。
运算方式:先转换为对应的二进制,每位进行比较,都是1取1,否者取0
&&:短路与,得到结果就停止。