01-标识符
-
介绍 : 给类, 方法, 变量...起名字的符号
-
简单记 : 自己起的名字都是标识符
-
-
命名规则:
-
数字 0 ~ 9
-
字母 a ~ z A~Z
-
_ $
-
不能以数字开头
-
不能是Java中的关键字
-
严格区分大小写
-
-
命名规范 (江湖规矩) :
-
小驼峰命名法 : 变量
如果是一个单词, 所有字母小写 age name 如果是多个单词, 从第二个单词开始, 首字母大写 maxAge firstName
-
大驼峰命名法 : 类
如果是一个单词, 首字母大写 Student 如果是多个单词, 每个单词首字母大写 GoodStudent OperatorDemo ScannerTest
-
02-数据类型
-
基本数据类型
整数 : byte 1个字节 -128~127 short 2个字节 int 4个字节 long 8个字节 小数 : float 4个字节 double 8个字节 字符 : char 2个字节 布尔 : boolean 1个字节
使用选择 :
1. 整数类型 : 首先int, 发现int装不下了, 换成long类型, 定义long类型变量需要加入 L 标识 2. 小数类型 : 首选double, 非要用float类型, 需要加入F标识
细节 :
所有整数默认都是 int System.out.println(10); 所有小数默认都是 double System.out.println(12.3); char 类型的取值范围是 0 ~ 65535 在计算机中存储 'a' ---> 字节 ---> 二进制 ---> 01100001 ---> 97 结论: 字符在底层都有一份数值的表示形式 char c = 97; System.out.println(c); // a
-
引用数据类型
-
字符串 : String
-
public class DataTypeTest1 {
/*
需求: 请将自己的个人信息, 定义出变量, 并展示在控制台
(姓名, 年龄, 身高, 性别, 婚姻状况)
姓名 : 字符串 --> String
年龄 : 整数 --> int
身高 : 小数 --> double
性别 : 字符 --> char
婚姻状况 : 布尔 --> boolean
*/
public static void main(String[] args) {
// 数据类型 变量名 = 数据值;
String name = "张三";
int age = 23;
double height = 180.1;
char gender = '男';
boolean flag = false;
System.out.println(name);
System.out.println(age);
System.out.println(height);
System.out.println(gender);
System.out.println(flag);
}
}
03-Scanner键盘录入 (必掌握)
-
三个步骤
-
找符咒
-
召唤精灵
-
指挥精灵干活
-
1. 找符咒 代码: import java.util.Scanner; 位置: 必须写在class的上面 2. 召唤精灵 代码: Scanner sc = new Scanner(System.in); 涵义: 将符咒中的精灵召唤出来 位置: main方法里面 3. 指挥精灵干活 代码: int age = sc.nextInt(); 从键盘录入整数 String name = sc.next(); 从键盘录入字符串 ------------------------------------------------------ double height = sc.nextDouble(); 从键盘接收小数 boolean flag = sc.nextBoolean(); 从键盘接收布尔类型
04-算数运算符
-
分类
+ - * -------------------------------------- / : 整数相除, 结果只能得到整数, 如果想要带有小数的结果,需要有小数参与运算 % : 取模, 得到的是除法之后, 剩下的余数
import java.util.Scanner;
public class OperatorTest1 {
/*
需求: 键盘录入一个三位数, 将其拆分出个位, 十位, 百位, 打印在控制台
个位: 数值 % 10;
十位: 数值 / 10 % 10;
百位: 数值 / 10 / 10 % 10;
千位: 数值 / 10 / 10 / 10 % 10;
万位: 数值 / 10 / 10 / 10 / 10 % 10;
...
简化算法: 针对于数值的最高位, 可以做简化
123 / 100 ---> 1
4567 / 1000 ---> 4
45678 / 10000 ---> 4
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数: ");
int num = sc.nextInt();
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 100;
System.out.println("整数" + num + "的个位为:" + ge);
System.out.println("整数" + num + "的十位为:" + shi);
System.out.println("整数" + num + "的百位为:" + bai);
}
}
05-字符串拼接操作
-
当 + 号操作过程中, 遇到了双引号字符串, + 号就是字符串连接符, 而不是算数运算了
System.out.println("it" + 666); // it666 需求: 定义两个变量, 记录3和4, 要求控制台打印的结果是 3 + 4 = 7 int a = 3; int b = 4; System.out.println(a + "+" + b + "=" + (a + b));
06-自增自减运算符
-
符号 : ++ , --
++ : 让变量自身的值 +1 -- : 让变量自身的值 -1
-
使用
1. 单独使用 (推荐) int a = 10; a++; ++a; ++在前, 在后没有任何区别. 2. 参与运算使用 (面试喜欢问) ++在前 : 先自增, 再操作
int a = 10;
int b = ++a; // a = 11, b = 11
System.out.println(a); // 11
System.out.println(b); // 11
++在后 : 先操作, 再自增
int a = 10;
int b = a++; // b = 10, a = 11
System.out.println(a); // 11
System.out.println(b); // 10
public class OperatorTest2 {
/*
不用自己写, 看程序说结果
*/
public static void main(String[] args) {
int a = 10;
int b = ++a;
int c = b++;
System.out.println("a=" + a);
System.out.println("b=" + b);
System.out.println("c=" + c);
System.out.println("------------------------");
int x = 3;
int y = (++x) + (x++) + (x * 10);
System.out.println("x=" + x);
System.out.println("y=" + y);
}
}
-
注意事项 :
-
自增自减运算符, 只能操作变量, 不能操作常量
-
07-赋值运算符
-
基本赋值运算符
= : 将符号右边的数据, 赋值给左侧的变量 int a = 10;
-
扩展赋值运算符
+= : 将符号左右两边的数据, 做加法运算, 将结果赋值给左边 int a = 10; a += 20; System.out.pritnln(a); // 30 -= : *= : /= : %= :
-
注意事项 : 扩展赋值运算符, 自带强转效果
double a = 12.3;
int b = 10;
b += a;
System.out.println(b); // 22
08-关系运算符
-
小名 : 比较运算符
> < >= <= == !=
结论 : 让数据之间作比较, 返回true, false的结果
注意 : 不要把 = 号误写成 ==
09-逻辑运算符
-
代码层面 : 连接boolean类型的表达式或者是值
-
理解层面 : 整合多个条件, 为一段整体的逻辑
if(score >= 90 && score <= 100){ }
-
分类 :
&(与) : 并且, 遇false则false |(或) : 或者, 遇true则true !(非) : 取反 ^(异或) : 相同为false, 不同为true
10-短路逻辑运算符
& : 没有短路效果, 无论符号左边是true,false, 右边都要继续执行 && : 具有短路效果, 当符号左边为false的时候, 右边就不执行了 如果左边为true, 右边要继续执行 | : 没有短路效果, 无论符号左边是true,false, 右边都要继续执行 || : 具有短路效果, 当符号左边为true的时候, 右边不执行了 如果左边为false, 右边要继续执行 结论: 今后常用的逻辑运算符 && || !
11-三元运算符
三目运算符
效果 : 根据一个判断条件, 从两个数据值, 二者选其一
格式 : 判断条件 ? 值1 : 值2;
1. 执行判断条件, 看其返回结果是true, false 2. true : 值1就是最终结果 3. false : 值2就是最终结果 ------------------------------------------------------- int a = 10; int b = 20; int max = a > b ? a : b;
import java.util.Scanner;
public class OperatorTest3 {
/*
需求: 键盘录入3个整数, 求出最大值, 最小值, 中间值
按照从小到大的顺序, 依次打印
中间值 : num1 + num2 + num3 - max - min;
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入三个整数 :");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
// 1. 求三个整数的最大值
int tempMax = num1 > num2 ? num1 : num2;
int max = tempMax > num3 ? tempMax : num3;
// 2. 求三个整数的最小值
int tempMin = num1 < num2 ? num1 : num2;
int min = tempMin < num3 ? tempMin : num3;
// 3. 求中间值
int mid = num1 + num2 + num3 - max - min;
System.out.println("最小值为:" + min);
System.out.println("中间值为:" + mid);
System.out.println("最大值为:" + max);
}
}
12-运算符的优先级
-
熟练掌握 () 的使用
-
常识概念 : && 的优先级是 大于 ||
13-流程控制语句
-
介绍 : 通过一些语句, 来控制程序的执行流程
-
分类 :
-
顺序结构
-
Java 程序默认的执行流程, 没有特定的语法
-
-
分支结构
-
if
-
switch
-
-
循环结构
-
for
-
while
-
do...while
-
-
14-if语句
-
格式1 :
if (判断条件) { 语句体; } 执行流程 : 1. 执行判断条件, 看其返回结果是true,false 2. true : 执行 {} 中的语句体 3. false : 不执行 {} 中的语句体 注意事项 : 1. if语句 () 和 {} 之间不要写分号 2. if语句 {} 中, 如果只有一条语句, {} 可以省略不写, 不建议省略 3. if语句 () 中, 无论简单还是复杂, 只要是boolean类型的数据, 就符合语法要求
格式2 :
if (判断条件) { 语句体1; } else { 语句体2; } 执行流程: 1. 执行判断条件, 看其返回结果是true, false 2. true : 执行语句体1 3. false : 执行语句体2public class IfTest1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入您的密码:"); int password = sc.nextInt(); if (password == 111111) { System.out.println("密码正确"); } else { System.out.println("密码错误"); } } }
格式3 :
if (判断条件1) { 语句体1; } else if(判断条件2) { 语句体2; } else if(判断条件3) { 语句体3; } ... else { 语句体n+1; } 执行流程: 1. 执行判断条件1, 看其返回结果是true, false true : 执行语句体1, 然后结束掉整个的if语句 false : 执行第二步 2. 执行判断条件2, 看其返回结果是true, false true : 执行语句体2, 然后结束掉整个的if语句 false : ... 3. 如果所有的判断条件都不成立, 将会执行最后的else
import java.util.Scanner;
public class IfTest2 {
/*
需求:键盘录入考试成绩,根据成绩所在的区间,程序打印出不同的奖励机制
95 ~ 100 : 自行车一辆
90 ~ 94 : 游乐场玩一次
80 ~ 89 : 变形金刚一个
80 以下 : 挨揍
健壮性判断 : 考虑到一些边界值
*/
public static void main(String[] args) {
// 1. 键盘录入学生成绩
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的成绩:");
int score = sc.nextInt();
// 2. 加入if判断, 看成绩在哪一段范围
if (score < 0 || score > 100) {
System.out.println("您的成绩输入有误!");
} else if (score >= 95 && score <= 100) {
System.out.println("自行车一辆");
} else if (score >= 90 && score <= 94) {
System.out.println("游乐场玩一次");
} else if (score >= 80 && score <= 89) {
System.out.println("变形金刚一个");
} else {
System.out.println("挨揍");
}
}
}
import java.util.Scanner;
public class IfTest3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的成绩:");
int score = sc.nextInt();
if (score >= 0 && score <= 100) {
// 成绩是正确的
// 代码进入到这个大括号, 说明成绩肯定是0~100之间, 只需要关心, 给什么奖励即可
if (score >= 95 && score <= 100) {
System.out.println("自行车一辆");
} else if (score >= 90 && score <= 94) {
System.out.println("游乐场玩一次");
} else if (score >= 80 && score <= 89) {
System.out.println("变形金刚一个");
} else {
System.out.println("挨揍");
}
} else {
System.out.println("您的成绩输入有误, 请检查是否是0~100分之间");
}
}
}