第二章:变量和数据类型
1、变量
定义:一个数据存储空间的表示
语法:
数据类型 变量名;
变量名 = 变量值;
或者
数据类型 变量名 = 变量值;
注:
命名规则:首字母:字母(26个字母,大写小写)、下划线、$符号,不能数字开头
其余部分:字母,数字,下划线,和 $ 符号,不能为其它符号
重要的规则为:
驼峰命名法:第一个单词首字母小写,其它部分单词首字母大写
注意:第一个单词最好不要是只有一个小写字母,变量的命名要通俗易懂
类名:首字母按照规范,首字母大写,也参照驼峰命名法
变量的声明,不能重名,而且不能跟java中的"关键字"一致
2、数据类型(8种):
字节:byte(一个字节8位)
字符:char(2个字节16位)
短整形:short(2字节16位)
整形:int(4字节32位)
浮点型:float(4个字节32位)
浮点型:double(8个字节64位)
长整型:long(8个字节64位)
布尔类型:boolean (只能是true和false)
注意:String不是基本数据类型,它是一个类(java.lang.String)
3、+
代表字符串连接(当进行数值计算时候,也代表加法)
4、=
java中的赋值符号,不是判断两个值是否相等,是将等号右边的值赋给左边的变量
注意:
变量使用前,必须给定义的变量初始化(赋值),否则编译错误。
5、常量的定义:
语法:
final 数类型 变量名 = 变量值;
注意:
1)常量名通常大写
2)不同分词使用下划线分隔
3)只能被赋值一次,通常定义时即对其初始化
示例:
// 定义一个常量
final double MATH_PI = 3.14;
6、Scanner:
作用:接收用户输入(键盘输入)
写法:
// 创建Scanner对象
Scanner input = new Scanner(System.in);
注意:
要引入Scanner类--import java.util.Scanner;
获取数据:
输入的字符串:input.next(); // nextLine()
输入的数字:input.nextInt();
输入的浮点型:input.nextDouble();
7、类型自动转换:
低精度向高精度会自动转换
规则:
规则1:如果一个操作数为double型,则整个表达式可提升为double型
规则2:满足自动类型转换的条件
两种类型要兼容
数值类型(整型和浮点型)互相兼容
目标类型大于源类型:
例如:double 型大于 int 型
8、类型强制转换:
高精度向低精度需要强转,只保留整数位,精度自动舍弃
注意:强转写法 -- 小括号括起来
9、赋值运算符:
语法:变量名 = 表达式;
表达式:表达式就是符号(如加号、减号)与操作数(如b,3等)的组合
例如:int sum = num1 + num2;
注意:赋值运算符的优先级是最低的
10、算数运算符:
加+ 减- 乘* 除/ 求余%
+ : 加 int add = 5+2; // 7
- : 减 int sub = 5-2; // 3
* : 乘 int min = 5*2; // 10
/ : 除 int chu = 5/2; // 2
% : 求余 int mod = 5%2; // 1
加加++ 减减--
写变量前:先变量值加减,后使用变量值
写变量后:先使用变量值,后变量值加减
复合运算符:
+= -= *= /= %=
例如:num += 2; --> num = num + 2;
注意:是单个运算符,当类型不匹配不能转换等价
示例:
short a = 4;
a += 5; // 编译通过
a = a + 4; // 编译不通过,类型不匹配
11、关系运算符:
== 等于 判断是否相等
!= 不等于 判断不相等
> 大于 判断大于
< 小于 判断小于
>= 大于等于 判断大于等于
<= 小于等于 判断小于等于
注意:> < >= <= 只适用于数值类型判断
12、逻辑运算符:
短路与:&& 两边表达式都为true,结果才为true,第一个表达式为false,不看第二个表达式
短路或:|| 两边表达式都为false,结果才为false,第一个表达式为true,不看第二个表达式
非:! 取反
示例:
int a1 = 8;
int b1 = 9;
System.out.println((++a1 == b1) && (++a1 != b1)); // true
System.out.println(a1); // 10
int a2 = 8;
int b2 = 9;
System.out.println((++a2 == b2) || (++a2 != b2)); // true
System.out.println(a2); // 9
13、三元运算符
语法:条件表达式 ? 表达式1 :表达式2;
条件表达式为true,结果为表达式1的值,否则为表达式2的值
表达式1或者2的类型必须跟定义变量类型一致
14、运算符优先级
1)优先级别最低的是赋值运算符
2)可以通过()控制表达式的运算顺序,()优先级最高
3)算术运算符 > 关系运算符 > 逻辑运算符
灵活用法:当不确定优先级的时候,优先选择使用小括号()
15、扩展
// 位运算 & 11为1 | 00为0 ^ 同为0异为1
// 先转为二进制,然后按位运算
int x = 2;
int y = 3;
System.out.println(x & y); // 2
System.out.println(x | y); // 3
System.out.println(x ^ y); // 1
// 十进制转二进制口诀:除二取余,然后倒序排列,高位补零