1.用户交互Scanner
- 别忘记最后的scanner.close
每次写了Scanner scanner = new Scanner之后就写close,配套一起就不会忘记了!!!!
Scanner scanner = new Scanner(System.in);
//凡是属于io流的类如果不关闭会一直占用资源,要养成好习惯,用完就关掉
scanner.close();
字符串的输入输出
- next()方法不能得到带有空格的字符串。空格在最前面可以,在后面不行!!!
- 也可以选择不用判断语句
数字的输入输出
- Scanner的hasNextInt()、hasNextFloat()、nextInt()、nextFloat()方法
正确输出
错误输出
- 进入Scanner类(Ctrl+左击),进入代码,可以查看这个类的所有方法。也可以点击structure来查看。
- 例题:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
2.顺序结构(基本)
3.选择结构(重点)
(1)if选择结构(方便判断区间)(4种)
1)if单选择结构
- 例题:判断字符串是否相等(严格区分大小写)
2)if双选择结构
- 例题:考试分数大于60就是及格,小于60就是不及格
3)if多选择结构
- 只有一个满足,一个满足整个语句就结束了。可以有很多个else if
- 注意点:if 语句至多有一个 else 语句,else 语句在所有的 else if 语句之后。
if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
一旦其中一个else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
- 例题:成绩等级划分
4)嵌套的if结构
- 例如,我们需要寻找一个数,在1-100之间。可以嵌套选择,1-50和50-100,节省时间提高程序效率。
(2)switch多选择结构(匹配一个具体的值)
- switch :匹配一个具体的值
在执行case语句时会先匹配,匹配成功就执行当前case后的语句
case 穿透现象:然后根据是否有break语句才选择是否继续输出下面case中的语句。break相当于终止整个switch。
- case 穿透现象(这一般来说是不该出现的)
所以在每个case 语句后都要加上break
- break :相当于终止这个switch
若成绩为C,case C 没有 break,而 case D 有 break,所以会执行 C 和 D 的语句才结束
- 为保证结果理想,所以要在每个case 语句块后都加上 break。
- 找不到匹配的项 ,执行 default 语句块
2)支持 String字符串类型的比较
- 之前是八大基本类型的比较(上面的例子),JDK7 才有的新特性,表达式结果可以是字符串!!!
- 但字符的本质还是数字
反编译
java 文件编译之后变成 class 文件(字节码文件),人是看不懂的。要想看懂就得进行”反编译“,反编译成我们的 java 程序或者一些东西。反编译的工具有很多,eg:IDEA - 反编译去哪里看:IDEA窗口---->file----->Project Structure 或者快捷键Ctrl+Alt+Shift+S
这里就是执行的class文件
右键打开,是一对乱码,根本看不懂,所以需要反编译
反编译的操作:Ctrl + C 和 Ctrl + V 会出现不能创建文件的错误提示“cannot create class file”。正确做法是:右击项目包,选择打开文件夹,选择文件
复制过去后会发现图标有变化,01图标表示字节码文件,双击即可查看反编译后的文件
- hashCode:每一个对象都有一个hashCode,它是通过一些特定算法生成的。名字里的中文都有自己的哈希值,通过比较哈希值来确定匹配的
- hashcode可以理解为每个数据都被赋予一个身份证,然后就用这个身份证去找你要的数据
- 哈希是通过特点算法,给每一个“东西”一个唯一的值
(好像说是高级版本不显示hashCode,本机没有)
4.循环结构
(1)while 循环—>先判断后执行
- 正常循环(会终止的,会结束的)
- 死循环 while(true)
(在正常业务中应该尽量避免,否则会影响程序性能,会崩溃卡死)
少部分情况下需要一直执行
public static void main(String[] args) {
//无限循环(死循环)
//正常业务中,需要尽量避免死循环
while(true){
//eg:等待客户端连接
//eg:定时检查
}
}
- 例题:计算1~100求和
(2)do…while循环(至少执行一次)–>先执行后判断
- 即使不满足条件,至少执行一次
- 例题:计算1~100求和
- 对比while循环和do…while循环
(3)for循环(重点)
- IDEA 快捷键:
输入 100.for → 会自动生成 for (int i = 0; i < 100; i++) {}
关于for循环有以下几点说明
- 最先执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
for (; i < 100; i++){}
- 然后,检测布尔表达式的值,如果为 true,循环体被执行。如果为 false,循环终止,开始执行循环体后面的语句。
- 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
- 再次检测布尔表达式,循环执行上面的过程。
- 三个均可以为空,是一种死循环的写法
//死循环
for(; ; ){}
- 例题1:计算 0~100 之间的奇数和偶数的和
用while实现:
int sum1 = 0;
int sum2 = 0;
int a = 0;
while(a<=100){
if(a%2==0){
sum2+=a;
}else{
sum1+=a;
}
a++;
}
System.out.println(sum1);
System.out.println(sum2);
- 例题2:用 while 或 for 循环输出1~1000之间能被5整除的数,并且每行输出3个
print 和 println 的差别
- println:输出完会换行
- print:输出完不会换行(会在一行内无限输出)
用while实现:
int i = 0;
while(i<=1000){
if(i%5==0){
System.out.print(i+"\t");
}
if(i%15==0){
System.out.println();
}
i++;
}
- 例题3:打印九九乘法表(个人想法看代码注释,他教的步骤我是不理解)
- 我们先打印第一列,这个大家应该都会
- 我们把固定的1再用一个循环包起来
- 去掉重复项,j <= i
- 调整样式
在Java5中引入了一种主要用于数组的增强型for循环
5.break&continue
- break 在任何循环语句的主体部分,均可用 break 控制循环的流程。
- break 用于强行退出循环,不执行循环中剩余的语句。(break 语句也在 switch 语句中使用)。
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
break :强制退出整个循环,但没有终止程序
- 以循环中的break为例(switch的break可以回过头去看)
- 总之,break 用于强制退出语句块
continue :终止某次循环过程,即跳过循环体中尚未执行的语句,进行下一次循环的判定
goto(知道了解就好,代码完全不用掌握)→标签的使用
不建议使用