第一章 变量
1.1变量的概述
变量是内存中装载数据的小空间。
1.2计算机存储单元
内存是程序运行时临时存储的场地。
计算机存储设备的最小信息单元为“位”,用“b”表示,也称为“比特位”
计算机最小的存储单元为“字节”,用“B”表示,字节是由8个比特位组成的。
- 1B = 8bit
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
- 1PB = 1024TB
1.3基本类型之4类8种
变量必须要有明确的类型,什么类型的变量装载什么类型的数据。
java的基本类型有4类,将这4类展开共有8种基本类型,以后编程用的就是这8种类型,并且其指定了范围。
double比float表示的小数点后的位数更多,因此更精确。
1.4常量与类型
java中默认的整数类型为int型。
当一个值超出int的范围,则需要在其后面添加“L”,否则就会报错,认为其超过了默认int的范围,例如12345678901L(小写“l”也行,但建议大写)。
java中默认的浮点类型是float类型。
若想写为float类型,数字后面加“F”
1.5定义变量
创建变量需要:类型、变量名、数据(例如:int m = 23;)
变量名是为了在内存中方便寻找。(例如内存4GB,一个int型变量为4B,要寻找其犹如大海捞针)
String属于引用类型,定义方式与基本类型相同。
1.6变量使用的注意事项
- 变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
- 变量是有作用域的,只在所定义的大括号内有效。
- 变量不能重复定义
1.7 数据类型转换(自动转换与强制转换)
不同类型的变量是否可以一起运算?回答是可以,但先需要进行类型转换再运算。
转换原则:
范围小的可以转为范围大的。
范围大的不能转为范围小的。
将各种数据类型按照数据范围从小到大排列:
byte -> short -> int -> long -> float -> double
自动转换:
例如:
double d = 1000; //将int型转为double
强制类型转换
将数据范围大的转为范围小的(会丢数据)
int i = (int)6.718; //i的值为6
byte a = (byte)210; //a为-46
第二章 运算符
2.1算数运算符
- 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
- 当“+”遇到字符串,起连接作用,将一个字符串和其他数据连接起来。
- 任何类型只要和字符串+, 所有的数据都变成了字符串。
System.out.println("5+5="+5+5); // + 遇到字符串,变成连接符号,输出结果为:5+5=55
2.2 算数运算符++、--的使用
- ++运算符,会在原有值的基础上自增1;
- --运算符,会在原有值的基础上自减1。
- ++a与a++有区别,++a是先加再运算,a++是先运算后加。
int a = 3;
int b;
b = a++ + 10;
System.out.println(a);
System.out.println(b); //输出a为4,b为13
2.3 赋值运算符
j+=6是一步操作,j=j+6是两步操作(先加再赋值),优先使用+=
// += 赋值运算符
int j = 5;
j+=6; // 与j=j+6同,但j+=6是一步操作,j=j+6是两步操作(先加再赋值)
System.out.println(j);
byte b = 1;
/*如果不强行转换会报错,因为常量1默认为4字节的int类型,而b为1字节的byte类型,计算时将byte自动转换为int,其计算结果也是int类型,但无法将int类型的数据存至byte类型的b变量中 */
b = (byte)(b + 1);
System.out.println(b);
byte x = 10;
x += 20;// 相当于 x = (byte)(x+20);
2.4比较运算符(关系运算符)
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
- 赋值运算符的 = 符号,是用来将 = 符号右边的值,赋值给 = 符号左边的变量;
- 比较运算符的 == 符号,是用来判断 == 符号 左右变量的值是否相等的。
2.5 逻辑运算符
- & : 一边是false,运算结果就是false, 见了false,就是false
- | : 一边是true,运算结果就是true,见了true,就是true
- ^ : 两边相同为false,不同为true
- ! : 取反 !true = false !false=true
- && : 短路与 , 一边是false,另一边不运行,从左往右运行
- || : 短路或 , 一边是true,另一边不运行,从左往右运行
- 当使用“ &&或 ||” 时,只要能判断出结果则后边的部分就不再判断。则&&比&的运算效率高。
int i = 3;
int j = 4;
System.out.println(3>4 && ++j>2);
System.out.println(j); //输出结果j为4,因为3>4为false则后面的不执行
2.6三元运算符
(条件表达式)?表达式1:表达式2;
若条件表达式成立,则运行表达式1,否则运行表达式2。