文章目录
变量
命名规范
硬性 必须遵守的条件
- 使用 数字 字母 $ _ 四类组成
- 数字不能开头
- 区分大小写
- 不能和关键字重名
软性 可以遵守也可以不遵守,但是最好遵守
- 望文知义 变量命名 要根据变量所表示的含义来命名
- 使用驼峰命名法 一个变量有多个单词组成, 从第二个单词开始,首字母大写 dataSource
数据类型
8大 基本数据类型
- 整数
- byte (字节 )
- short (短整数)
- int (整数)
- long (长整数)
- 小数 浮点数
- float 单精度
- double 双精度
- 非数值
- char 字符
- boolean 能够存储 真或假 (布尔类型)
二进制
计算机保存 信息 , 智能识别 1 , 0 (表示晶体管 开或关)
一组0或者 1 组成的的数字 就是二进制
对比 10进制 0 -9
通过进行二进制运算
1 | 2^0 | 1 |
---|---|---|
2 | 2^1 | 10 |
4 | 2^2 | 100 |
8 | 2^3 | 1000 |
111011 换算成10进制 (32+ 16 + 8 + 2 +1) = 59
43 换算成 2 进制 101011
位 一个二进制 就是一个位 只能表示 0 或 1
一个 字节 等于 8 个位 , 字节是计算机存储数据的最小单位
一个字节 8 个位 能够保存的最大数据? (第一位可以描述为符号位, 不参与数值计算)
byte 一个字节 1(符号位) 1111111 最大表示 127 最小 -128
short 两个字节 (符号位) 15位 数字位 -2^15 到 +2^15-1 (-32768到+32767)
int 四个字节 (符号位) 31位 数字位 -2^31 到 + 2^31-1
赋值案例
int a = 10; 描述为 系统先创建10 , 然后 把10 赋值给创建好得 a 变量
float f = 3.14; ( 报错 原因) 系统先创建 3.14 赋值给 float 类型的 f
= 赋值号 从右向左给变量赋值 系统先创建的是 3.14 ,
细节 : 系统默认创建整数 是使用int
系统默认创建小数, 使用double
float g = 1.2F; // 系统创建默认类型的时候 使用float 来创建1.2
long m = 100L;
double n = 3.14D;
常量
final 修饰 一旦被赋值 不能被改变
变量命名规范
-
全大写
-
多个单词使用 下划线连接
键盘录入
java 给我们提供了一个 工具 Scanner , 工具具有接收用户键盘录入数据的功能
请一个人来帮忙
1, 找到这个人所属的公司
2, 公司 派遣 该员工 过来帮忙
3, 该员工需要使用自己的专业技能来服务
Scanner
- 导入Scanner类 import java.util.Scanner;
- 创建该类对象 Scanner input = new Scanner(System.in);
- 调用该类的方法 input.nextInt();
package data0626;
import java.util.Scanner;
public class Demo2 {
public static void main(String [] args){
// 使用 Scanner
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int num1 = input.nextInt(); // 接收用户键盘录入的一个数字
System.out.println("请输入第二个数据:");
int num2 = input.nextInt(); // 接收用户键盘录入的一个数字
// 执行打印结果
System.out.println(num1 +"+"+ num2 +"="+ (num1 + num2));
// num1 + num2 = (num1 + num2)
}
}
类型转换
自动类型转换
自动类型提升
- 数据兼容性
- 从小容器 转向大容器 可以实现自动类型提升
强制类型转换
从大容器 转向小容器 有可能产生数据溢出
我们程序员能够确认 数据转存没有问题(一定不会发生数据溢出) 强制转换类型
语法格式
小类型 = (小类型)大类型;
细节问题
- 小数转整数 , 舍去小数位
- 两个 int 类型的数据 做运算 结果还是 int
- 两个int 类型的数据, 做运算, 如果超出int的数据范围 结果也是似是而非的
运算符
赋值号 = 从右向左运算
交换两个数值
算术运算符
- 加减乘除
- 取余 (取模) %
- += -= /= %=
- ++ – (自增/自减)
b = b + 1;
b += 1;
b++;
// ++a 在前 先运算 后赋值
// a++ 在后 先赋值 后运算
b = ++a;
a = a + 1;
b = a;
b = a++;
b = a;
a = a + 1;
- 案例
使用键盘录入 四位数 使用 / 和 % 分别获取每个位上的数字, 求和
Scanner input = new Scanner(System.in);
System.out.println("请输入 4 位会员编号:");
int no = input.nextInt(); // 9527
// 把 四位数 分解成 9527 / 952 / 95 / 9
int ge = no % 10;
int shi = no/10 % 10;
int bai = no/100 % 10;
int qian = no/1000;
System.out.println(ge + shi + bai + qian);
关系运算符 (比较)
- ==
- !=
- < > <= >=
只支持数值 判断
逻辑运算符
& (与and) 两个条件同时满足 才是正确的
| (或) 两个条件满足任意一个 就是正确的
! (非) 取反
^ (异或) 两个一样 是不正确的 (两个不一样则正确)
&& 短路与
如果说根据第一个条件就能够判断出来 整体的结果 , 可以不进行下一步判断
|| 短路或
验证 短路运算
int a = 1;
if(false & a++ >0){
System.out.println("success");
}else{
System.out.println("fail");
}
System.out.println(a);
位运算符
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移
>> 右移
>>> 无符号右移
<<1 原数* 2
>>1 原数/2
位运算 是 做*2 /2 最有效率的运算
条件运算符
三元运算符 / 三目运算符
运算符 | |
---|---|
单目运算符/ 一元运算符 | 运算所需变量为一个 / 运算当中只有一个操作数 a++ / !boolean |
双目运算符 | 运算所需变量为两个的运算符叫做双目运算符 |
三目运算符 | 运算所需变量为三个的运算符 |
语法格式
条件 ? 表达式1 : 表达式2 // 如果条件满足 选择1 否则选择2
- 案例
// 输入一个学生的成绩, 如果成绩高于 60 分 ,打印及格,否则,打印不及格
String result;
result = score >= 60 ? "及格" : "不及格";
// 输入两个数 , 输出其中的最大值
int no3 = no1 > no2 ? no1 : no2;
/* if(no1 > no2){
// 如果条件满足 说明 no1 是最大值
no3 = no1;
}else{
no3 = no2;
}*/
// 使用三元表达式做题 使用键盘;录入三个数 输出最大值
// 三个人 比赛, 决出胜负 A B C
int max ; // 最大值 放在 max 中
max = no1 > no2 ? no1 : no2;
max = max > no3 ? max : no3;
优先级问题
- () 优先级最高 = 赋值号优先级最低
- 单目运算符 优先级仅小于括号 (! ~ ++ --)
- 算术运算符 > 关系运算符 > 逻辑运算符
案例
题目1
工资 = 基本工资 + 物价津贴 + 房租津贴
int baseSalary ;
int money1 = baseSalary * 0.4;
int money2 = baseSalary * 0.25;