共计 6303 个字符,预计需要花费 16 分钟才能阅读完成。
day02 总结笔记
01- 标识符
-
介绍 : 本人给 类, 办法, 变量 等等起名字的符号
- 简略记 : 本人起的名字
-
标识符的命名规定 :
- 数字 0~9
- 字符 a-z A-Z
- _ $
- 不能是关键字
- 不能以数字结尾
- 严格辨别大小写
- 标识符命名标准 :
小驼峰命名法: (变量)
如果是一个单词, 所有字母小写 ---> age max
如果是多个单词, 从第二个单词开始首字母大写 --> maxAge tempMax
大驼峰命名法: (类)
如果是一个单词, 首字母大写 ---> Student
如果是多个单词, 每个单词首字母大写 ---> OperatorDemo ScannerDemo
02- 数据类型
- 根本数据类型
整数:
byte 1 个字节 -128~127
short 2 个字节
int 4 个字节
long 8 个字节
小数:
float 4 个字节
double 8 个字节
字符:
char 2 个字节
布尔:
boolean 1 个字节
- 今后定义变量的应用思路
1. 如果定义整数类型变量, 首选 int, 发现 int 装不下了, 换成 long (退出 L 的标识)
2. 如果定义小数类型变量, 首选 double, 非要定义 float 类型变量, 须要退出 F 标识
- 补充细节 :
所有整数, 默认都是 int 类型
System.out.println(10);
所有小数, 默认都是 double 类型
System.out.println(12.3);
char 类型的取值范畴 : 0~65535
问题: 为什么是数值范畴
答复: 每一个字符, 底层都有一份数值的标识模式
- 援用数据类型
String 字符串
03- 键盘录入
- 成果 : 让程序中应用的数据, 更加灵便
- 步骤 :
1. 找符咒
- import java.util.Scanner;
- 地位: class 的下面
- 作用: 可能从代码仓库中, 找到 java 曾经写好的 Scanner.
2. 号召精灵
- Scanner sc = new Scanner(System.in);
- sc : 变量名, 能够扭转, 其余的都不容许扭转
- 作用: 号召精灵, 能够指挥它做键盘录入
3. 指挥精灵干活
- int age = sc.nextInt(); // 键盘录入整数
- String name = sc.next(); // 键盘录入字符串
04- 算数运算符
+
-
*
---------------------------------------
/ : 整数相除, 后果只能失去整数, 想要失去带有小数的后果, 须要有小数参加运算
% : 取模, 失去除法之后剩下的余数
自增自减运算符 :
++ : 让变量本身的值 + 1
-- : 让变量本身的值 - 1
留神: 只能操作变量, 不能操作常量.
---------------------------------------------------------
1. 独自应用(举荐)
一句代码当中, 只做 ++ 或者是 --
++, -- 放在变量的后面和前面, 没有区别的
int a = 10;
a++;
++a;
2. 参加运算应用(面试)
++ 在前: 先自增, 再运算
int a = 10;
int b = ++a; // a = 11, b = 11
++ 在后: 先运算, 再自增
会将该变量本来的值, 提取进去, 做操作, 而后再自增
int a = 10;
int b = a++; // b = 10, a = 11
package com.itheima.test;
public class OperatorTest2 {
/*
需要: 看程序说后果
*/
public static void main(String[] args) {
int x = 10;
int y = x++;
int z = --y;
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("z=" + z);
System.out.println("---------------------");
int a = 3;
int b = (++a) + (a++) + (a * 10);
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}
05- 字符串拼接操作
- 当 + 号操作过程中, 遇到了字符串, + 号就是字符串连接符, 而不是算数运算符了
System.out.println("5+5=" + 5 + 5); // "5+5=55"
System.out.println("5+5=" + (5 + 5)); // "5+5=10"
package com.itheima.test;
import java.util.Scanner;
public class OperatorTest1 {
/*
需要:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
整数 123 的个位为:3
整数 123 的十位为:2
整数 123 的百位为:1
剖析:
1. 应用 Scanner 键盘录入一个整数
2. 数值拆分
个位: 数值 % 10
十位: 数值 / 10 % 10
百位: 数值 / 10 / 10 % 10;
千位: 数值 / 10 / 10 / 10 % 10;
万位: 数值 / 10 / 10 / 10 / 10 % 10;
...
------------------------------
对于最高位(最左侧) : 优化
123 / 100 ====> 1
4567 / 1000 ====> 4
33445 / 10000 ====> 3
3. 将拆分后的后果, 打印在控制台
*/
public static void main(String[] args) {
// 1. 应用 Scanner 键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输出一个三位数:");
int num = sc.nextInt();
// 2. 数值拆分
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 10 / 10 % 10;
// int bai = num / 100;
// 3. 将拆分后的后果, 打印在控制台
System.out.println("整数" + num + "的个位为:" + ge);
System.out.println("整数" + num + "的十位为:" + shi);
System.out.println("整数" + num + "的百位为:" + bai);
}
}
06- 类型转换 - 隐式转换
-
介绍 : 将取值范畴小的数据或变量, 给取值范畴大的变量赋值, 能够间接赋值
- 简略记 : 小的给大的, 能够间接给
-
数据取值范畴 : byte short int long float double
- 尽管 float 占用 4 个字节, 然而取值范畴要比 8 个字节的 long 更大.
int a = 10;
double b = a;
System.out.println(b); // 10.0
-
在运算过程中的隐式转换
- 取值范畴小的数据, 和取值范畴大的数据, 在一起运算, 小的会将本人先晋升为大的, 而后再算.
- byte short char 在运算的时候, 会间接晋升为 int 类型
07- 类型转换 - 强制转换
-
介绍 : 将取值范畴大的变量或数据, 给取值范畴小的变量赋值, 不容许间接赋值, 须要强转
- 简略记 : 大的给小的, 不容许间接给, 须要强转
int num = (int)12.3;
- 留神 : 今后尽量减少强转的应用, [有可能]会精度损失
int num = (int)12.3;
System.out.println(num); // 12 产生了精度损失
int a = 10;
byte b = (byte)a;
System.out.println(b); // 10 没有精度损失
- 类型转换面试题 :
package com.itheima.test;
public class OperatorTest3 {
/*
byte a = 3;
byte b = 4;
byte c = a + b;
问题: 以上代码是否存在问题, 如果有, 请阐明起因, 并改过.
起因: a,b 是两个 byte 类型, 在一起运算的时候, 会间接晋升为 int 类型
晋升之后, 就是两个 int 相加了, 相加的后果还是 int, 将 int 类型的后果, 赋值给 byte 类型变量.
这属于大给小, 须要强转.
解决: byte c = (byte)(a + b);
--------------------------------------------------------------
byte result = 3 + 4;
问题: 以上代码是否存在问题, 如果有, 请阐明起因, 并改过.
纳闷: 3 和 4 是两个整数常量, 所有整数默认是 int, 两个 int 相加的后果, 相加的后果还是 int, 将 int 类型的后果, 赋值给 byte 类型变量.
这属于大给小, 须要强转.
起因: Java 存在常量优化机制, 在编译的时候(javac) 主动将 3 和 4 进行相加
.class(字节码) : byte b = 7;
并且会主动进行查看, 查看运算后果, 是否在 byte 的取值范畴之内
*/
public static void main(String[] args) {byte result = 3 + 4;}
}
08- 赋值运算符
1. 根本赋值运算符
= : 将等号右侧的数据, 赋值给左侧的变量
int a = 10;
2. 扩大赋值运算符
+= : 将符号左右两边数据, 做加法运算, 将后果赋值给左侧的变量
-= : 将符号左右两边数据, 做减法运算, 将后果赋值给左侧的变量
*=
/=
%=
留神: 扩大赋值运算符, 自带强转成果
int a = 10;
double b = 12.3;
a += b; // a = (int)(10 + 12.3);
System.out.println(a); // 22
--------------------------------------
int c = 10;
double d = 33.3;
d += c; // d = 10 + 33.3;
Sysetm.out.println(d); // 43.3
09- 关系运算符(比拟运算符)
>
>=
<
<=
==
!=
论断: 关系运算符, 失去的后果, 只能是 boolean 类型的 true, false
= : 赋值操作
== : 比拟操作
10- 逻辑运算符
-
介绍 :
- 代码层面 : 是用于连贯 boolean 类型的表达式或者是值
- 了解层面 : 能够整合多个判断条件, 为一段整体的逻辑
if(score >= 90 && score <= 100) {}
- 分类 :
&(与) : 并且, 遇 false 则 false
|(或) : 或者, 遇 true 则 true
!(非) : 取反
---------------------------------------------
^ (异或) : 雷同为 false, 不同为 true
11- 短路逻辑运算符
& : 没有短路成果, 无论符号右边是 true, false, 左边都要继续执行
&& : 具备短路成果, 符号右边为 false, 左边就不执行了.
如果符号右边为 true, 左边还要继续执行
| : 没有短路成果, 无论符号右边是 true, false, 左边都要继续执行
|| : 具备短路成果, 符号右边为 true, 左边就不执行了.
如果符号右边为 false, 左边还要继续执行
今后罕用的逻辑运算符 :
&& || !
12- 三元运算符
- 介绍 : 三目运算符 , 能够依据一个判断条件, 达成二者选其一
- 需要 : 求两个整数最大值
- 格局 : 判断条件 ? 值 1 : 值 2;
-
执行流程 :
- 执行判断条件, 看其返回后果是 true, false
- true : 值 1 就是最终后果
- false : 值 2 就是最终后果
int max = a > b ? a : b;
13- 运算符优先级
- 熟练掌握 () 的应用, 优先级最高
- 常识 : && 的优先级, 大于 ||
14- 流程管制语句介绍
- 介绍 : 通过一些非凡的语句, 来控制程序的执行流程
-
分类 :
- 程序构造 : Java 程序默认执行流程
- 分支构造 : if, switch
- 循环构造 : for, while, do…while
15- 分支构造语句 -if
if 语句的格局 1:
if(判断条件){语句体;}
执行流程:
1. 执行 () 中的判断条件, 看其返回后果是 true, false
2. true : 执行 {} 中的语句体
3. false : 不执行 {} 中的语句体
注意事项:
1. if 语句 () 和 {} 之间不要写分号
2. if 语句 {} 中如果只有一条语句, {} 能够省略不写, 然而不倡议
3. if 语句 () 中, 无论简略还是简单, 只有是 boolean 类型的 true, false, 就合乎语法规定
if 语句的格局 2:
if(判断条件){语句体 1;}else{语句体 2;}
执行流程:
1. 执行判断条件, 看其返回的后果是 true, false
2. true : 执行语句体 1
3. false : 执行语句体 2
if 语句的格局 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
语句体 n +1;
需要: 键盘录入一个数值, 示意用户的身份 (1. 会员 2. 非会员 其余: 您的输出有误)
必把握案例 :
package com.itheima.test;
import java.util.Scanner;
public class OperatorTest5 {
/*
需要:键盘录入考试成绩,依据问题所在的区间,程序打印出不同的处分机制
95 ~ 100 : 自行车一辆
90 ~ 94 : 游乐场玩一次
89 ~ 89 : 变形金刚一个
80 分以下 : 挨揍
健壮性判断: 校验数据的合理性
*/
public static void main(String[] args) {
// 1. 键盘录入问题
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的问题:");
int score = sc.nextInt();
// 2. 多种判断条件, 应用 if...else...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("挨揍");
}
}
}
package com.itheima.test;
import java.util.Scanner;
public class OperatorTest6 {
/*
需要:键盘录入考试成绩,依据问题所在的区间,程序打印出不同的处分机制
95 ~ 100 : 自行车一辆
90 ~ 94 : 游乐场玩一次
89 ~ 89 : 变形金刚一个
80 分以下 : 挨揍
健壮性判断: 校验数据的合理性
*/
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 之间");
}
}
}
正文完