实训三的第一二周学习内容回顾
输出
System.out.println() //在控制台输出, 输出之后换行, 小括号可以没有内容, 作为换行符 System.out.print() //在控制台输出, 输出之后不换行, 小括号中必须有内容
转义符: \字符
控制台输出 \ 必须写成
\\
\n: 换行符
\t: 制表符: tab 4个空格
\"
: 输出一个双引号
注释
注释写的位置: 1) 类名 2) 方法上 3) 很复杂的逻辑代码上
java的注释:
// 单行注释
/* */ 多行注释
/** */ javaDoc注释: 文档注释, 多行
变量:
变量的要素:
-
变量名: 方便取数据
要求: 1) 使用的 数字,字母,下划线, 不能以数字开头
2) 不能使用java的关键字 比如: public class static void
3) 变量名/方法名/属性名 第一个字母小写(规范),遵循小驼峰命名法, 第一个单词的首字母小写. 后面每个单词的首字母大写 大驼峰命名法: 所有单词的首字母大写, 类名
4) 见名知意, 推荐使用英文单词
-
数据类型, 开辟的空间大小
-
基本数据类型 8种
-
数值类型(整数,浮点数) 6种
-
整数 4个
-
byte: 1个字节 B 1B = 8b(位) 二进制
-
-
浮点数 2个
-
-
字符类型 1
-
布尔类型 1
-
-
引用数据类型(类类型) 后面学习 String 字符串
-
变量使用步骤:
-
变量声明
-
变量赋值
-
变量使用
整型赋值的注意事项:
byte short int long
如果变量是 byte: 赋值的数字 ~128 - 127 之间, 可以直接赋值
byte b = 121;
但是如果数字超出该范围, 直接赋值报错
一句话: 整型类型赋值,数字超出类型的范围, 报错, 如果没有超出,不报错
浮点型:
float: 单精度浮点数
double: 双精度浮点数
小数的数据类型,默认是 double类型, double的优先级高于float,
float num = 1.2; 1.2 double类型, 相当于把double类型转换为float类型, 但是float类型比double低
相当于把高的转换为低的, 无法自动转换,报错
数据类型转换:
1) 由低转换为高 , java 自动转换
2) 由高转换到底: 无法自动转换, 需要手动强制进行转换: 数据类型(低) 变量名 = ()值(高的值);
2.Scanner 输入
使用步骤:
在类上导入 Scanner类, 位于java.util包: import java.util.Scanner;
String/System 不需要导包, 位于java.lang包, 程序自动加载java.lang下的类
创建Scanner Scanner input = new Scanner(System.in);
调用next相关的方法, 进行输入 input .nextInt() input.nextDouble()
nextInt() 输入一个整型
nextDouble() 输入一个double浮点数
nextBoolean() nextFloat()....
但是: 不能输入char 没有nextChar()
next() 输入字符串 nextLine() 输入字符串
细节:
输入字符串: next() nextLine()
next() 输入有效字符串, 不包含 空格,tab,回车, 遇到空格,tab,回车,都结束输入
但是空格,tab,回车内容 保存到缓存中
nextLine() 输入字符串,包含空格, 但是nextLine() 前面有其他next() nextInt() nextDouble()...
nextLine() 不起作用, 无法输入
解决方案: 1. nextLine() 放在所有的next方法之前
2. nextLine() 不在第一个位置: 使用nextLine() 再加一个nextLine()
3. 运算符
1.算术运算符: + - / * %
2.赋值运算符: =
3.比较运算符: > < >= <= == !=
4.逻辑运算符: &&(与) || (或) ! &(与) | (或)
5.++,-- 运算符
6.位运算: &(与) |(或) ^(异或)
1. 算术运算符
+
: 1) 数值类型 + 加法
2) 字符串与任意的类型 +, 表示拼接, 结果:字符串
/
: 1) 整数/整数 整除(结果取整)
2) 除数或者是被除数是浮点类型, 除法, 结果带小数
%
: 取余 5%2= 1
作用:
1) 判断是否整除
2) 得到某位的数值, 对某个数进行缩小归类
1.运算符
前减减: --变量: 先减1, 再赋值
后减减: 变量--: 先赋值,再减1
2. 赋值运算符
3. 比较运算符
4. 逻辑运算符
&&
短路与, 如果第一个表达式的结果为false, && 后面的表达式都不执行(类似电路的短路)
||
短路或: 如果第一个表达式的结果为true, || 后面的表达式都不执行(类似电路的短路)
!
非
&
与 没有短路
|
或 没有短路结果: boolean 类型
使用的场景: 条件,循环中, 连接多个比较表达式
5.三目运算符
语法: 条件(boolean的表达式)?值1:值2
如果条件为true: 返回值1, 如果条件为false, 返回值2
三目运算符可以嵌套:
条件1?值1:(条件2?值2:值3)
对if-else 某些场景的简化, if-else返回结果, 可以使用三目运算替换
6.位运算 二进制的位运算
&: 按位与 : 1:true 0:false 只要位上有一个为0, 结果:0 位上都为1, 结果: 1
|: 按位或: 只要位上有一个为1: 结果: 1 位上都是0: 结果: 0
!: 按位非 : 1 -取反-> 0 0-取反->1
^: 异或: 相同为0 , 不同为1 一个数异或某个数两次,等到自己
移位操作: 拓展
>>
右移
<<
:左移java: 十进制, 八进制, 十六进制:
int a = 123; //十进制数
int b = 0123; //八进制
int c = 0x123; //十六进制
分支语句
if 语句
switch 等值判断
循环
for循环
使用循环的步骤:
-
判断是否需要使用循环, 看问题中是否有重复做的事情
-
找循环条件
-
找循环要做的事情
难点: 把循环条件,循环要做的事情转换为代码
while 循环
do-while
数组
变量: 只能存储一个值
数组: 存储的一组相同数据类型的值, 存储个数: 由程序员在创建的数组的时候来指定,
缺点: 固定长度
也称为: 容器
数组要素:
1) 数组名
2) 数据类型
3) 元素
4) 下标: 获取指定位置的元素: 从0开始: 0 表示第一个元素, 1表示第二个元素....
0=<下标<数组长度
5) 数组的长度: 表示数组最大允许存多少个元素
使用数组: 一维数组
声明数组: 没有开辟空间
语法:
数据类型[] 数组名;
数据类型 数组名[];
开辟空间, 指定数组的长度 通过new关键字, 数组开辟空间是连续
数组名 = new 数据类型[长度];
注意:
> new 数组的方式: 除了开辟内存空间, 还会对数组中元素进行初始化(赋予初始值) > 初始值根据数据类型决定:int/byte/short/long: 初始值0
double/float: 初始值:0.0
char: \u000
boolean: false
String/类类型: null
往数组中存放元素: 通过下标
数组名[下标] = 值;
注意:
如果下标超出最大下标(数组的长度-1): 抛出一个数组越界的异常 ArrayIndexOutOfBoundsException: 5如果一个数组没有开辟空间, 不能存放数据, 编程出错
获取数组的元素,进行相关操作
通过下标: 数组名[下标]
如果下标超出最大下标(数组的长度-1): 抛出一个数组越界的异常 ArrayIndexOutOfBoundsException: 5
在实际开发中,可能使用循环遍历这个数组(把数组的元素一个一个拿出来), 最匹配:for
动态的获取数组的长度: 数组提供了一个属性:
> 数组名.length 获取该数组的长度可以把1,2,3(声明数组,开辟空间,存元素)合并成一行代码, 数组静态创建
数据类型[] 数组名 = new 数组类型[]{值1,值2,值3,...}
注意: new后面中括号不能写长度, jdk根据后面值的个数确定数组的长度
简写: 数据类型[] 数组名 ={值1,值2,...}