疯狂Java基础Day2
巩固Java流程控制的学习。。。
一、用户交互Scanner
通过Scanner类获取用户的输入
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner sc = new Scanner(System.in); //hello world
System.out.println("使用next方式接收:");
//判断用户有没有字符串输入
if (sc.hasNext()){
//用next方式接收
String s = sc.next(); //hello
System.out.println("输出内容为:"+s);
}
sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
}
}
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
//创建一个扫描对象,用于接收键盘数据
Scanner sc = new Scanner(System.in); //hello world
System.out.println("使用nextLine方式接收:");
//判断用户有没有字符串输入
if (sc.hasNext()){
//用next方式接收
String s = sc.nextLine(); //hello world
System.out.println("输出内容为:"+s);
}
sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
}
}
对于next()和nextLine():后者更常用
- next()
- 一定要读到有效字符串后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为结束符
- next()不能得到带有空格的字符串
- nextLine()
- 返回输入回车之前的所有字符
- 可以得到空白
小案例:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果。
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//和
double sum = 0.0;
//计算输入了多少个数字
int n = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
n++;
sum = sum+x;
}
System.out.println(n+"个数的和为:"+sum);
System.out.println(n+"个数的平均值为:"+(sum/n));
scanner.close();
}
}
二、顺序结构
按顺序一句一句执行,自上而下
三、选择结构
1、if单选择结构
if(布尔表达式) {
//如果布尔表达式为true将执行的语句
}
2、if双选择结构
if(布尔表达式) {
//如果布尔表达式为true将执行的语句
}else {
//如果布尔表达式为false将执行的语句
}
3、if多选择结构
if(布尔表达式 1) {
//如果布尔表达式 1的值为true将执行的语句
}else if(布尔表达式 2) {
//如果布尔表达式 2的值为false将执行的语句
}else if(布尔表达式 3) {
//如果布尔表达式 3的值为false将执行的语句
}else {
//如果以上布尔表达式都不为true将执行的语句
}
4、if嵌套结构
if(布尔表达式 1) {
//如果布尔表达式 1的值为true执行的语句
if(布尔表达式 2) {
//如果布尔表达式 2的值为true执行的语句
}
}
5、switch选择结构
switch(expression) {
case value:
//语句
break; //可选
case value:
//语句
break; //可选
//任意数量case语句
default: //可选
//语句
}
case具有穿透能力,switch的优势在于:可以匹配一个具体的值
//理解case的穿透力
public class Demo5 {
public static void main(String[] args) {
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("满分");
case 'B':
System.out.println("优秀");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("不及格");
default:
System.out.println("未知");
}
}
}
//及格
//不及格
//未知
通过输出结果发现,case后的结果全部输出,为了避免该种现象,我们只需加上break
注意:jdk7后,switch支持字符串String类型
public class SwitchDemo {
public static void main(String[] args) {
//须知:字符的本质还是数字
//反编译即可发现
String fruit = "大西瓜";
switch (fruit) {
case "大西瓜":
System.out.println("大西瓜");
break;
case "草莓":
System.out.println("草莓");
break;
case "菠萝":
System.out.println("菠萝");
break;
default:
System.out.println("哈密瓜");
}
}
}
反编译一下:

四、循环结构
1、while循环
while(布尔表达式) {
//循环内容
}
大多数情况下需要一个表达式失效的方式来结束循环
2、dowhile循环
do {
//代码语句
}while(布尔表达式)
while和do...while的区别
- do...while循环至少会执行一次
- while先判断后执行,do...while先执行后判断
3、for循环
for(初始化;布尔表达式;更新) {
//代码语句
}
最有效、最灵活的循环结构!
关于计算1+2+...+100=?的不同解法:
public class WhileDemo {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i<=100) {
sum = sum+i;
i++;
}
System.out.println(sum);
}
}
public class DoWhileDemo {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum+i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
public class ForDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum = sum+i;
}
System.out.println(sum);
}
}
4、增强for循环
for(声明语句:表达式) {
//代码语句
}
遍历用法:
public class EnhanceFor {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
//普通for
for (int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
System.out.println("=====================");
//增强for
for (int x:arr
) {
System.out.println(x);
}
}
}
5、break与continue
break用于强行退出循环
continue用于终止某次循环
疯狂Java基础Day2的更多相关文章
- java基础-day2
第02天 java基础知识 今日内容介绍 u Eclipse的安装.配置及使用 u 运算符 u 键盘录入 第1章 Eclipse开发工具 1.1 Eclipse概述和安装 Eclipse是一个I ...
- 疯狂Java基础Day1
--每过一遍基础,都是一次提升! 太多遗忘了,慢慢补... 推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕) 推荐原因:讲的不错,会涉及到底层,也会讲讲面试. 一.注释 主要 ...
- java基础day2
Java标识符命名规则: 标识符由字母,下划线“_”.美元符号$或数字组成/ 不能以数字开头 区分大小写 不能是关键字 “ 见名知意” 约定俗成的规则 类名:首字母大写变量名:除第一个单词外小写,其他 ...
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- Java基础进阶整理
Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- 《疯狂java讲义》笔记 1-5章
1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...
- 《疯狂java讲义》读后感
<疯狂java讲义·第三版>,全书共851页,18章. 目录如下: 第1章 Java语言概述与开发环境 第2章 理解面向对象 第3章 数据类型和运算符 第4章 流程控制与数组 第5章 面向 ...
- 如何学习java?Java基础知识点分享
面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...
随机推荐
- MySQL高级语句(二)
目录: 1.别名 2.子查询 3.EXISTS 4.连接查询 5.CREATE VIEW 视图 6.UNION 联集 7.交集值 8.无交集值 9.CASE 10.算排名 11.算中位数 12.算累积 ...
- Python国内镜像源及报错解决方法
国内镜像源: 阿里云:https://mirrors.aliyun.com/pypi/simple/ 清华:https://pypi.tuna.tsinghua.edu.cn/simple/ 中国科技 ...
- servlet请求转发于重定向
请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用非常广泛. 一. 请求的转发 Servlet接收到浏览器端请求后,进行一定的处理,先不进行响应,而是在服务器端内部" ...
- PTA 面向对象程序设计 6-2 逆序字符串
6-2 逆序字符串 设计一个void类型的函数reverse_string,其功能是将一个给定的字符串逆序.例如,给定字符串为"hello",逆序后为"olleh&quo ...
- Spring Native实战(畅快体验79毫秒启动springboot应用)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Java面向对象系列(8)- Super详解
场景一 场景二 场景三 场景四 注意:调用父类的构造器,super()必须在子类构造器的第一行 场景五 场景六 super注意点 super调用父类得构造方法(即构造器),必须在构造方法得第一个 su ...
- css颜色字符串转换, 字符串转化为驼峰形式
* 将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff1. rgb 中每个 , 后面的空格数量不固定2. 十六进制表达式使用六位小写字母3. 如 ...
- PHP - 设计模式 - 观察者模式
<?php//观察者模式//抽象通知者abstract class Subject { protected $observer = array() ; //添加观察者 public abstra ...
- english note [6.3to6.9]
6.3 http://www.51voa.com/VOA_Special_English/pakistan-town-struggles-with-rise-in-hiv-infections-821 ...
- k8s负载资源StatefulSet工作解析
在k8s中工作负载资源StatefulSet用于管理有状态应用. 什么是无状态? 组成一个应用的pod是对等的,它们之前没有关联和依赖关系,不依赖外部存储. 即我们上篇小作文中deployment创建 ...